diff --git a/WelsonJS.Toolkit/EsentInterop/Api.cs b/WelsonJS.Toolkit/EsentInterop/Api.cs new file mode 100644 index 0000000..87165cb --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/Api.cs @@ -0,0 +1,3033 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- +// The Microsoft.Isam.Esent.Interop namespace will be developed with these principles: +// - Any program written with this Api should work with the ESENT.dll from either +// Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008 or +// Windows 7. +// - The Esent.Interop DLL should only require version 2.0 of the .NET Framework. +// - Full and complete documentation. Intellisense should be able to +// provide useful and extensive help. +// - Minimal editorialization. Whenever possible the Microsoft.Isam.Esent.Interop Jet* api will +// exactly match the ESENT Api. In particular the names of structs, types +// and functions will not be changed. Except for: +// - Cleaning up Api constants. Instead of providing the constants from +// esent.h they will be grouped into useful enumerations. This will +// eliminate a lot of common Api errors. +// - Provide helper methods/objects for common operations. These will be layered +// on top of the ESENT Api. +// - Minimize the interop overhead. +// Changes that will be made are: +// - Convert JET_coltyp etc. into real enumerations +// - Removing cbStruct from structures +// - Removing unused/reserved entries from structures +// - Working around ESENT bugs or variances in API behavior +// - Automatically using upgraded/downgraded functionality where possible +// - Removing common API confusion where possible (e.g. always setting the columnid +// in the JET_COLUMNDEF) +// - Throwing exceptions instead of returning errors +// The Api has four layers: +// - NativeMethods (internal): this is the P/Invoke interop layer. This layer deals +// with IntPtr and other basic types as opposed to the managed types +// such as JET_TABLEID. +// - JetApi (internal): this layer turns managed objects into +// objects which can be passed into the P/Invoke interop layer. +// Methods at this level return an error instead of throwing an exception. +// This layer is implemented as an object with an interface. This allows +// the actual implementation to be replaced at runtime, either for testing +// or to use a different DLL. +// - Api (public): this layer provides error-handling, turning errors +// returned by lower layers into exceptions and warnings. +// - Helper methods (public): this layer provides data conversion and +// iteration for common API activities. These methods do not start +// with 'Jet' but are implemented using the Jet methods. +// - Disposable objects (public): these disposable object automatically +// release esent resources (instances, sessions, tables and transactions). + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Collections.Generic; + using System.Diagnostics; + using System.Runtime.InteropServices; + using System.Security.Permissions; + using Microsoft.Isam.Esent.Interop.Implementation; + + /// + /// Managed versions of the ESENT Api. This class contains static methods corresponding + /// with the unmanaged ESENT Api. These methods throw exceptions when errors are returned. + /// + public static partial class Api + { + /// + /// Initializes static members of the Api class. + /// + static Api() + { + Api.Impl = new JetApi(); + } + + /// + /// Delegate for error handling code. + /// + /// The error that has been encountered. + internal delegate void ErrorHandler(JET_err error); + + /// + /// Gets or sets the ErrorHandler for all errors. This can + /// be used for logging or to throw an exception. + /// + internal static event ErrorHandler HandleError; + + /// + /// Gets or sets the IJetApi this is called for all functions. + /// + internal static IJetApi Impl { get; set; } + + #region Init/Term + + /// + /// Allocates a new instance of the database engine. + /// + /// Returns the new instance. + /// The name of the instance. Names must be unique. + public static void JetCreateInstance(out JET_INSTANCE instance, string name) + { + Api.Check(Impl.JetCreateInstance(out instance, name)); + } + + /// + /// Allocate a new instance of the database engine for use in a single + /// process, with a display name specified. + /// + /// Returns the newly create instance. + /// + /// Specifies a unique string identifier for the instance to be created. + /// This string must be unique within a given process hosting the + /// database engine. + /// + /// + /// A display name for the instance to be created. This will be used + /// in eventlog entries. + /// + /// Creation options. + public static void JetCreateInstance2(out JET_INSTANCE instance, string name, string displayName, CreateInstanceGrbit grbit) + { + Api.Check(Impl.JetCreateInstance2(out instance, name, displayName, grbit)); + } + + /// + /// 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. + /// + public static void JetInit(ref JET_INSTANCE instance) + { + Api.Check(Impl.JetInit(ref instance)); + } + + /// + /// 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. + /// + /// + /// Initialization options. + /// + /// + /// A warning code. + /// + public static JET_wrn JetInit2(ref JET_INSTANCE instance, InitGrbit grbit) + { + return Api.Check(Impl.JetInit2(ref instance, grbit)); + } + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + /// + /// Retrieves information about the instances that are running. + /// + /// + /// Returns the number of instances. + /// + /// + /// Returns an array of instance info objects, one for each running + /// instance. + /// + public static void JetGetInstanceInfo(out int numInstances, out JET_INSTANCE_INFO[] instances) + { + Api.Check(Impl.JetGetInstanceInfo(out numInstances, out instances)); + } + + /// + /// Prevents streaming backup-related activity from continuing on a + /// specific running instance, thus ending the streaming backup in + /// a predictable way. + /// + /// The instance to use. + public static void JetStopBackupInstance(JET_INSTANCE instance) + { + Api.Check(Impl.JetStopBackupInstance(instance)); + } + + /// + /// Prepares an instance for termination. + /// + /// The (running) instance to use. + public static void JetStopServiceInstance(JET_INSTANCE instance) + { + Api.Check(Impl.JetStopServiceInstance(instance)); + } +#endif // !MANAGEDESENT_ON_WSA + + /// + /// Terminate an instance that was created with or + /// . + /// + /// The instance to terminate. + public static void JetTerm(JET_INSTANCE instance) + { + Api.Check(Impl.JetTerm(instance)); + } + + /// + /// Terminate an instance that was created with or + /// . + /// + /// The instance to terminate. + /// Termination options. + public static void JetTerm2(JET_INSTANCE instance, TermGrbit grbit) + { + Api.Check(Impl.JetTerm2(instance, grbit)); + } + + /// + /// Sets database configuration options. + /// + /// + /// The instance to set the option on or + /// to set the option on all instances. + /// + /// The session to use. + /// The parameter to set. + /// The value of the parameter to set, if the parameter is an integer type. + /// The value of the parameter to set, if the parameter is a string type. + /// An ESENT warning code. + public static JET_wrn JetSetSystemParameter(JET_INSTANCE instance, JET_SESID sesid, JET_param paramid, int paramValue, string paramString) + { + return Api.Check(Impl.JetSetSystemParameter(instance, sesid, paramid, new IntPtr(paramValue), paramString)); + } + + /// + /// Sets database configuration options. + /// + /// + /// The instance to set the option on or + /// to set the option on all instances. + /// + /// The session to use. + /// The parameter to set. + /// The value of the parameter to set, if the parameter is a JET_CALLBACK. + /// The value of the parameter to set, if the parameter is a string type. + /// An ESENT warning code. + public static JET_wrn JetSetSystemParameter(JET_INSTANCE instance, JET_SESID sesid, JET_param paramid, JET_CALLBACK paramValue, string paramString) + { + return Api.Check(Impl.JetSetSystemParameter(instance, sesid, paramid, paramValue, paramString)); + } + + /// + /// Sets database configuration options. + /// + /// + /// The instance to set the option on or + /// to set the option on all instances. + /// + /// The session to use. + /// The parameter to set. + /// The value of the parameter to set, if the parameter is an integer type. + /// The value of the parameter to set, if the parameter is a string type. + /// An ESENT warning code. + public static JET_wrn JetSetSystemParameter( + JET_INSTANCE instance, + JET_SESID sesid, + JET_param paramid, + IntPtr paramValue, + string paramString) + { + return Api.Check(Impl.JetSetSystemParameter(instance, sesid, paramid, paramValue, paramString)); + } + + /// + /// Gets database configuration options. + /// + /// The instance to retrieve the options from. + /// The session to use. + /// The parameter to get. + /// Returns the value of the parameter, if the value is an integer. + /// Returns the value of the parameter, if the value is a string. + /// The maximum size of the parameter string. + /// An ESENT warning code. + /// + /// passes in the error number in the paramValue, which is why it is + /// a ref parameter and not an out parameter. + /// + public static JET_wrn JetGetSystemParameter( + JET_INSTANCE instance, + JET_SESID sesid, + JET_param paramid, + ref IntPtr paramValue, + out string paramString, + int maxParam) + { + return Api.Check(Impl.JetGetSystemParameter(instance, sesid, paramid, ref paramValue, out paramString, maxParam)); + } + + /// + /// Gets database configuration options. + /// + /// The instance to retrieve the options from. + /// The session to use. + /// The parameter to get. + /// Returns the value of the parameter, if the value is an integer. + /// Returns the value of the parameter, if the value is a string. + /// The maximum size of the parameter string. + /// An ESENT warning code. + /// + /// passes in the error number in the paramValue, which is why it is + /// a ref parameter and not an out parameter. + /// + public static JET_wrn JetGetSystemParameter(JET_INSTANCE instance, JET_SESID sesid, JET_param paramid, ref int paramValue, out string paramString, int maxParam) + { + var intValue = new IntPtr(paramValue); + JET_wrn wrn = Api.Check(Impl.JetGetSystemParameter(instance, sesid, paramid, ref intValue, out paramString, maxParam)); + paramValue = intValue.ToInt32(); + + return wrn; + } + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + /// + /// Retrieves the version of the database engine. + /// + /// The session to use. + /// Returns the version number of the database engine. + [CLSCompliant(false)] + public static void JetGetVersion(JET_SESID sesid, out uint version) + { + Api.Check(Impl.JetGetVersion(sesid, out version)); + } +#endif // !MANAGEDESENT_ON_WSA + + #endregion + + #region Databases + + /// + /// Creates and attaches a database file. + /// + /// The session to use. + /// The path to the database file to create. + /// The parameter is not used. + /// Returns the dbid of the new database. + /// Database creation options. + /// + public static void JetCreateDatabase(JET_SESID sesid, string database, string connect, out JET_DBID dbid, CreateDatabaseGrbit grbit) + { + Api.Check(Impl.JetCreateDatabase(sesid, database, connect, out dbid, grbit)); + } + + /// + /// Creates and attaches a database file with a maximum database size specified. + /// . + /// + /// The session to use. + /// The path to the database file to create. + /// + /// The maximum size, in database pages, of the database. Passing 0 means there is + /// no enforced maximum. + /// + /// Returns the dbid of the new database. + /// Database creation options. + public static void JetCreateDatabase2(JET_SESID sesid, string database, int maxPages, out JET_DBID dbid, CreateDatabaseGrbit grbit) + { + Api.Check(Impl.JetCreateDatabase2(sesid, database, maxPages, out dbid, grbit)); + } + + /// + /// Attaches a database file for use with a database instance. In order to use the + /// database, it will need to be subsequently opened with . + /// + /// The session to use. + /// The database to attach. + /// Attach options. + /// An ESENT warning code. + public static JET_wrn JetAttachDatabase(JET_SESID sesid, string database, AttachDatabaseGrbit grbit) + { + return Api.Check(Impl.JetAttachDatabase(sesid, database, grbit)); + } + + /// + /// Attaches a database file for use with a database instance. In order to use the + /// database, it will need to be subsequently opened with . + /// + /// The session to use. + /// The database to attach. + /// + /// The maximum size, in database pages, of the database. Passing 0 means there is + /// no enforced maximum. + /// + /// Attach options. + /// An ESENT warning code. + public static JET_wrn JetAttachDatabase2(JET_SESID sesid, string database, int maxPages, AttachDatabaseGrbit grbit) + { + return Api.Check(Impl.JetAttachDatabase2(sesid, database, maxPages, grbit)); + } + + /// + /// Opens a database previously attached with , + /// for use with a database session. This function can be called multiple times + /// for the same database. + /// + /// The session that is opening the database. + /// The database to open. + /// Reserved for future use. + /// Returns the dbid of the attached database. + /// Open database options. + /// An ESENT warning code. + /// + public static JET_wrn JetOpenDatabase(JET_SESID sesid, string database, string connect, out JET_DBID dbid, OpenDatabaseGrbit grbit) + { + return Api.Check(Impl.JetOpenDatabase(sesid, database, connect, out dbid, grbit)); + } + + /// + /// Closes a database file that was previously opened with or + /// created with . + /// + /// The session to use. + /// The database to close. + /// Close options. + public static void JetCloseDatabase(JET_SESID sesid, JET_DBID dbid, CloseDatabaseGrbit grbit) + { + Api.Check(Impl.JetCloseDatabase(sesid, dbid, grbit)); + } + + /// + /// Releases a database file that was previously attached to a database session. + /// + /// The database session to use. + /// The database to detach. + public static void JetDetachDatabase(JET_SESID sesid, string database) + { + Api.Check(Impl.JetDetachDatabase(sesid, database)); + } + + /// + /// Releases a database file that was previously attached to a database session. + /// + /// The database session to use. + /// The database to detach. + /// Detach options. + public static void JetDetachDatabase2(JET_SESID sesid, string database, DetachDatabaseGrbit grbit) + { + Api.Check(Impl.JetDetachDatabase2(sesid, database, grbit)); + } + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK +#pragma warning disable 618,612 // Disable warning that JET_CONVERT is obsolete + /// + /// Makes a copy of an existing database. The copy is compacted to a + /// state optimal for usage. Data in the copied data will be packed + /// according to the measures chosen for the indexes at index create. + /// In this way, compacted data may be stored as densely as possible. + /// Alternatively, compacted data may reserve space for subsequent + /// record growth or index insertions. + /// + /// The session to use for the call. + /// The source database that will be compacted. + /// The name to use for the compacted database. + /// + /// A callback function that can be called periodically through the + /// database compact operation to report progress. + /// + /// + /// This parameter is ignored and should be null. + /// + /// Compact options. + public static void JetCompact( + JET_SESID sesid, + string sourceDatabase, + string destinationDatabase, + JET_PFNSTATUS statusCallback, + JET_CONVERT ignored, + CompactGrbit grbit) + { + Api.Check( + Impl.JetCompact(sesid, sourceDatabase, destinationDatabase, statusCallback, ignored, grbit)); + } +#pragma warning restore 618,612 + + /// + /// Extends the size of a database that is currently open. + /// + /// The session to use. + /// The database to grow. + /// The desired size of the database, in pages. + /// + /// The size of the database, in pages, after the call. + /// + public static void JetGrowDatabase(JET_SESID sesid, JET_DBID dbid, int desiredPages, out int actualPages) + { + Api.Check(Impl.JetGrowDatabase(sesid, dbid, desiredPages, out actualPages)); + } + + /// + /// Sets the size of an unopened database file. + /// + /// The session to use. + /// The name of the database. + /// The desired size of the database, in pages. + /// + /// The size of the database, in pages, after the call. + /// + public static void JetSetDatabaseSize(JET_SESID sesid, string database, int desiredPages, out int actualPages) + { + Api.Check(Impl.JetSetDatabaseSize(sesid, database, desiredPages, out actualPages)); + } +#endif // !MANAGEDESENT_ON_WSA + + /// + /// Retrieves certain information about the given database. + /// + /// The session to use. + /// The database identifier. + /// The value to be retrieved. + /// The specific data to retrieve. + public static void JetGetDatabaseInfo( + JET_SESID sesid, + JET_DBID dbid, + out int value, + JET_DbInfo infoLevel) + { + Api.Check(Impl.JetGetDatabaseInfo(sesid, dbid, out value, infoLevel)); + } + + /// + /// Retrieves certain information about the given database. + /// + /// The session to use. + /// The database identifier. + /// The value to be retrieved. + /// The specific data to retrieve. + public static void JetGetDatabaseInfo( + JET_SESID sesid, + JET_DBID dbid, + out JET_DBINFOMISC dbinfomisc, + JET_DbInfo infoLevel) + { + Api.Check(Impl.JetGetDatabaseInfo(sesid, dbid, out dbinfomisc, infoLevel)); + } + + /// + /// Retrieves certain information about the given database. + /// + /// The session to use. + /// The database identifier. + /// The value to be retrieved. + /// The specific data to retrieve. + public static void JetGetDatabaseInfo( + JET_SESID sesid, + JET_DBID dbid, + out string value, + JET_DbInfo infoLevel) + { + Api.Check(Impl.JetGetDatabaseInfo(sesid, dbid, out value, infoLevel)); + } + + /// + /// Retrieves certain information about the given database. + /// + /// The file name of the database. + /// The value to be retrieved. + /// The specific data to retrieve. + public static void JetGetDatabaseFileInfo( + string databaseName, + out int value, + JET_DbInfo infoLevel) + { + Api.Check(Impl.JetGetDatabaseFileInfo(databaseName, out value, infoLevel)); + } + + /// + /// Retrieves certain information about the given database. + /// + /// The file name of the database. + /// The value to be retrieved. + /// The specific data to retrieve. + public static void JetGetDatabaseFileInfo( + string databaseName, + out long value, + JET_DbInfo infoLevel) + { + Api.Check(Impl.JetGetDatabaseFileInfo(databaseName, out value, infoLevel)); + } + + /// + /// Retrieves certain information about the given database. + /// + /// The file name of the database. + /// The value to be retrieved. + /// The specific data to retrieve. + public static void JetGetDatabaseFileInfo( + string databaseName, + out JET_DBINFOMISC dbinfomisc, + JET_DbInfo infoLevel) + { + Api.Check(Impl.JetGetDatabaseFileInfo(databaseName, out dbinfomisc, infoLevel)); + } + + #endregion + + #region Backup/Restore + +#if !MANAGEDESENT_ON_WSA + + /// + /// Performs a streaming backup of an instance, including all the attached + /// databases, to a directory. With multiple backup methods supported by + /// the engine, this is the simplest and most encapsulated function. + /// + /// The instance to backup. + /// + /// The directory where the backup is to be stored. If the backup path is + /// null to use the function will truncate the logs, if possible. + /// + /// Backup options. + /// + /// Optional status notification callback. + /// + public static void JetBackupInstance(JET_INSTANCE instance, string destination, BackupGrbit grbit, JET_PFNSTATUS statusCallback) + { + Api.Check(Impl.JetBackupInstance(instance, destination, grbit, statusCallback)); + } + + /// + /// Restores and recovers a streaming backup of an instance including all + /// the attached databases. It is designed to work with a backup created + /// with the function. This is the + /// simplest and most encapsulated restore function. + /// + /// + /// The instance to use. The instance should not be initialized. + /// Restoring the files will initialize the instance. + /// + /// + /// Location of the backup. The backup should have been created with + /// . + /// + /// + /// Name of the folder where the database files from the backup set will + /// be copied and recovered. If this is set to null, the database files + /// will be copied and recovered to their original location. + /// + /// + /// Optional status notification callback. + /// + public static void JetRestoreInstance(JET_INSTANCE instance, string source, string destination, JET_PFNSTATUS statusCallback) + { + Api.Check(Impl.JetRestoreInstance(instance, source, destination, statusCallback)); + } +#endif // !MANAGEDESENT_ON_WSA + #endregion + + #region Snapshot Backup + +#if !MANAGEDESENT_ON_WSA + + /// + /// Starts a snapshot. While the snapshot is in progress, no + /// write-to-disk activity by the engine can take place. + /// + /// The snapshot session. + /// + /// Returns the number of instances that are part of the snapshot session. + /// + /// + /// Returns information about the instances that are part of the snapshot session. + /// + /// + /// Snapshot freeze options. + /// + public static void JetOSSnapshotFreeze(JET_OSSNAPID snapshot, out int numInstances, out JET_INSTANCE_INFO[] instances, SnapshotFreezeGrbit grbit) + { + Api.Check(Impl.JetOSSnapshotFreeze(snapshot, out numInstances, out instances, grbit)); + } + + /// + /// Begins the preparations for a snapshot session. A snapshot session + /// is a short time interval in which the engine does not issue any + /// write IOs to disk, so that the engine can participate in a volume + /// snapshot session (when driven by a snapshot writer). + /// + /// Returns the ID of the snapshot session. + /// Snapshot options. + public static void JetOSSnapshotPrepare(out JET_OSSNAPID snapshot, SnapshotPrepareGrbit grbit) + { + Api.Check(Impl.JetOSSnapshotPrepare(out snapshot, grbit)); + } + + /// + /// Notifies the engine that it can resume normal IO operations after a + /// freeze period and a successful snapshot. + /// + /// The ID of the snapshot. + /// Thaw options. + public static void JetOSSnapshotThaw(JET_OSSNAPID snapshot, SnapshotThawGrbit grbit) + { + Api.Check(Impl.JetOSSnapshotThaw(snapshot, grbit)); + } +#endif // !MANAGEDESENT_ON_WSA + #endregion + + #region Streaming Backup/Restore +#if !MANAGEDESENT_ON_WSA + + /// + /// Initiates an external backup while the engine and database are online and active. + /// + /// The instance prepare for backup. + /// Backup options. + public static void JetBeginExternalBackupInstance(JET_INSTANCE instance, BeginExternalBackupGrbit grbit) + { + Api.Check(Impl.JetBeginExternalBackupInstance(instance, grbit)); + } + + /// + /// Closes a file that was opened with JetOpenFileInstance after the + /// data from that file has been extracted using JetReadFileInstance. + /// + /// The instance to use. + /// The handle to close. + public static void JetCloseFileInstance(JET_INSTANCE instance, JET_HANDLE handle) + { + Api.Check(Impl.JetCloseFileInstance(instance, handle)); + } + + /// + /// Ends an external backup session. This API is the last API in a series + /// of APIs that must be called to execute a successful online + /// (non-VSS based) backup. + /// + /// The instance to end the backup for. + public static void JetEndExternalBackupInstance(JET_INSTANCE instance) + { + Api.Check(Impl.JetEndExternalBackupInstance(instance)); + } + + /// + /// Ends an external backup session. This API is the last API in a series + /// of APIs that must be called to execute a successful online + /// (non-VSS based) backup. + /// + /// The instance to end the backup for. + /// Options that specify how the backup ended. + public static void JetEndExternalBackupInstance2(JET_INSTANCE instance, EndExternalBackupGrbit grbit) + { + Api.Check(Impl.JetEndExternalBackupInstance2(instance, grbit)); + } + + /// + /// Used during a backup initiated by + /// to query an instance for the names of database files that should become part of + /// the backup file set. Only databases that are currently attached to the instance + /// using will be considered. These files may + /// subsequently be opened using and read + /// using . + /// + /// + /// It is important to note that this API does not return an error or warning if + /// the output buffer is too small to accept the full list of files that should be + /// part of the backup file set. + /// + /// The instance to get the information for. + /// + /// Returns a list of null terminated strings describing the set of database files + /// that should be a part of the backup file set. The list of strings returned in + /// this buffer is in the same format as a multi-string used by the registry. Each + /// null-terminated string is returned in sequence followed by a final null terminator. + /// + /// + /// Maximum number of characters to retrieve. + /// + /// + /// Actual size of the file list. If this is greater than maxChars + /// then the list has been truncated. + /// + public static void JetGetAttachInfoInstance(JET_INSTANCE instance, out string files, int maxChars, out int actualChars) + { + Api.Check(Impl.JetGetAttachInfoInstance(instance, out files, maxChars, out actualChars)); + } + + /// + /// Used during a backup initiated by + /// to query an instance for the names of database patch files and logfiles that + /// should become part of the backup file set. These files may subsequently be + /// opened using and read using . + /// + /// + /// It is important to note that this API does not return an error or warning if + /// the output buffer is too small to accept the full list of files that should be + /// part of the backup file set. + /// + /// The instance to get the information for. + /// + /// Returns a list of null terminated strings describing the set of database patch files + /// and log files that should be a part of the backup file set. The list of strings returned in + /// this buffer is in the same format as a multi-string used by the registry. Each + /// null-terminated string is returned in sequence followed by a final null terminator. + /// + /// + /// Maximum number of characters to retrieve. + /// + /// + /// Actual size of the file list. If this is greater than maxChars + /// then the list has been truncated. + /// + public static void JetGetLogInfoInstance(JET_INSTANCE instance, out string files, int maxChars, out int actualChars) + { + Api.Check(Impl.JetGetLogInfoInstance(instance, out files, maxChars, out actualChars)); + } + + /// + /// Used during a backup initiated by + /// to query an instance for the names of the transaction log files that can be safely + /// deleted after the backup has successfully completed. + /// + /// + /// It is important to note that this API does not return an error or warning if + /// the output buffer is too small to accept the full list of files that should be + /// part of the backup file set. + /// + /// The instance to get the information for. + /// + /// Returns a list of null terminated strings describing the set of database log files + /// that can be safely deleted after the backup completes. The list of strings returned in + /// this buffer is in the same format as a multi-string used by the registry. Each + /// null-terminated string is returned in sequence followed by a final null terminator. + /// + /// + /// Maximum number of characters to retrieve. + /// + /// + /// Actual size of the file list. If this is greater than maxChars + /// then the list has been truncated. + /// + public static void JetGetTruncateLogInfoInstance(JET_INSTANCE instance, out string files, int maxChars, out int actualChars) + { + Api.Check(Impl.JetGetTruncateLogInfoInstance(instance, out files, maxChars, out actualChars)); + } + + /// + /// Opens an attached database, database patch file, or transaction log + /// file of an active instance for the purpose of performing a streaming + /// fuzzy backup. The data from these files can subsequently be read + /// through the returned handle using JetReadFileInstance. The returned + /// handle must be closed using JetCloseFileInstance. An external backup + /// of the instance must have been previously initiated using + /// JetBeginExternalBackupInstance. + /// + /// The instance to use. + /// The file to open. + /// Returns a handle to the file. + /// Returns the least significant 32 bits of the file size. + /// Returns the most significant 32 bits of the file size. + public static void JetOpenFileInstance(JET_INSTANCE instance, string file, out JET_HANDLE handle, out long fileSizeLow, out long fileSizeHigh) + { + Api.Check(Impl.JetOpenFileInstance(instance, file, out handle, out fileSizeLow, out fileSizeHigh)); + } + + /// + /// Retrieves the contents of a file opened with . + /// + /// The instance to use. + /// The file to read from. + /// The buffer to read into. + /// The size of the buffer. + /// Returns the amount of data read into the buffer. + public static void JetReadFileInstance(JET_INSTANCE instance, JET_HANDLE file, byte[] buffer, int bufferSize, out int bytesRead) + { + Api.Check(Impl.JetReadFileInstance(instance, file, buffer, bufferSize, out bytesRead)); + } + + /// + /// Used during a backup initiated by JetBeginExternalBackup to delete + /// any transaction log files that will no longer be needed once the + /// current backup completes successfully. + /// + /// The instance to truncate. + public static void JetTruncateLogInstance(JET_INSTANCE instance) + { + Api.Check(Impl.JetTruncateLogInstance(instance)); + } +#endif // !MANAGEDESENT_ON_WSA + + #endregion + + #region Sessions + + /// + /// Initialize a new ESENT session. + /// + /// The initialized instance to create the session in. + /// Returns the created session. + /// The parameter is not used. + /// The parameter is not used. + /// + public static void JetBeginSession(JET_INSTANCE instance, out JET_SESID sesid, string username, string password) + { + Api.Check(Impl.JetBeginSession(instance, out sesid, username, password)); + } + + /// + /// Associates a session with the current thread using the given context + /// handle. This association overrides the default engine requirement + /// that a transaction for a given session must occur entirely on the + /// same thread. Use to remove the + /// association. + /// + /// The session to set the context on. + /// The context to set. + public static void JetSetSessionContext(JET_SESID sesid, IntPtr context) + { + Api.Check(Impl.JetSetSessionContext(sesid, context)); + } + + /// + /// Disassociates a session from the current thread. This should be + /// used in conjunction with . + /// + /// The session to use. + public static void JetResetSessionContext(JET_SESID sesid) + { + Api.Check(Impl.JetResetSessionContext(sesid)); + } + + /// + /// Ends a session. + /// + /// The session to end. + /// This parameter is not used. + public static void JetEndSession(JET_SESID sesid, EndSessionGrbit grbit) + { + Api.Check(Impl.JetEndSession(sesid, grbit)); + } + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + /// + /// Initialize a new ESE session in the same instance as the given sesid. + /// + /// The session to duplicate. + /// Returns the new session. + public static void JetDupSession(JET_SESID sesid, out JET_SESID newSesid) + { + Api.Check(Impl.JetDupSession(sesid, out newSesid)); + } +#endif // !MANAGEDESENT_ON_WSA + + #endregion + + #region Tables + + /// + /// Opens a cursor on a previously created table. + /// + /// The database session to use. + /// The database to open the table in. + /// The name of the table to open. + /// The parameter is not used. + /// The parameter is not used. + /// Table open options. + /// Returns the opened table. + /// An ESENT warning. + public static JET_wrn JetOpenTable(JET_SESID sesid, JET_DBID dbid, string tablename, byte[] parameters, int parametersSize, OpenTableGrbit grbit, out JET_TABLEID tableid) + { + return Api.Check(Impl.JetOpenTable(sesid, dbid, tablename, parameters, parametersSize, grbit, out tableid)); + } + + /// + /// Close an open table. + /// + /// The session which opened the table. + /// The table to close. + public static void JetCloseTable(JET_SESID sesid, JET_TABLEID tableid) + { + Api.Check(Impl.JetCloseTable(sesid, tableid)); + } + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + /// + /// Duplicates an open cursor and returns a handle to the duplicated cursor. + /// If the cursor that was duplicated was a read-only cursor then the + /// duplicated cursor is also a read-only cursor. + /// Any state related to constructing a search key or updating a record is + /// not copied into the duplicated cursor. In addition, the location of the + /// original cursor is not duplicated into the duplicated cursor. The + /// duplicated cursor is always opened on the clustered index and its + /// location is always on the first row of the table. + /// + /// The session to use. + /// The cursor to duplicate. + /// The duplicated cursor. + /// Reserved for future use. + public static void JetDupCursor(JET_SESID sesid, JET_TABLEID tableid, out JET_TABLEID newTableid, DupCursorGrbit grbit) + { + Api.Check(Impl.JetDupCursor(sesid, tableid, out newTableid, grbit)); + } + + /// + /// Walks each index of a table to exactly compute the number of entries + /// in an index, and the number of distinct keys in an index. This + /// information, together with the number of database pages allocated + /// for an index and the current time of the computation is stored in + /// index metadata in the database. This data can be subsequently retrieved + /// with information operations. + /// + /// The session to use. + /// The table that the statistics will be computed on. + public static void JetComputeStats(JET_SESID sesid, JET_TABLEID tableid) + { + Api.Check(Impl.JetComputeStats(sesid, tableid)); + } + + /// + /// Enables the application to associate a context handle known as + /// Local Storage with a cursor or the table associated with that + /// cursor. This context handle can be used by the application to + /// store auxiliary data that is associated with a cursor or table. + /// The application is later notified using a runtime callback when + /// the context handle must be released. This makes it possible to + /// associate dynamically allocated state with a cursor or table. + /// + /// The session to use. + /// The cursor to use. + /// The context handle to be associated with the session or cursor. + /// Set options. + public static void JetSetLS(JET_SESID sesid, JET_TABLEID tableid, JET_LS ls, LsGrbit grbit) + { + Api.Check(Impl.JetSetLS(sesid, tableid, ls, grbit)); + } + + /// + /// Enables the application to retrieve the context handle known + /// as Local Storage that is associated with a cursor or the table + /// associated with that cursor. This context handle must have been + /// previously set using . JetGetLS can also + /// be used to simultaneously fetch the current context handle for + /// a cursor or table and reset that context handle. + /// + /// The session to use. + /// The cursor to use. + /// Returns the retrieved context handle. + /// Retrieve options. + public static void JetGetLS(JET_SESID sesid, JET_TABLEID tableid, out JET_LS ls, LsGrbit grbit) + { + Api.Check(Impl.JetGetLS(sesid, tableid, out ls, grbit)); + } + + /// + /// Determine whether an update of the current record of a cursor + /// will result in a write conflict, based on the current update + /// status of the record. It is possible that a write conflict will + /// ultimately be returned even if JetGetCursorInfo returns successfully. + /// because another session may update the record before the current + /// session is able to update the same record. + /// + /// The session to use. + /// The cursor to check. + public static void JetGetCursorInfo(JET_SESID sesid, JET_TABLEID tableid) + { + Api.Check(Impl.JetGetCursorInfo(sesid, tableid)); + } +#endif // !MANAGEDESENT_ON_WSA + + #endregion + + #region Transactions + + /// + /// Causes a session to enter a transaction or create a new save point in an existing + /// transaction. + /// + /// The session to begin the transaction for. + public static void JetBeginTransaction(JET_SESID sesid) + { + Api.Check(Impl.JetBeginTransaction(sesid)); + } + + /// + /// Causes a session to enter a transaction or create a new save point in an existing + /// transaction. + /// + /// The session to begin the transaction for. + /// Transaction options. + public static void JetBeginTransaction2(JET_SESID sesid, BeginTransactionGrbit grbit) + { + Api.Check(Impl.JetBeginTransaction2(sesid, grbit)); + } + + /// + /// Commits the changes made to the state of the database during the current save point + /// and migrates them to the previous save point. If the outermost save point is committed + /// then the changes made during that save point will be committed to the state of the + /// database and the session will exit the transaction. + /// + /// The session to commit the transaction for. + /// Commit options. + public static void JetCommitTransaction(JET_SESID sesid, CommitTransactionGrbit grbit) + { + Api.Check(Impl.JetCommitTransaction(sesid, grbit)); + } + + /// + /// Undoes the changes made to the state of the database + /// and returns to the last save point. JetRollback will also close any cursors + /// opened during the save point. If the outermost save point is undone, the + /// session will exit the transaction. + /// + /// The session to rollback the transaction for. + /// Rollback options. + public static void JetRollback(JET_SESID sesid, RollbackTransactionGrbit grbit) + { + Api.Check(Impl.JetRollback(sesid, grbit)); + } + + #endregion + + #region DDL + + /// + /// Create an empty table. The newly created table is opened exclusively. + /// + /// The session to use. + /// The database to create the table in. + /// The name of the table to create. + /// Initial number of pages in the table. + /// + /// The default density of the table. This is used when doing sequential inserts. + /// + /// Returns the tableid of the new table. + public static void JetCreateTable(JET_SESID sesid, JET_DBID dbid, string table, int pages, int density, out JET_TABLEID tableid) + { + Api.Check(Impl.JetCreateTable(sesid, dbid, table, pages, density, out tableid)); + } + + /// + /// Add a new column to an existing table. + /// + /// The session to use. + /// The table to add the column to. + /// The name of the column. + /// The definition of the column. + /// The default value of the column. + /// The size of the default value. + /// Returns the columnid of the new column. + public static void JetAddColumn(JET_SESID sesid, JET_TABLEID tableid, string column, JET_COLUMNDEF columndef, byte[] defaultValue, int defaultValueSize, out JET_COLUMNID columnid) + { + Api.Check(Impl.JetAddColumn(sesid, tableid, column, columndef, defaultValue, defaultValueSize, out columnid)); + } + + /// + /// Deletes a column from a database table. + /// + /// The session to use. + /// A cursor on the table to delete the column from. + /// The name of the column to be deleted. + public static void JetDeleteColumn(JET_SESID sesid, JET_TABLEID tableid, string column) + { + Api.Check(Impl.JetDeleteColumn(sesid, tableid, column)); + } + + /// + /// Deletes a column from a database table. + /// + /// The session to use. + /// A cursor on the table to delete the column from. + /// The name of the column to be deleted. + /// Column deletion options. + public static void JetDeleteColumn2(JET_SESID sesid, JET_TABLEID tableid, string column, DeleteColumnGrbit grbit) + { + Api.Check(Impl.JetDeleteColumn2(sesid, tableid, column, grbit)); + } + + /// + /// Deletes an index from a database table. + /// + /// The session to use. + /// A cursor on the table to delete the index from. + /// The name of the index to be deleted. + public static void JetDeleteIndex(JET_SESID sesid, JET_TABLEID tableid, string index) + { + Api.Check(Impl.JetDeleteIndex(sesid, tableid, index)); + } + + /// + /// Deletes a table from a database. + /// + /// The session to use. + /// The database to delete the table from. + /// The name of the table to delete. + public static void JetDeleteTable(JET_SESID sesid, JET_DBID dbid, string table) + { + Api.Check(Impl.JetDeleteTable(sesid, dbid, table)); + } + + /// + /// Creates an index over data in an ESE database. An index can be used to locate + /// specific data quickly. + /// + /// The session to use. + /// The table to create the index on. + /// + /// Pointer to a null-terminated string that specifies the name of the index to create. + /// + /// Index creation options. + /// + /// Pointer to a double null-terminated string of null-delimited tokens. + /// + /// + /// The length, in characters, of szKey including the two terminating nulls. + /// + /// Initial B+ tree density. + /// + /// + public static void JetCreateIndex( + JET_SESID sesid, + JET_TABLEID tableid, + string indexName, + CreateIndexGrbit grbit, + string keyDescription, + int keyDescriptionLength, + int density) + { + Api.Check(Impl.JetCreateIndex(sesid, tableid, indexName, grbit, keyDescription, keyDescriptionLength, density)); + } + + /// + /// Creates indexes over data in an ESE database. + /// + /// + /// When creating multiple indexes (i.e. with numIndexCreates + /// greater than 1) this method MUST be called + /// outside of any transactions and with exclusive access to the + /// table. The JET_TABLEID returned by "JetCreateTable" + /// will have exlusive access or the table can be opened for + /// exclusive access by passing + /// to . + /// + /// and + /// are very similar, and appear to take the same arguments. The difference is in the + /// implementation. JetCreateIndex2 uses LCIDs for Unicode indices (e.g. 1033), while + /// JetCreateIndex4 uses Locale Names (e.g. "en-US" or "de-DE". LCIDs are older, and not as well + /// supported in newer version of windows. + /// + /// + /// The session to use. + /// The table to create the index on. + /// Array of objects describing the indexes to be created. + /// Number of index description objects. + /// + /// + public static void JetCreateIndex2( + JET_SESID sesid, + JET_TABLEID tableid, + JET_INDEXCREATE[] indexcreates, + int numIndexCreates) + { + Api.Check(Impl.JetCreateIndex2(sesid, tableid, indexcreates, numIndexCreates)); + } + + /// + /// 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 + /// . + /// . + /// + /// The session to use. + /// + /// Column definitions for the columns created in the temporary table. + /// + /// Number of column definitions. + /// Table creation options. + /// + /// Returns the tableid of the temporary table. Closing this tableid + /// with frees the resources associated + /// with the temporary table. + /// + /// + /// The output buffer that receives the array of column IDs generated + /// during the creation of the temporary table. The column IDs in this + /// array will exactly correspond to the input array of column definitions. + /// As a result, the size of this buffer must correspond to the size of + /// the input array. + /// + public static void JetOpenTempTable( + JET_SESID sesid, + JET_COLUMNDEF[] columns, + int numColumns, + TempTableGrbit grbit, + out JET_TABLEID tableid, + JET_COLUMNID[] columnids) + { + Api.Check(Impl.JetOpenTempTable(sesid, columns, numColumns, grbit, out tableid, columnids)); + } + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + /// + /// 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 + /// , + /// . + /// . + /// + /// The session to use. + /// + /// Column definitions for the columns created in the temporary table. + /// + /// Number of column definitions. + /// + /// The locale ID to use to compare any Unicode key column data in the temporary table. + /// Any locale may be used as long as the appropriate language pack has been installed + /// on the machine. + /// + /// Table creation options. + /// + /// Returns the tableid of the temporary table. Closing this tableid + /// with frees the resources associated + /// with the temporary table. + /// + /// + /// The output buffer that receives the array of column IDs generated + /// during the creation of the temporary table. The column IDs in this + /// array will exactly correspond to the input array of column definitions. + /// As a result, the size of this buffer must correspond to the size of + /// the input array. + /// + public static void JetOpenTempTable2( + JET_SESID sesid, + JET_COLUMNDEF[] columns, + int numColumns, + int lcid, + TempTableGrbit grbit, + out JET_TABLEID tableid, + JET_COLUMNID[] columnids) + { + Api.Check(Impl.JetOpenTempTable2(sesid, columns, numColumns, lcid, grbit, out tableid, columnids)); + } +#endif // !MANAGEDESENT_ON_WSA + + /// + /// 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 + /// , + /// . + /// + /// The session to use. + /// + /// Column definitions for the columns created in the temporary table. + /// + /// Number of column definitions. + /// + /// The Locale ID and normalization flags that will be used to compare + /// any Unicode key column data in the temporary table. When this + /// is not present then the default options are used. + /// + /// Table creation options. + /// + /// Returns the tableid of the temporary table. Closing this tableid + /// with frees the resources associated + /// with the temporary table. + /// + /// + /// The output buffer that receives the array of column IDs generated + /// during the creation of the temporary table. The column IDs in this + /// array will exactly correspond to the input array of column definitions. + /// As a result, the size of this buffer must correspond to the size of + /// the input array. + /// + public static void JetOpenTempTable3( + JET_SESID sesid, + JET_COLUMNDEF[] columns, + int numColumns, + JET_UNICODEINDEX unicodeindex, + TempTableGrbit grbit, + out JET_TABLEID tableid, + JET_COLUMNID[] columnids) + { + Api.Check(Impl.JetOpenTempTable3(sesid, columns, numColumns, unicodeindex, grbit, out tableid, columnids)); + } + + /// + /// Creates a table, adds columns, and indices on that table. + /// + /// The session to use. + /// The database to which to add the new table. + /// Object describing the table to create. + /// + public static void JetCreateTableColumnIndex3( + JET_SESID sesid, + JET_DBID dbid, + JET_TABLECREATE tablecreate) + { + Api.Check(Impl.JetCreateTableColumnIndex3(sesid, dbid, tablecreate)); + } + + #region JetGetTableColumnInfo overloads + + /// + /// Retrieves information about a table column. + /// + /// The session to use. + /// The table containing the column. + /// The name of the column. + /// Filled in with information about the column. + public static void JetGetTableColumnInfo( + JET_SESID sesid, + JET_TABLEID tableid, + string columnName, + out JET_COLUMNDEF columndef) + { + Api.Check(Impl.JetGetTableColumnInfo(sesid, tableid, columnName, out columndef)); + } + + /// + /// 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_COLUMNDEF columndef) + { + Api.Check(Impl.JetGetTableColumnInfo(sesid, tableid, columnid, out columndef)); + } + + /// + /// Retrieves information about a table column. + /// + /// The session to use. + /// The table containing the column. + /// The name of the column. + /// Filled in with information about the column. + public static void JetGetTableColumnInfo( + JET_SESID sesid, + JET_TABLEID tableid, + string columnName, + out JET_COLUMNBASE columnbase) + { + Api.Check(Impl.JetGetTableColumnInfo(sesid, tableid, columnName, out columnbase)); + } + + /// + /// Retrieves information about all columns in the table. + /// + /// The session to use. + /// The table containing the column. + /// The parameter is ignored. + /// Filled in with information about the columns in the table. + public static void JetGetTableColumnInfo( + JET_SESID sesid, + JET_TABLEID tableid, + string columnName, + out JET_COLUMNLIST columnlist) + { + Api.Check(Impl.JetGetTableColumnInfo(sesid, tableid, columnName, ColInfoGrbit.None, out columnlist)); + } + + /// + /// Retrieves information about all columns in the table. + /// + /// The session to use. + /// The table containing the column. + /// The parameter is ignored. + /// Additional options for JetGetTableColumnInfo. + /// Filled in with information about the columns in the table. + public static void JetGetTableColumnInfo( + JET_SESID sesid, + JET_TABLEID tableid, + string columnName, + ColInfoGrbit grbit, + out JET_COLUMNLIST columnlist) + { + Api.Check(Impl.JetGetTableColumnInfo(sesid, tableid, columnName, grbit, out columnlist)); + } + + #endregion + + #region JetGetColumnInfo overloads + + /// + /// Retrieves information about a table column. + /// + /// The session to use. + /// The database that contains the table. + /// The name of the table containing the column. + /// The name of the column. + /// Filled in with information about the column. + public static void JetGetColumnInfo( + JET_SESID sesid, + JET_DBID dbid, + string tablename, + string columnName, + out JET_COLUMNDEF columndef) + { + Api.Check(Impl.JetGetColumnInfo(sesid, dbid, tablename, columnName, out columndef)); + } + + /// + /// Retrieves information about all columns in a table. + /// + /// The session to use. + /// The database that contains the table. + /// The name of the table containing the column. + /// This parameter is ignored. + /// Filled in with information about the columns in the table. + public static void JetGetColumnInfo( + JET_SESID sesid, + JET_DBID dbid, + string tablename, + string columnName, + out JET_COLUMNLIST columnlist) + { + Api.Check(Impl.JetGetColumnInfo(sesid, dbid, tablename, columnName, out columnlist)); + } + + /// + /// 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 name 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, + string columnName, + out JET_COLUMNBASE columnbase) + { + Api.Check(Impl.JetGetColumnInfo(sesid, dbid, tablename, columnName, out columnbase)); + } + + #endregion + + #region JetGetObjectInfo overloads + + /// + /// Retrieves information about database objects. + /// + /// The session to use. + /// The database to use. + /// Filled in with information about the objects in the database. + public static void JetGetObjectInfo(JET_SESID sesid, JET_DBID dbid, out JET_OBJECTLIST objectlist) + { + Api.Check(Impl.JetGetObjectInfo(sesid, dbid, out objectlist)); + } + + /// + /// Retrieves information about database objects. + /// + /// The session to use. + /// The database to use. + /// The type of the object. + /// The object name about which to retrieve information. + /// Filled in with information about the objects in the database. + public static void JetGetObjectInfo( + JET_SESID sesid, + JET_DBID dbid, + JET_objtyp objtyp, + string objectName, + out JET_OBJECTINFO objectinfo) + { + Api.Check(Impl.JetGetObjectInfo(sesid, dbid, objtyp, objectName, out objectinfo)); + } + + #endregion + + /// + /// Determines the name of the current index of a given cursor. + /// + /// + /// This name is also used to later re-select that index as the current index using + /// . It can also be used to discover the properties of that index using + /// JetGetTableIndexInfo. + /// + /// The returned name of the index will be an empty string if the current index is the clustered index and no + /// primary index was explicitly defined. + /// + /// The session to use. + /// The cursor to get the index name for. + /// Returns the name of the index. + /// + /// The maximum length of the index name. Index names are no more than + /// characters. + /// + public static void JetGetCurrentIndex(JET_SESID sesid, JET_TABLEID tableid, out string indexName, int maxNameLength) + { + Api.Check(Impl.JetGetCurrentIndex(sesid, tableid, out indexName, maxNameLength)); + } + + #region JetGetTableInfo overloads + + /// + /// Retrieves various pieces of information about a table in a database. + /// + /// + /// This overload is used with . + /// + /// The session to use. + /// The table to retrieve information about. + /// Retrieved information. + /// The type of information to retrieve. + public static void JetGetTableInfo(JET_SESID sesid, JET_TABLEID tableid, out JET_OBJECTINFO result, JET_TblInfo infoLevel) + { + Api.Check(Impl.JetGetTableInfo(sesid, tableid, out result, infoLevel)); + } + + /// + /// Retrieves various pieces of information about a table in a database. + /// + /// + /// This overload is used with and + /// . + /// + /// The session to use. + /// The table to retrieve information about. + /// Retrieved information. + /// The type of information to retrieve. + public static void JetGetTableInfo(JET_SESID sesid, JET_TABLEID tableid, out string result, JET_TblInfo infoLevel) + { + Api.Check(Impl.JetGetTableInfo(sesid, tableid, out result, infoLevel)); + } + + /// + /// Retrieves various pieces of information about a table in a database. + /// + /// + /// This overload is used with . + /// + /// The session to use. + /// The table to retrieve information about. + /// Retrieved information. + /// The type of information to retrieve. + public static void JetGetTableInfo(JET_SESID sesid, JET_TABLEID tableid, out JET_DBID result, JET_TblInfo infoLevel) + { + Api.Check(Impl.JetGetTableInfo(sesid, tableid, out result, infoLevel)); + } + + /// + /// Retrieves various pieces of information about a table in a database. + /// + /// + /// This overload is used with and + /// . + /// + /// The session to use. + /// The table to retrieve information about. + /// Retrieved information. + /// The type of information to retrieve. + public static void JetGetTableInfo(JET_SESID sesid, JET_TABLEID tableid, int[] result, JET_TblInfo infoLevel) + { + Api.Check(Impl.JetGetTableInfo(sesid, tableid, result, infoLevel)); + } + + /// + /// Retrieves various pieces of information about a table in a database. + /// + /// + /// This overload is used with and + /// . + /// + /// The session to use. + /// The table to retrieve information about. + /// Retrieved information. + /// The type of information to retrieve. + public static void JetGetTableInfo(JET_SESID sesid, JET_TABLEID tableid, out int result, JET_TblInfo infoLevel) + { + Api.Check(Impl.JetGetTableInfo(sesid, tableid, out result, infoLevel)); + } + + #endregion + + #region JetGetIndexInfo overloads + + /// + /// Retrieves information about indexes on a table. + /// + /// The session to use. + /// The database to use. + /// The name of the table to retrieve index information about. + /// The name of the index to retrieve information about. + /// Filled in with information about indexes on the table. + /// The type of information to retrieve. + [CLSCompliant(false)] + public static void JetGetIndexInfo( + JET_SESID sesid, + JET_DBID dbid, + string tablename, + string indexname, + out ushort result, + JET_IdxInfo infoLevel) + { + Api.Check(Impl.JetGetIndexInfo(sesid, dbid, tablename, indexname, out result, infoLevel)); + } + + /// + /// Retrieves information about indexes on a table. + /// + /// The session to use. + /// The database to use. + /// The name of the table to retrieve index information about. + /// The name of the index to retrieve information about. + /// Filled in with information about indexes on the table. + /// The type of information to retrieve. + public static void JetGetIndexInfo( + JET_SESID sesid, + JET_DBID dbid, + string tablename, + string indexname, + out int result, + JET_IdxInfo infoLevel) + { + Api.Check(Impl.JetGetIndexInfo(sesid, dbid, tablename, indexname, out result, infoLevel)); + } + + /// + /// Retrieves information about indexes on a table. + /// + /// The session to use. + /// The database to use. + /// The name of the table to retrieve index information about. + /// The name of the index to retrieve information about. + /// Filled in with information about indexes on the table. + /// The type of information to retrieve. + public static void JetGetIndexInfo( + JET_SESID sesid, + JET_DBID dbid, + string tablename, + string indexname, + out JET_INDEXID result, + JET_IdxInfo infoLevel) + { + Api.Check(Impl.JetGetIndexInfo(sesid, dbid, tablename, indexname, out result, infoLevel)); + } + + /// + /// Retrieves information about indexes on a table. + /// + /// The session to use. + /// The database to use. + /// The name of the table to retrieve index information about. + /// The name of the index to retrieve information about. + /// Filled in with information about indexes on the table. + /// The type of information to retrieve. + public static void JetGetIndexInfo( + JET_SESID sesid, + JET_DBID dbid, + string tablename, + string indexname, + out JET_INDEXLIST result, + JET_IdxInfo infoLevel) + { + Api.Check(Impl.JetGetIndexInfo(sesid, dbid, tablename, indexname, out result, infoLevel)); + } + + /// + /// Retrieves information about indexes on a table. + /// + /// The session to use. + /// The database to use. + /// The name of the table to retrieve index information about. + /// The name of the index to retrieve information about. + /// Filled in with information about indexes on the table. + /// The type of information to retrieve. + public static void JetGetIndexInfo( + JET_SESID sesid, + JET_DBID dbid, + string tablename, + string indexname, + out string result, + JET_IdxInfo infoLevel) + { + Api.Check(Impl.JetGetIndexInfo(sesid, dbid, tablename, indexname, out result, infoLevel)); + } + + /// + /// Retrieves information about indexes on a table. + /// + /// The session to use. + /// The database to use. + /// The name of the table to retrieve index information about. + /// The name of the index to retrieve information about. + /// Filled in with information about indexes on the table. + /// The type of information to retrieve. + public static void JetGetIndexInfo( + JET_SESID sesid, + JET_DBID dbid, + string tablename, + string indexname, + out JET_INDEXCREATE result, + JET_IdxInfo infoLevel) + { + Api.Check(Impl.JetGetIndexInfo(sesid, dbid, tablename, indexname, out result, infoLevel)); + } + + #endregion + + #region JetGetTableIndexInfo overloads + + /// + /// Retrieves information about indexes on a table. + /// + /// The session to use. + /// The table to retrieve index information about. + /// The name of the index. + /// Filled in with information about indexes on the table. + /// The type of information to retrieve. + [CLSCompliant(false)] + public static void JetGetTableIndexInfo( + JET_SESID sesid, + JET_TABLEID tableid, + string indexname, + out ushort result, + JET_IdxInfo infoLevel) + { + Api.Check(Impl.JetGetTableIndexInfo(sesid, tableid, indexname, out result, infoLevel)); + } + + /// + /// Retrieves information about indexes on a table. + /// + /// The session to use. + /// The table to retrieve index information about. + /// The name of the index. + /// Filled in with information about indexes on the table. + /// The type of information to retrieve. + public static void JetGetTableIndexInfo( + JET_SESID sesid, + JET_TABLEID tableid, + string indexname, + out int result, + JET_IdxInfo infoLevel) + { + Api.Check(Impl.JetGetTableIndexInfo(sesid, tableid, indexname, out result, infoLevel)); + } + + /// + /// Retrieves information about indexes on a table. + /// + /// The session to use. + /// The table to retrieve index information about. + /// The name of the index. + /// Filled in with information about indexes on the table. + /// The type of information to retrieve. + public static void JetGetTableIndexInfo( + JET_SESID sesid, + JET_TABLEID tableid, + string indexname, + out JET_INDEXID result, + JET_IdxInfo infoLevel) + { + Api.Check(Impl.JetGetTableIndexInfo(sesid, tableid, indexname, out result, infoLevel)); + } + + /// + /// Retrieves information about indexes on a table. + /// + /// The session to use. + /// The table to retrieve index information about. + /// The name of the index. + /// Filled in with information about indexes on the table. + /// The type of information to retrieve. + public static void JetGetTableIndexInfo( + JET_SESID sesid, + JET_TABLEID tableid, + string indexname, + out JET_INDEXLIST result, + JET_IdxInfo infoLevel) + { + Api.Check(Impl.JetGetTableIndexInfo(sesid, tableid, indexname, out result, infoLevel)); + } + + /// + /// Retrieves information about indexes on a table. + /// + /// The session to use. + /// The table to retrieve index information about. + /// The name of the index. + /// Filled in with information about indexes on the table. + /// The type of information to retrieve. + public static void JetGetTableIndexInfo( + JET_SESID sesid, + JET_TABLEID tableid, + string indexname, + out string result, + JET_IdxInfo infoLevel) + { + Api.Check(Impl.JetGetTableIndexInfo(sesid, tableid, indexname, out result, infoLevel)); + } + + /// + /// Retrieves information about indexes on a table. + /// + /// The session to use. + /// The table to retrieve index information about. + /// The name of the index to retrieve information about. + /// Filled in with information about indexes on the table. + /// The type of information to retrieve. + public static void JetGetTableIndexInfo( + JET_SESID sesid, + JET_TABLEID tableid, + string indexname, + out JET_INDEXCREATE result, + JET_IdxInfo infoLevel) + { + Api.Check(Impl.JetGetTableIndexInfo(sesid, tableid, indexname, out result, infoLevel)); + } + + #endregion + + /// + /// Changes the name of an existing table. + /// + /// The session to use. + /// The database containing the table. + /// The name of the table. + /// The new name of the table. + public static void JetRenameTable(JET_SESID sesid, JET_DBID dbid, string tableName, string newTableName) + { + Api.Check(Impl.JetRenameTable(sesid, dbid, tableName, newTableName)); + } + + /// + /// Changes the name of an existing column. + /// + /// The session to use. + /// The table containing the column. + /// The name of the column. + /// The new name of the column. + /// Column rename options. + public static void JetRenameColumn(JET_SESID sesid, JET_TABLEID tableid, string name, string newName, RenameColumnGrbit grbit) + { + Api.Check(Impl.JetRenameColumn(sesid, tableid, name, newName, grbit)); + } + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + /// + /// Changes the default value of an existing column. + /// + /// The session to use. + /// The database containing the column. + /// The name of the table containing the column. + /// The name of the column. + /// The new default value. + /// Size of the new default value. + /// Column default value options. + public static void JetSetColumnDefaultValue( + JET_SESID sesid, JET_DBID dbid, string tableName, string columnName, byte[] data, int dataSize, SetColumnDefaultValueGrbit grbit) + { + Api.Check(Impl.JetSetColumnDefaultValue(sesid, dbid, tableName, columnName, data, dataSize, grbit)); + } +#endif // !MANAGEDESENT_ON_WSA + + #endregion + + #region Navigation + + /// + /// Positions a cursor to an index entry for the record that is associated with + /// the specified bookmark. The bookmark can be used with any index defined over + /// a table. The bookmark for a record can be retrieved using . + /// + /// The session to use. + /// The cursor to position. + /// The bookmark used to position the cursor. + /// The size of the bookmark. + public static void JetGotoBookmark(JET_SESID sesid, JET_TABLEID tableid, byte[] bookmark, int bookmarkSize) + { + Api.Check(Impl.JetGotoBookmark(sesid, tableid, bookmark, bookmarkSize)); + } + + /// + /// Positions a cursor to an index entry that is associated with the + /// specified secondary index bookmark. The secondary index bookmark + /// must be used with the same index over the same table from which it + /// was originally retrieved. The secondary index bookmark for an index + /// entry can be retrieved using . + /// + /// The session to use. + /// The table cursor to position. + /// The buffer that contains the secondary key. + /// The size of the secondary key. + /// The buffer that contains the primary key. + /// The size of the primary key. + /// Options for positioning the bookmark. + public static void JetGotoSecondaryIndexBookmark( + JET_SESID sesid, + JET_TABLEID tableid, + byte[] secondaryKey, + int secondaryKeySize, + byte[] primaryKey, + int primaryKeySize, + GotoSecondaryIndexBookmarkGrbit grbit) + { + Api.Check( + Impl.JetGotoSecondaryIndexBookmark( + sesid, tableid, secondaryKey, secondaryKeySize, primaryKey, primaryKeySize, grbit)); + } + + /// + /// Navigate through an index. The cursor can be positioned at the start or + /// end of the index and moved backwards and forwards by a specified number + /// of index entries. Also see + /// , , + /// , . + /// + /// The session to use for the call. + /// The cursor to position. + /// An offset which indicates how far to move the cursor. + /// Move options. + public static void JetMove(JET_SESID sesid, JET_TABLEID tableid, int numRows, MoveGrbit grbit) + { + Api.Check(Impl.JetMove(sesid, tableid, numRows, grbit)); + } + + /// + /// Navigate through an index. The cursor can be positioned at the start or + /// end of the index and moved backwards and forwards by a specified number + /// of index entries. Also see + /// , , + /// , . + /// + /// The session to use for the call. + /// The cursor to position. + /// An offset which indicates how far to move the cursor. + /// Move options. + public static void JetMove(JET_SESID sesid, JET_TABLEID tableid, JET_Move numRows, MoveGrbit grbit) + { + Api.Check(Impl.JetMove(sesid, tableid, (int)numRows, grbit)); + } + + /// + /// Constructs search keys that may then be used by and . + /// + /// + /// The MakeKey functions provide datatype-specific make key functionality. + /// + /// The session to use. + /// The cursor to create the key on. + /// Column data for the current key column of the current index. + /// Size of the data. + /// Key options. + public static void JetMakeKey(JET_SESID sesid, JET_TABLEID tableid, byte[] data, int dataSize, MakeKeyGrbit grbit) + { + if ((null == data && 0 != dataSize) || (null != data && dataSize > data.Length)) + { + throw new ArgumentOutOfRangeException( + "dataSize", + dataSize, + "cannot be greater than the length of the data"); + } + + unsafe + { + fixed (byte* pointer = data) + { + Api.JetMakeKey(sesid, tableid, new IntPtr(pointer), dataSize, grbit); + } + } + } + + /// + /// Efficiently positions a cursor to an index entry that matches the search + /// criteria specified by the search key in that cursor and the specified + /// inequality. A search key must have been previously constructed using + /// . + /// Also see . + /// + /// The session to use. + /// The cursor to position. + /// Seek options. + /// An ESENT warning. + public static JET_wrn JetSeek(JET_SESID sesid, JET_TABLEID tableid, SeekGrbit grbit) + { + return Api.Check(Impl.JetSeek(sesid, tableid, grbit)); + } + + /// + /// Temporarily limits the set of index entries that the cursor can walk using + /// to those starting + /// from the current index entry and ending at the index entry that matches the + /// search criteria specified by the search key in that cursor and the specified + /// bound criteria. A search key must have been previously constructed using + /// . + /// Also see . + /// + /// The session to use. + /// The cursor to set the index range on. + /// Index range options. + public static void JetSetIndexRange(JET_SESID sesid, JET_TABLEID tableid, SetIndexRangeGrbit grbit) + { + Api.Check(Impl.JetSetIndexRange(sesid, tableid, grbit)); + } + + /// + /// Computes the intersection between multiple sets of index entries from different secondary + /// indices over the same table. This operation is useful for finding the set of records in a + /// table that match two or more criteria that can be expressed using index ranges. Also see + /// . + /// + /// The session to use. + /// + /// An the index ranges to intersect. The tableids in the ranges + /// must have index ranges set on them. Use + /// to create an index range. + /// + /// + /// The number of index ranges. + /// + /// + /// Returns information about the temporary table containing the intersection results. + /// + /// Intersection options. + public static void JetIntersectIndexes( + JET_SESID sesid, + JET_INDEXRANGE[] ranges, + int numRanges, + out JET_RECORDLIST recordlist, + IntersectIndexesGrbit grbit) + { + Api.Check(Impl.JetIntersectIndexes(sesid, ranges, numRanges, out recordlist, grbit)); + } + + /// + /// Set the current index of a cursor. + /// + /// The session to use. + /// The cursor to set the index on. + /// + /// The name of the index to be selected. If this is null or empty the primary + /// index will be selected. + /// + public static void JetSetCurrentIndex(JET_SESID sesid, JET_TABLEID tableid, string index) + { + Api.Check(Impl.JetSetCurrentIndex(sesid, tableid, index)); + } + + /// + /// Set the current index of a cursor. + /// + /// The session to use. + /// The cursor to set the index on. + /// + /// The name of the index to be selected. If this is null or empty the primary + /// index will be selected. + /// + /// + /// Set index options. + /// + public static void JetSetCurrentIndex2(JET_SESID sesid, JET_TABLEID tableid, string index, SetCurrentIndexGrbit grbit) + { + Api.Check(Impl.JetSetCurrentIndex2(sesid, tableid, index, grbit)); + } + + /// + /// Set the current index of a cursor. + /// + /// The session to use. + /// The cursor to set the index on. + /// + /// The name of the index to be selected. If this is null or empty the primary + /// index will be selected. + /// + /// + /// Set index options. + /// + /// + /// Sequence number of the multi-valued column value which will be used + /// to position the cursor on the new index. This parameter is only used + /// in conjunction with . When + /// this parameter is not present or is set to zero, its value is presumed + /// to be 1. + /// + public static void JetSetCurrentIndex3(JET_SESID sesid, JET_TABLEID tableid, string index, SetCurrentIndexGrbit grbit, int itagSequence) + { + Api.Check(Impl.JetSetCurrentIndex3(sesid, tableid, index, grbit, itagSequence)); + } + + /// + /// Set the current index of a cursor. + /// + /// The session to use. + /// The cursor to set the index on. + /// + /// The name of the index to be selected. If this is null or empty the primary + /// index will be selected. + /// + /// + /// The id of the index to select. This id can be obtained using JetGetIndexInfo + /// or JetGetTableIndexInfo with the option. + /// + /// + /// Set index options. + /// + /// + /// Sequence number of the multi-valued column value which will be used + /// to position the cursor on the new index. This parameter is only used + /// in conjunction with . When + /// this parameter is not present or is set to zero, its value is presumed + /// to be 1. + /// + public static void JetSetCurrentIndex4( + JET_SESID sesid, + JET_TABLEID tableid, + string index, + JET_INDEXID indexid, + SetCurrentIndexGrbit grbit, + int itagSequence) + { + Api.Check(Impl.JetSetCurrentIndex4(sesid, tableid, index, indexid, grbit, itagSequence)); + } + + /// + /// Counts the number of entries in the current index from the current position forward. + /// The current position is included in the count. The count can be greater than the + /// total number of records in the table if the current index is over a multi-valued + /// column and instances of the column have multiple-values. If the table is empty, + /// then 0 will be returned for the count. + /// + /// The session to use. + /// The cursor to count the records in. + /// Returns the number of records. + /// + /// The maximum number of records to count. A value of 0 indicates that the count + /// is unlimited. + /// + public static void JetIndexRecordCount(JET_SESID sesid, JET_TABLEID tableid, out int numRecords, int maxRecordsToCount) + { + if (0 == maxRecordsToCount) + { + // BUG: Older versions of esent (e.g. Windows XP) don't use 0 as an unlimited count, + // instead they simply count zero records (which isn't very useful). To make + // sure this API works as advertised we will increase the maximum record count. + maxRecordsToCount = int.MaxValue; + } + + Api.Check(Impl.JetIndexRecordCount(sesid, tableid, out numRecords, maxRecordsToCount)); + } + + /// + /// Counts the number of entries in the current index from the current position forward. + /// The current position is included in the count. The count can be greater than the + /// total number of records in the table if the current index is over a multi-valued + /// column and instances of the column have multiple-values. If the table is empty, + /// then 0 will be returned for the count. + /// + /// The session to use. + /// The cursor to count the records in. + /// Returns the number of records. + /// + /// The maximum number of records to count. A value of 0 indicates that the count + /// is unlimited. + /// + public static void JetIndexRecordCount2(JET_SESID sesid, JET_TABLEID tableid, out long numRecords, long maxRecordsToCount) + { + if (0 == maxRecordsToCount) + { + // BUG: Older versions of esent (e.g. Windows XP) don't use 0 as an unlimited count, + // instead they simply count zero records (which isn't very useful). To make + // sure this API works as advertised we will increase the maximum record count. + // This will also prevent an overflow as the underlying API works with unsigned + // numbers + maxRecordsToCount = long.MaxValue; + } + + Api.Check(Impl.JetIndexRecordCount2(sesid, tableid, out numRecords, maxRecordsToCount)); + } + + /// + /// Notifies the database engine that the application is scanning the entire + /// index that the cursor is positioned on. Consequently, the methods that + /// are used to access the index data will be tuned to make this scenario as + /// fast as possible. + /// Also see . + /// + /// The session to use. + /// The cursor that will be accessing the data. + /// Reserved for future use. + public static void JetSetTableSequential(JET_SESID sesid, JET_TABLEID tableid, SetTableSequentialGrbit grbit) + { + Api.Check(Impl.JetSetTableSequential(sesid, tableid, grbit)); + } + + /// + /// Notifies the database engine that the application is no longer scanning the + /// entire index the cursor is positioned on. This call reverses a notification + /// sent by . + /// + /// The session to use. + /// The cursor that was accessing the data. + /// Reserved for future use. + public static void JetResetTableSequential(JET_SESID sesid, JET_TABLEID tableid, ResetTableSequentialGrbit grbit) + { + Api.Check(Impl.JetResetTableSequential(sesid, tableid, grbit)); + } + + /// + /// Returns the fractional position of the current record in the current index + /// in the form of a structure. + /// Also see . + /// + /// The session to use. + /// The cursor positioned on the record. + /// Returns the approximate fractional position of the record. + public static void JetGetRecordPosition(JET_SESID sesid, JET_TABLEID tableid, out JET_RECPOS recpos) + { + Api.Check(Impl.JetGetRecordPosition(sesid, tableid, out recpos)); + } + + /// + /// Moves a cursor to a new location that is a fraction of the way through + /// the current index. + /// Also see . + /// + /// The session to use. + /// The cursor to position. + /// The approximate position to move to. + public static void JetGotoPosition(JET_SESID sesid, JET_TABLEID tableid, JET_RECPOS recpos) + { + Api.Check(Impl.JetGotoPosition(sesid, tableid, recpos)); + } + + #endregion + + #region Data Retrieval + + /// + /// Retrieves the bookmark for the record that is associated with the index entry + /// at the current position of a cursor. This bookmark can then be used to + /// reposition that cursor back to the same record using . + /// The bookmark will be no longer than + /// bytes. + /// Also see . + /// + /// The session to use. + /// The cursor to retrieve the bookmark from. + /// Buffer to contain the bookmark. + /// Size of the bookmark buffer. + /// Returns the actual size of the bookmark. + public static void JetGetBookmark(JET_SESID sesid, JET_TABLEID tableid, byte[] bookmark, int bookmarkSize, out int actualBookmarkSize) + { + Api.Check(Impl.JetGetBookmark(sesid, tableid, bookmark, bookmarkSize, out actualBookmarkSize)); + } + + /// + /// Retrieves a special bookmark for the secondary index entry at the + /// current position of a cursor. This bookmark can then be used to + /// efficiently reposition that cursor back to the same index entry + /// using JetGotoSecondaryIndexBookmark. This is most useful when + /// repositioning on a secondary index that contains duplicate keys or + /// that contains multiple index entries for the same record. + /// + /// The session to use. + /// The cursor to retrieve the bookmark from. + /// Output buffer for the secondary key. + /// Size of the secondary key buffer. + /// Returns the size of the secondary key. + /// Output buffer for the primary key. + /// Size of the primary key buffer. + /// Returns the size of the primary key. + /// Options for the call. + public static void JetGetSecondaryIndexBookmark( + JET_SESID sesid, + JET_TABLEID tableid, + byte[] secondaryKey, + int secondaryKeySize, + out int actualSecondaryKeySize, + byte[] primaryKey, + int primaryKeySize, + out int actualPrimaryKeySize, + GetSecondaryIndexBookmarkGrbit grbit) + { + Api.Check( + Impl.JetGetSecondaryIndexBookmark( + sesid, + tableid, + secondaryKey, + secondaryKeySize, + out actualSecondaryKeySize, + primaryKey, + primaryKeySize, + out actualPrimaryKeySize, + grbit)); + } + + /// + /// Retrieves the key for the index entry at the current position of a cursor. + /// Also see . + /// + /// The session to use. + /// The cursor to retrieve the key from. + /// The buffer to retrieve the key into. + /// The size of the buffer. + /// Returns the actual size of the data. + /// Retrieve key options. + public static void JetRetrieveKey(JET_SESID sesid, JET_TABLEID tableid, byte[] data, int dataSize, out int actualDataSize, RetrieveKeyGrbit grbit) + { + Api.Check(Impl.JetRetrieveKey(sesid, tableid, data, dataSize, out actualDataSize, grbit)); + } + + /// + /// Retrieves a single column value from the current record. The record is that + /// record associated with the index entry at the current position of the cursor. + /// Alternatively, this function can retrieve a column from a record being created + /// in the cursor copy buffer. This function can also retrieve column data from an + /// index entry that references the current record. In addition to retrieving the + /// actual column value, JetRetrieveColumn can also be used to retrieve the size + /// of a column, before retrieving the column data itself so that application + /// buffers can be sized appropriately. + /// + /// + /// The RetrieveColumnAs functions provide datatype-specific retrieval functions. + /// + /// The session to use. + /// The cursor to retrieve the column from. + /// The columnid to retrieve. + /// The data buffer to be retrieved into. + /// The size of the data buffer. + /// Returns the actual size of the data buffer. + /// Retrieve column options. + /// + /// If pretinfo is give as NULL then the function behaves as though an itagSequence + /// of 1 and an ibLongValue of 0 (zero) were given. This causes column retrieval to + /// retrieve the first value of a multi-valued column, and to retrieve long data at + /// offset 0 (zero). + /// + /// An ESENT warning code. + public static JET_wrn JetRetrieveColumn(JET_SESID sesid, JET_TABLEID tableid, JET_COLUMNID columnid, byte[] data, int dataSize, out int actualDataSize, RetrieveColumnGrbit grbit, JET_RETINFO retinfo) + { + return Api.JetRetrieveColumn(sesid, tableid, columnid, data, dataSize, 0, out actualDataSize, grbit, retinfo); + } + + /// + /// Retrieves multiple column values from the current record in a + /// single operation. An array of JET_RETRIEVECOLUMN structures is + /// used to describe the set of column values to be retrieved, and + /// to describe output buffers for each column value to be retrieved. + /// + /// The session to use. + /// The cursor to retrieve the data from. + /// + /// An array of one or more objects + /// describing the data to be retrieved. + /// + /// + /// The number of entries in the columns array. + /// + /// + /// If any column retrieved is truncated due to an insufficient + /// length buffer, then the API will return + /// . However other errors + /// JET_wrnColumnNull are returned only in the error field of + /// the object. + /// + public static JET_wrn JetRetrieveColumns(JET_SESID sesid, JET_TABLEID tableid, JET_RETRIEVECOLUMN[] retrievecolumns, int numColumns) + { + if (null == retrievecolumns) + { + throw new ArgumentNullException("retrievecolumns"); + } + + if (numColumns < 0 || numColumns > retrievecolumns.Length) + { + throw new ArgumentOutOfRangeException("numColumns", numColumns, "cannot be negative or greater than retrievecolumns.Length"); + } + + unsafe + { + NATIVE_RETRIEVECOLUMN* nativeretrievecolumns = stackalloc NATIVE_RETRIEVECOLUMN[numColumns]; + + int err = Api.PinColumnsAndRetrieve(sesid, tableid, nativeretrievecolumns, retrievecolumns, numColumns, 0); + for (int i = 0; i < numColumns; ++i) + { + retrievecolumns[i].UpdateFromNativeRetrievecolumn(ref nativeretrievecolumns[i]); + } + + return Api.Check(err); + } + } + + /// + /// Efficiently retrieves a set of columns and their values from the + /// current record of a cursor or the copy buffer of that cursor. The + /// columns and values retrieved can be restricted by a list of + /// column IDs, itagSequence numbers, and other characteristics. This + /// column retrieval API is unique in that it returns information in + /// dynamically allocated memory that is obtained using a + /// user-provided realloc compatible callback. This new flexibility + /// permits the efficient retrieval of column data with specific + /// characteristics (such as size and multiplicity) that are unknown + /// to the caller. This eliminates the need for the use of the discovery + /// modes of JetRetrieveColumn to determine those + /// characteristics in order to setup a final call to + /// JetRetrieveColumn that will successfully retrieve + /// the desired data. + /// + /// The session to use. + /// The cursor to retrieve data from. + /// The numbers of JET_ENUMCOLUMNIDS. + /// + /// An optional array of column IDs, each with an optional array of itagSequence + /// numbers to enumerate. + /// + /// + /// Returns the number of column values retrieved. + /// + /// + /// Returns the enumerated column values. + /// + /// + /// Callback used to allocate memory. + /// + /// + /// Context for the allocation callback. + /// + /// + /// Sets a cap on the amount of data to return from a long text or long + /// binary column. This parameter can be used to prevent the enumeration + /// of an extremely large column value. + /// + /// Retrieve options. + /// A warning or success. + [CLSCompliant(false)] + public static JET_wrn JetEnumerateColumns( + JET_SESID sesid, + JET_TABLEID tableid, + int numColumnids, + JET_ENUMCOLUMNID[] columnids, + out int numColumnValues, + out JET_ENUMCOLUMN[] columnValues, + JET_PFNREALLOC allocator, + IntPtr allocatorContext, + int maxDataSize, + EnumerateColumnsGrbit grbit) + { + return Api.Check( + Impl.JetEnumerateColumns( + sesid, + tableid, + numColumnids, + columnids, + out numColumnValues, + out columnValues, + allocator, + allocatorContext, + maxDataSize, + grbit)); + } + + /// + /// Efficiently retrieves a set of columns and their values from the + /// current record of a cursor or the copy buffer of that cursor. + /// + /// The session to use. + /// The cursor to retrieve data from. + /// Enumerate options. + /// The discovered columns and their values. + /// A warning or success. + public static JET_wrn JetEnumerateColumns( + JET_SESID sesid, + JET_TABLEID tableid, + EnumerateColumnsGrbit grbit, + out IEnumerable enumeratedColumns) + { + return Api.Check( + Impl.JetEnumerateColumns(sesid, tableid, grbit, out enumeratedColumns)); + } + + #endregion + + #region DML + + /// + /// Deletes the current record in a database table. + /// + /// The session that opened the cursor. + /// The cursor on a database table. The current row will be deleted. + public static void JetDelete(JET_SESID sesid, JET_TABLEID tableid) + { + Api.Check(Impl.JetDelete(sesid, tableid)); + } + + /// + /// Prepare a cursor for update. + /// + /// The session which is starting the update. + /// The cursor to start the update for. + /// The type of update to prepare. + public static void JetPrepareUpdate(JET_SESID sesid, JET_TABLEID tableid, JET_prep prep) + { + Api.Check(Impl.JetPrepareUpdate(sesid, tableid, prep)); + } + + /// + /// The JetUpdate function performs an update operation including inserting a new row into + /// a table or updating an existing row. Deleting a table row is performed by calling + /// . + /// + /// The session which started the update. + /// The cursor to update. An update should be prepared. + /// Returns the bookmark of the updated record. This can be null. + /// The size of the bookmark buffer. + /// Returns the actual size of the bookmark. + /// + /// JetUpdate is the final step in performing an insert or an update. The update is begun by + /// calling and then by calling + /// + /// one or more times to set the record state. Finally, + /// is called to complete the update operation. Indexes are updated only by JetUpdate or and not during JetSetColumn. + /// + public static void JetUpdate(JET_SESID sesid, JET_TABLEID tableid, byte[] bookmark, int bookmarkSize, out int actualBookmarkSize) + { + Api.Check(Impl.JetUpdate(sesid, tableid, bookmark, bookmarkSize, out actualBookmarkSize)); + } + + /// + /// The JetUpdate function performs an update operation including inserting a new row into + /// a table or updating an existing row. Deleting a table row is performed by calling + /// . + /// + /// The session which started the update. + /// The cursor to update. An update should be prepared. + /// + /// JetUpdate is the final step in performing an insert or an update. The update is begun by + /// calling and then by calling + /// + /// one or more times to set the record state. Finally, + /// is called to complete the update operation. Indexes are updated only by JetUpdate or and not during JetSetColumn. + /// + public static void JetUpdate(JET_SESID sesid, JET_TABLEID tableid) + { + int ignored; + Api.Check(Impl.JetUpdate(sesid, tableid, null, 0, out ignored)); + } + + /// + /// The JetSetColumn function modifies a single column value in a modified record to be inserted or to + /// update the current record. It can overwrite an existing value, add a new value to a sequence of + /// values in a multi-valued column, remove a value from a sequence of values in a multi-valued column, + /// or update all or part of a long value (a column of type + /// or ). + /// + /// + /// The SetColumn methods provide datatype-specific overrides which may be more efficient. + /// + /// The session which is performing the update. + /// The cursor to update. An update should be prepared. + /// The columnid to set. + /// The data to set. + /// The size of data to set. + /// SetColumn options. + /// Used to specify itag or long-value offset. + /// A warning code. + public static JET_wrn JetSetColumn(JET_SESID sesid, JET_TABLEID tableid, JET_COLUMNID columnid, byte[] data, int dataSize, SetColumnGrbit grbit, JET_SETINFO setinfo) + { + return Api.JetSetColumn(sesid, tableid, columnid, data, dataSize, 0, grbit, setinfo); + } + + /// + /// Allows an application to set multiple column values in a single + /// operation. An array of structures is + /// used to describe the set of column values to be set, and to describe + /// input buffers for each column value to be set. + /// + /// The session to use. + /// The cursor to set the columns on. + /// + /// An array of structures describing the + /// data to set. + /// + /// + /// Number of entries in the setcolumns parameter. + /// + /// + /// A warning. If the last column set has a warning, then + /// this warning will be returned from JetSetColumns itself. + /// + [SecurityPermissionAttribute(SecurityAction.LinkDemand)] + public static JET_wrn JetSetColumns(JET_SESID sesid, JET_TABLEID tableid, JET_SETCOLUMN[] setcolumns, int numColumns) + { + if (null == setcolumns) + { + throw new ArgumentNullException("setcolumns"); + } + + if (numColumns < 0 || numColumns > setcolumns.Length) + { + throw new ArgumentOutOfRangeException("numColumns", numColumns, "cannot be negative or greater than setcolumns.Length"); + } + + using (var gchandles = new GCHandleCollection()) + { + unsafe + { + NATIVE_SETCOLUMN* nativeSetColumns = stackalloc NATIVE_SETCOLUMN[numColumns]; + + // For performance, copy small amounts of data into a local buffer instead + // of pinning the data. + const int BufferSize = 128; + byte* buffer = stackalloc byte[BufferSize]; + int bufferRemaining = BufferSize; + + for (int i = 0; i < numColumns; ++i) + { + setcolumns[i].CheckDataSize(); + nativeSetColumns[i] = setcolumns[i].GetNativeSetcolumn(); + if (null == setcolumns[i].pvData) + { + nativeSetColumns[i].pvData = IntPtr.Zero; + } + else if (bufferRemaining >= setcolumns[i].cbData) + { + nativeSetColumns[i].pvData = new IntPtr(buffer); + Marshal.Copy(setcolumns[i].pvData, setcolumns[i].ibData, nativeSetColumns[i].pvData, setcolumns[i].cbData); + buffer += setcolumns[i].cbData; + bufferRemaining -= setcolumns[i].cbData; + Debug.Assert(bufferRemaining >= 0, "Buffer remaining is negative"); + } + else + { + byte* pinnedBuffer = (byte*)gchandles.Add(setcolumns[i].pvData).ToPointer(); + nativeSetColumns[i].pvData = new IntPtr(pinnedBuffer + setcolumns[i].ibData); + } + } + + int err = Impl.JetSetColumns(sesid, tableid, nativeSetColumns, numColumns); + for (int i = 0; i < numColumns; ++i) + { + setcolumns[i].err = (JET_wrn)nativeSetColumns[i].err; + } + + return Api.Check(err); + } + } + } + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + /// + /// Explicitly reserve the ability to update a row, write lock, or to explicitly prevent a row from + /// being updated by any other session, read lock. Normally, row write locks are acquired implicitly as a + /// result of updating rows. Read locks are usually not required because of record versioning. However, + /// in some cases a transaction may desire to explicitly lock a row to enforce serialization, or to ensure + /// that a subsequent operation will succeed. + /// + /// The session to use. + /// The cursor to use. A lock will be acquired on the current record. + /// Lock options, use this to specify which type of lock to obtain. + public static void JetGetLock(JET_SESID sesid, JET_TABLEID tableid, GetLockGrbit grbit) + { + Api.Check(Impl.JetGetLock(sesid, tableid, grbit)); + } +#endif // !MANAGEDESENT_ON_WSA + + /// + /// Performs an atomic addition operation on one column. This function allows + /// multiple sessions to update the same record concurrently without conflicts. + /// Also see + /// . + /// . + /// + /// + /// The session to use. The session must be in a transaction. + /// + /// The cursor to update. + /// + /// The column to update. This must be an escrow updatable column. + /// + /// The buffer containing the addend. + /// The size of the addend. + /// + /// An output buffer that will recieve the current value of the column. This buffer + /// can be null. + /// + /// The size of the previousValue buffer. + /// Returns the actual size of the previousValue. + /// Escrow update options. + public static void JetEscrowUpdate( + JET_SESID sesid, + JET_TABLEID tableid, + JET_COLUMNID columnid, + byte[] delta, + int deltaSize, + byte[] previousValue, + int previousValueLength, + out int actualPreviousValueLength, + EscrowUpdateGrbit grbit) + { + Api.Check(Impl.JetEscrowUpdate( + sesid, + tableid, + columnid, + delta, + deltaSize, + previousValue, + previousValueLength, + out actualPreviousValueLength, + grbit)); + } + + #endregion + + #region Callbacks + + /// + /// Allows the application to configure the database engine to issue + /// notifications to the application for specific events. These + /// notifications are associated with a specific table and remain in + /// effect only until the instance containing the table is shut down + /// using . + /// + /// The session to use. + /// + /// A cursor opened on the table that the callback should be + /// registered on. + /// + /// + /// The callback reasons for which the application wishes to receive notifications. + /// + /// The callback function. + /// A context that will be given to the callback. + /// + /// A handle that can later be used to cancel the registration of the given + /// callback function using . + /// + public static void JetRegisterCallback( + JET_SESID sesid, + JET_TABLEID tableid, + JET_cbtyp cbtyp, + JET_CALLBACK callback, + IntPtr context, + out JET_HANDLE callbackId) + { + Api.Check(Impl.JetRegisterCallback(sesid, tableid, cbtyp, callback, context, out callbackId)); + } + + /// + /// Configures the database engine to stop issuing notifications to the + /// application as previously requested through + /// . + /// + /// The session to use. + /// + /// A cursor opened on the table that the callback should be + /// registered on. + /// + /// + /// The callback reasons for which the application no longer wishes to receive notifications. + /// + /// + /// The handle of the registered callback that was returned by . + /// + public static void JetUnregisterCallback(JET_SESID sesid, JET_TABLEID tableid, JET_cbtyp cbtyp, JET_HANDLE callbackId) + { + Api.Check(Impl.JetUnregisterCallback(sesid, tableid, cbtyp, callbackId)); + } + + #endregion + + #region Online Maintenance + + /// + /// Starts and stops database defragmentation tasks that improves data + /// organization within a database. + /// + /// The session to use for the call. + /// The database to be defragmented. + /// + /// Under some options defragmentation is performed for the entire database described by the given + /// database ID, and other options (such as ) require + /// the name of the table to defragment. + /// + /// + /// When starting an online defragmentation task, this parameter sets the maximum number of defragmentation + /// passes. When stopping an online defragmentation task, this parameter is set to the number of passes + /// performed. This is not honored in all modes (such as ). + /// + /// + /// When starting an online defragmentation task, this parameter sets + /// the maximum time for defragmentation. When stopping an online + /// defragmentation task, this output buffer is set to the length of + /// time used for defragmentation. This is not honored in all modes (such as ). + /// + /// Defragmentation options. + /// A warning code. + /// + public static JET_wrn JetDefragment( + JET_SESID sesid, + JET_DBID dbid, + string tableName, + ref int passes, + ref int seconds, + DefragGrbit grbit) + { + return Api.Check(Impl.JetDefragment(sesid, dbid, tableName, ref passes, ref seconds, grbit)); + } + + /// + /// Starts and stops database defragmentation tasks that improves data + /// organization within a database. + /// + /// + /// The callback passed to JetDefragment2 can be executed asynchronously. + /// The GC doesn't know that the unmanaged code has a reference to the callback + /// so it is important to make sure the callback isn't collected. + /// + /// The session to use for the call. + /// The database to be defragmented. + /// + /// Under some options defragmentation is performed for the entire database described by the given + /// database ID, and other options (such as ) require + /// the name of the table to defragment. + /// + /// + /// When starting an online defragmentation task, this parameter sets the maximum number of defragmentation + /// passes. When stopping an online defragmentation task, this parameter is set to the number of passes + /// performed. This is not honored in all modes (such as ). + /// + /// + /// When starting an online defragmentation task, this parameter sets + /// the maximum time for defragmentation. When stopping an online + /// defragmentation task, this output buffer is set to the length of + /// time used for defragmentation. This is not honored in all modes (such as ). + /// + /// Callback function that defrag uses to report progress. + /// Defragmentation options. + /// A warning code. + public static JET_wrn JetDefragment2( + JET_SESID sesid, + JET_DBID dbid, + string tableName, + ref int passes, + ref int seconds, + JET_CALLBACK callback, + DefragGrbit grbit) + { + return Api.Check(Impl.JetDefragment2(sesid, dbid, tableName, ref passes, ref seconds, callback, grbit)); + } + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + /// + /// Performs idle cleanup tasks or checks the version store status in ESE. + /// + /// The session to use. + /// A combination of JetIdleGrbit flags. + /// An error code if the operation fails. + public static JET_wrn JetIdle(JET_SESID sesid, IdleGrbit grbit) + { + return Api.Check(Impl.JetIdle(sesid, grbit)); + } +#endif + + #endregion + + #region Misc + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + /// + /// Frees memory that was allocated by a database engine call. + /// + /// + /// This method is internal because we never expose the memory + /// allocated by ESENT to our callers. + /// + /// + /// The buffer allocated by a call to the database engine. + /// is acceptable, and will be ignored. + /// + public static void JetFreeBuffer(IntPtr buffer) + { + Api.Check(Impl.JetFreeBuffer(buffer)); + } +#endif // !MANAGEDESENT_ON_WSA + + #endregion + + #region Error Handling + + /// + /// Throw an exception if the parameter is an ESE error, + /// returns a otherwise. + /// + /// The error code to check. + /// An ESENT warning code (possibly success). + internal static JET_wrn Check(int err) + { + if (err < 0) + { + throw CreateErrorException(err); + } + + return unchecked((JET_wrn)err); + } + + /// + /// Create an error exception that should be thrown for a failure. + /// + /// The error code. + /// A failure exception. + private static Exception CreateErrorException(int err) + { + Debug.Assert(err < 0, "expected a negative error code"); + + JET_err error = unchecked((JET_err)err); + + var handler = Api.HandleError; + if (handler != null) + { + handler(error); + } + + // We didn't throw an exception from the handler, so + // generate the default exception. + return EsentExceptionHelper.JetErrToException(error); + } + + #endregion Error Handling + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/ApiConstants.cs b/WelsonJS.Toolkit/EsentInterop/ApiConstants.cs new file mode 100644 index 0000000..f59b4b3 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/ApiConstants.cs @@ -0,0 +1,64 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + /// + /// Constants for the ESENT API. These don't have to be looked up via + /// system parameters. + /// + public static partial class SystemParameters + { + /// + /// The length of the prefix used to name files used by the database + /// engine. + /// + public const int BaseNameLength = 3; + + /// + /// Maximum size of a table/column/index name. + /// + public const int NameMost = 64; + + /// + /// Maximum size for columns which are not JET_coltyp.LongBinary + /// or JET_coltyp.LongText. + /// + public const int ColumnMost = 255; + + /// + /// Maximum number of columns allowed in a table. + /// + public const int ColumnsMost = 65248; + + /// + /// Maximum number of fixed columns allowed in a table. + /// + public const int ColumnsFixedMost = 127; + + /// + /// Maximum number of variable-length columns allowed + /// in a table. + /// + public const int ColumnsVarMost = 128; + + /// + /// Maximum number of tagged columns allowed in a table. + /// + public const int ColumnsTaggedMost = 64993; + + /// + /// The number of pages that gives the smallest possible + /// temporary database. + /// + public const int PageTempDBSmallest = 14; + + /// + /// The maximum length of a locale name (LOCALE_NAME_MAX_LENGTH from winnt.h). + /// + public const int LocaleNameMaxLength = 85; + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/BoolColumnValue.cs b/WelsonJS.Toolkit/EsentInterop/BoolColumnValue.cs new file mode 100644 index 0000000..7ed40c2 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/BoolColumnValue.cs @@ -0,0 +1,96 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Diagnostics; + + /// + /// A column value. + /// + public class BoolColumnValue : ColumnValueOfStruct + { + /// + /// A boxed true value that can be used by ValueAsObject. + /// + private static readonly object BoxedTrue = true; + + /// + /// A boxed false value that can be used by ValueAsObject. + /// + private static readonly object BoxedFalse = false; + + /// + /// Gets the last set or retrieved value of the column. The + /// value is returned as a generic object. + /// + public override object ValueAsObject + { + get + { + if (!this.Value.HasValue) + { + return null; + } + + return this.Value.Value ? BoxedTrue : BoxedFalse; + } + } + + /// + /// Gets the size of the value in the column. This returns 0 for + /// variable sized columns (i.e. binary and string). + /// + protected override int Size + { + [DebuggerStepThrough] + get { return sizeof(bool); } + } + + /// + /// Recursive SetColumns method for data pinning. This populates the buffer and + /// calls the inherited SetColumns method. + /// + /// The session to use. + /// + /// The table to set the columns in. An update should be prepared. + /// + /// + /// Column values to set. + /// + /// + /// Structures to put the pinned data in. + /// + /// Offset of this object in the array. + /// An error code. + internal override unsafe int SetColumns(JET_SESID sesid, JET_TABLEID tableid, ColumnValue[] columnValues, NATIVE_SETCOLUMN* nativeColumns, int i) + { + byte data = this.Value.GetValueOrDefault() ? (byte)0xFF : (byte)0x00; + return this.SetColumns(sesid, tableid, columnValues, nativeColumns, i, &data, sizeof(byte), this.Value.HasValue); + } + + /// + /// Given data retrieved from ESENT, decode the data and set the value in the ColumnValue object. + /// + /// An array of bytes. + /// The starting position within the bytes. + /// The number of bytes to decode. + /// The error returned from ESENT. + protected override void GetValueFromBytes(byte[] value, int startIndex, int count, int err) + { + if (JET_wrn.ColumnNull == (JET_wrn)err) + { + this.Value = null; + } + else + { + this.CheckDataCount(count); + this.Value = BitConverter.ToBoolean(value, startIndex); + } + } + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/BoxedValueCache.cs b/WelsonJS.Toolkit/EsentInterop/BoxedValueCache.cs new file mode 100644 index 0000000..f2c5b03 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/BoxedValueCache.cs @@ -0,0 +1,51 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + + /// + /// A cache for boxed values. + /// + /// The type of object to cache. + internal static class BoxedValueCache where T : struct, IEquatable + { + /// + /// Number of boxed values to cache. + /// + private const int NumCachedBoxedValues = 257; + + /// + /// Cached boxed values. + /// + private static readonly object[] BoxedValues = new object[NumCachedBoxedValues]; + + /// + /// Gets a boxed version of the value. A cached copy is used if possible. + /// + /// The value to box. + /// A boxed version of the value. + public static object GetBoxedValue(T? value) + { + if (!value.HasValue) + { + return null; + } + + T valueToBox = value.Value; + int index = (valueToBox.GetHashCode() & 0x7fffffff) % NumCachedBoxedValues; + object boxedValue = BoxedValues[index]; + if (null == boxedValue || !((T)boxedValue).Equals(valueToBox)) + { + boxedValue = valueToBox; + BoxedValues[index] = boxedValue; + } + + return boxedValue; + } + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/ByteColumnValue.cs b/WelsonJS.Toolkit/EsentInterop/ByteColumnValue.cs new file mode 100644 index 0000000..05d0e90 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/ByteColumnValue.cs @@ -0,0 +1,68 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System.Diagnostics; + + /// + /// A column value. + /// + public class ByteColumnValue : ColumnValueOfStruct + { + /// + /// Gets the size of the value in the column. This returns 0 for + /// variable sized columns (i.e. binary and string). + /// + protected override int Size + { + [DebuggerStepThrough] + get { return sizeof(byte); } + } + + /// + /// Recursive SetColumns method for data pinning. This populates the buffer and + /// calls the inherited SetColumns method. + /// + /// The session to use. + /// + /// The table to set the columns in. An update should be prepared. + /// + /// + /// Column values to set. + /// + /// + /// Structures to put the pinned data in. + /// + /// Offset of this object in the array. + /// An error code. + internal override unsafe int SetColumns(JET_SESID sesid, JET_TABLEID tableid, ColumnValue[] columnValues, NATIVE_SETCOLUMN* nativeColumns, int i) + { + var data = this.Value.GetValueOrDefault(); + return this.SetColumns(sesid, tableid, columnValues, nativeColumns, i, &data, sizeof(byte), this.Value.HasValue); + } + + /// + /// Given data retrieved from ESENT, decode the data and set the value in the ColumnValue object. + /// + /// An array of bytes. + /// The starting position within the bytes. + /// The number of bytes to decode. + /// The error returned from ESENT. + protected override void GetValueFromBytes(byte[] value, int startIndex, int count, int err) + { + if (JET_wrn.ColumnNull == (JET_wrn)err) + { + this.Value = null; + } + else + { + this.CheckDataCount(count); + this.Value = value[startIndex]; + } + } + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/BytesColumnValue.cs b/WelsonJS.Toolkit/EsentInterop/BytesColumnValue.cs new file mode 100644 index 0000000..384564e --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/BytesColumnValue.cs @@ -0,0 +1,136 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Diagnostics; + + /// + /// A byte array column value. + /// + public class BytesColumnValue : ColumnValue + { + /// + /// Internal value. + /// + private byte[] internalValue; + + /// + /// Gets the last set or retrieved value of the column. The + /// value is returned as a generic object. + /// + public override object ValueAsObject + { + [DebuggerStepThrough] + get { return this.Value; } + } + + /// + /// Gets or sets the value of the column. Use to update a + /// record with the column value. + /// + public byte[] Value + { + get + { + return this.internalValue; + } + + set + { + this.internalValue = value; + this.Error = value == null ? JET_wrn.ColumnNull : JET_wrn.Success; + } + } + + /// + /// Gets the byte length of a column value, which is zero if column is null, otherwise + /// matches the actual length of the byte array. + /// + public override int Length + { + get { return this.Value != null ? this.Value.Length : 0; } + } + + /// + /// Gets the size of the value in the column. This returns 0 for + /// variable sized columns (i.e. binary and string). + /// + protected override int Size + { + [DebuggerStepThrough] + get { return 0; } + } + + /// + /// Returns a that represents the current . + /// + /// + /// A that represents the current . + /// + public override string ToString() + { + if (null == this.Value) + { + return string.Empty; + } + + return BitConverter.ToString(this.Value, 0, Math.Min(this.Value.Length, 16)); + } + + /// + /// Recursive SetColumns method for data pinning. This populates the buffer and + /// calls the inherited SetColumns method. + /// + /// The session to use. + /// + /// The table to set the columns in. An update should be prepared. + /// + /// + /// Column values to set. + /// + /// + /// Structures to put the pinned data in. + /// + /// Offset of this object in the array. + /// An error code. + internal override unsafe int SetColumns(JET_SESID sesid, JET_TABLEID tableid, ColumnValue[] columnValues, NATIVE_SETCOLUMN* nativeColumns, int i) + { + if (null != this.Value) + { + fixed (void* buffer = this.Value) + { + return this.SetColumns( + sesid, tableid, columnValues, nativeColumns, i, buffer, this.Value.Length, true); + } + } + + return this.SetColumns(sesid, tableid, columnValues, nativeColumns, i, null, 0, false); + } + + /// + /// Given data retrieved from ESENT, decode the data and set the value in the ColumnValue object. + /// + /// An array of bytes. + /// The starting position within the bytes. + /// The number of bytes to decode. + /// The error returned from ESENT. + protected override void GetValueFromBytes(byte[] value, int startIndex, int count, int err) + { + if (JET_wrn.ColumnNull == (JET_wrn)err) + { + this.Value = null; + } + else + { + var copiedValue = new byte[count]; + Buffer.BlockCopy(value, startIndex, copiedValue, 0, count); + this.Value = copiedValue; + } + } + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/Caches.cs b/WelsonJS.Toolkit/EsentInterop/Caches.cs new file mode 100644 index 0000000..ee596c2 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/Caches.cs @@ -0,0 +1,79 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System.Diagnostics; + + /// + /// Static class containing MemoryCaches for different ESENT buffers. + /// Use these to avoid memory allocations when the memory will be + /// used for a brief time. + /// + internal static class Caches + { + /// + /// The maximum key size that any version of ESENT can have for + /// any page size. This is also the maximum bookmark size. + /// + private const int KeyMostMost = 2000; + + /// + /// Reserve 1 extra space for keys made with prefix or wildcard. + /// + private const int LimitKeyMostMost = KeyMostMost + 1; + + /// + /// The maximum number of buffers we want in a cache. + /// + private const int MaxBuffers = 16; + + /// + /// Cached buffers for columns. + /// + private static readonly MemoryCache TheColumnCache = new MemoryCache(128 * 1024, MaxBuffers); + + /// + /// Cached buffers for keys and bookmarks. + /// + private static readonly MemoryCache TheBookmarkCache = new MemoryCache(LimitKeyMostMost, MaxBuffers); + + /// + /// Cached buffers for keys and bookmarks. + /// + private static readonly MemoryCache TheSecondaryBookmarkCache = new MemoryCache(LimitKeyMostMost, MaxBuffers); + + /// + /// Gets the cached buffers for columns. + /// + public static MemoryCache ColumnCache + { + [DebuggerStepThrough] + get { return TheColumnCache; } + } + + /// + /// Gets the cached buffers for keys and bookmarks. + /// + public static MemoryCache BookmarkCache + { + [DebuggerStepThrough] + get { return TheBookmarkCache; } + } + + /// + /// Gets the cached buffers for keys and secondary bookmarks. + /// + public static MemoryCache SecondaryBookmarkCache + { + [DebuggerStepThrough] + get + { + return TheSecondaryBookmarkCache; + } + } + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/CallbackWrappers.cs b/WelsonJS.Toolkit/EsentInterop/CallbackWrappers.cs new file mode 100644 index 0000000..c04c581 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/CallbackWrappers.cs @@ -0,0 +1,98 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System.Collections.Generic; + + /// + /// + /// A collection of wrapped callbacks. This is used when the wrapped callback + /// can be garbage collected. The wrappers should be removed from the collection + /// when the callback is collected. + /// + /// + /// Removing the wrappers can lead to crashes. In this case we trust + /// the client code to keep its callback alive until ESENT doesn't need it any + /// more. Once the wrapped callback is garbage collected we allow the wrapper + /// to be collected as well. If ESENT subsequently uses the callback there will + /// be a crash. + /// + /// + /// The reason this is hard to deal with is that the lifetime of a JET_CALLBACK + /// isn't very clear. Table callbacks can stick around until the table meta-data + /// is purged, while a JetDefragment callback can be used until defrag ends. On + /// the other hand, keeping the callback wrapper alive indefinitely would lead + /// to unbounded memory use. + /// + /// + internal sealed class CallbackWrappers + { + /// + /// Used to synchronize access to this object. + /// + private readonly object lockObject = new object(); + + /// + /// A list of the wrapped callbacks. + /// + private readonly List callbackWrappers = new List(); + + /// + /// Wrap a callback and returns its wrapper. If the callback is + /// already wrapped then the existing wrapper is returned. + /// + /// The callback to add. + /// The callback wrapper for the callback. + public JetCallbackWrapper Add(JET_CALLBACK callback) + { + lock (this.lockObject) + { + JetCallbackWrapper wrapper; + if (!this.TryFindWrapperFor(callback, out wrapper)) + { + wrapper = new JetCallbackWrapper(callback); + this.callbackWrappers.Add(wrapper); + } + + return wrapper; + } + } + + /// + /// Go through the collection of callback wrappers and remove any dead callbacks. + /// + public void Collect() + { + lock (this.lockObject) + { + this.callbackWrappers.RemoveAll(wrapper => !wrapper.IsAlive); + } + } + + /// + /// Look in the list of callback wrappers to see if there is already an entry for + /// this callback. + /// + /// The callback to look for. + /// Returns the wrapper, if found. + /// True if a wrapper was found, false otherwise. + private bool TryFindWrapperFor(JET_CALLBACK callback, out JetCallbackWrapper wrapper) + { + foreach (JetCallbackWrapper w in this.callbackWrappers) + { + if (w.IsWrapping(callback)) + { + wrapper = w; + return true; + } + } + + wrapper = null; + return false; + } + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/ColumnInfo.cs b/WelsonJS.Toolkit/EsentInterop/ColumnInfo.cs new file mode 100644 index 0000000..6edb882 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/ColumnInfo.cs @@ -0,0 +1,101 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Collections.Generic; + using System.Collections.ObjectModel; + + /// + /// Information about one Esent column. This is not an interop + /// class, but is used by the meta-data helper methods. + /// + public sealed class ColumnInfo + { + /// + /// The default value of the column. + /// + private readonly ReadOnlyCollection defaultValue; + + /// + /// Initializes a new instance of the ColumnInfo class. + /// + /// Name of the column. + /// ID of the column. + /// Type of the column. + /// Codepage of the column. + /// Maximum length of the column. + /// Column default value. + /// Column option. + internal ColumnInfo( + string name, + JET_COLUMNID columnid, + JET_coltyp coltyp, + JET_CP cp, + int maxLength, + byte[] defaultValue, + ColumndefGrbit grbit) + { + this.Name = name; + this.Columnid = columnid; + this.Coltyp = coltyp; + this.Cp = cp; + this.MaxLength = maxLength; + this.defaultValue = (null == defaultValue) ? null : new ReadOnlyCollection(defaultValue); + this.Grbit = grbit; + } + + /// + /// Gets the name of the column. + /// + public string Name { get; private set; } + + /// + /// Gets the ID of the column. + /// + public JET_COLUMNID Columnid { get; private set; } + + /// + /// Gets the type of the column. + /// + public JET_coltyp Coltyp { get; private set; } + + /// + /// Gets the code page of the column. + /// + public JET_CP Cp { get; private set; } + + /// + /// Gets the maximum length of the column. + /// + public int MaxLength { get; private set; } + + /// + /// Gets the default value of the column. + /// + public IList DefaultValue + { + get { return this.defaultValue; } + } + + /// + /// Gets the column options. + /// + public ColumndefGrbit Grbit { get; private set; } + + /// + /// Returns a that represents the current . + /// + /// + /// A that represents the current . + /// + public override string ToString() + { + return this.Name; + } + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/ColumnInfoEnumerator.cs b/WelsonJS.Toolkit/EsentInterop/ColumnInfoEnumerator.cs new file mode 100644 index 0000000..d294b3c --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/ColumnInfoEnumerator.cs @@ -0,0 +1,78 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System.Text; + using Microsoft.Isam.Esent.Interop.Implementation; + + /// + /// Base class for enumerators that return ColumnInfo objects. Subclasses differ + /// by how they open the table. + /// + internal abstract class ColumnInfoEnumerator : TableEnumerator + { + /// + /// Initializes a new instance of the class. + /// + /// + /// The session to use. + /// + protected ColumnInfoEnumerator(JET_SESID sesid) : base(sesid) + { + } + + /// + /// Gets or sets the columnlist used to retrieve data. + /// + protected JET_COLUMNLIST Columnlist { get; set; } + + /// + /// Gets the entry the cursor is currently positioned on. + /// + /// The entry the cursor is currently positioned on. + protected override ColumnInfo GetCurrent() + { + return GetColumnInfoFromColumnlist(this.Sesid, this.Columnlist); + } + + /// + /// Create a ColumnInfo object from the data in the current JET_COLUMNLIST entry. + /// + /// The session to use. + /// The columnlist to take the data from. + /// A ColumnInfo object containing the information from that record. + private static ColumnInfo GetColumnInfoFromColumnlist(JET_SESID sesid, JET_COLUMNLIST columnlist) + { + // As of Sep 2015, JetGetColumnInfoW is only called for Win8+. Even though Unicode should have + // worked in Win7, it wasn't reliable until Win8. + Encoding encodingOfTextColumns = EsentVersion.SupportsWindows8Features ? Encoding.Unicode : LibraryHelpers.EncodingASCII; + + string name = Api.RetrieveColumnAsString( + sesid, + columnlist.tableid, + columnlist.columnidcolumnname, + encodingOfTextColumns, + RetrieveColumnGrbit.None); + name = StringCache.TryToIntern(name); + var columnidValue = (uint)Api.RetrieveColumnAsUInt32(sesid, columnlist.tableid, columnlist.columnidcolumnid); + var coltypValue = (uint)Api.RetrieveColumnAsUInt32(sesid, columnlist.tableid, columnlist.columnidcoltyp); + uint codepageValue = (ushort)Api.RetrieveColumnAsUInt16(sesid, columnlist.tableid, columnlist.columnidCp); + var maxLength = (uint)Api.RetrieveColumnAsUInt32(sesid, columnlist.tableid, columnlist.columnidcbMax); + byte[] defaultValue = Api.RetrieveColumn(sesid, columnlist.tableid, columnlist.columnidDefault); + var grbitValue = (uint)Api.RetrieveColumnAsUInt32(sesid, columnlist.tableid, columnlist.columnidgrbit); + + return new ColumnInfo( + name, + new JET_COLUMNID { Value = columnidValue }, + (JET_coltyp)coltypValue, + (JET_CP)codepageValue, + unchecked((int)maxLength), + defaultValue, + (ColumndefGrbit)grbitValue); + } + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/ColumnStream.cs b/WelsonJS.Toolkit/EsentInterop/ColumnStream.cs new file mode 100644 index 0000000..1138b4f --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/ColumnStream.cs @@ -0,0 +1,357 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Collections.Generic; + using System.Diagnostics; + using System.Diagnostics.CodeAnalysis; + using System.Globalization; + using System.IO; + + /// + /// This class provides a streaming interface to a long-value column + /// (i.e. a column of type or + /// ). + /// + [SuppressMessage("Microsoft.StyleCop.CSharp.NamingRules", + "SA1305:FieldNamesMustNotUseHungarianNotation", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + public class ColumnStream : Stream + { + /// + /// The size of the biggest long-value column ESENT supports. + /// + private const int MaxLongValueSize = 0x7fffffff; + + /// + /// Session to use. + /// + private readonly JET_SESID sesid; + + /// + /// Cursor to use. + /// + private readonly JET_TABLEID tableid; + + /// + /// Columnid to use. + /// + private readonly JET_COLUMNID columnid; + + /// + /// Current LV offset. + /// + private int ibLongValue; + + /// + /// Initializes a new instance of the ColumnStream class. + /// + /// The session to use. + /// The cursor to use. + /// The columnid of the column to set/retrieve data from. + public ColumnStream(JET_SESID sesid, JET_TABLEID tableid, JET_COLUMNID columnid) + { + // In some cases we rely on Int32 arithmetic overflow checking to catch + // errors, which assumes that a long-value can store Int32.MaxValue bytes. + Debug.Assert(MaxLongValueSize == int.MaxValue, "Expected maximum long value size to be Int32.MaxValue"); + + this.sesid = sesid; + this.tableid = tableid; + this.columnid = columnid; + this.Itag = 1; + } + + /// + /// Gets or sets the itag of the column. + /// + public int Itag { get; set; } + + /// + /// Gets a value indicating whether the stream supports reading. + /// + public override bool CanRead + { + [DebuggerStepThrough] + get { return true; } + } + + /// + /// Gets a value indicating whether the stream supports writing. + /// + public override bool CanWrite + { + [DebuggerStepThrough] + get { return true; } + } + + /// + /// Gets a value indicating whether the stream supports seeking. + /// + public override bool CanSeek + { + [DebuggerStepThrough] + get { return true; } + } + + /// + /// Gets or sets the current position in the stream. + /// + public override long Position + { + [DebuggerStepThrough] + get + { + return this.ibLongValue; + } + + set + { + if (value < 0 || value > MaxLongValueSize) + { + throw new ArgumentOutOfRangeException("value", value, "A long-value offset has to be between 0 and 0x7fffffff bytes"); + } + + this.ibLongValue = checked((int)value); + } + } + + /// + /// Gets the current length of the stream. + /// + public override long Length + { + get + { + int size; + var retinfo = new JET_RETINFO { itagSequence = this.Itag, ibLongValue = 0 }; + Api.JetRetrieveColumn(this.sesid, this.tableid, this.columnid, null, 0, out size, RetrieveGrbit, retinfo); + return size; + } + } + + /// + /// Gets the options that should be used with JetRetrieveColumn. + /// + private static RetrieveColumnGrbit RetrieveGrbit + { + [DebuggerStepThrough] + get + { + // Always use the RetrieveCopy options. This makes the ColumnStream work + // well when setting a column. If we don't always use RetrieveCopy then + // things like seeking from the end of a column might not work properly. + return RetrieveColumnGrbit.RetrieveCopy; + } + } + + /// + /// Returns a that represents the current . + /// + /// + /// A that represents the current . + /// + public override string ToString() + { + return string.Format(CultureInfo.InvariantCulture, "ColumnStream(0x{0:x}:{1})", this.columnid.Value, this.Itag); + } + + /// + /// Flush the stream. + /// + public override void Flush() + { + // nothing is required + } + + /// + /// Writes a sequence of bytes to the current stream and advances the current + /// position within this stream by the number of bytes written. + /// + /// The buffer to write from. + /// The offset in the buffer to write. + /// The number of bytes to write. + public override void Write(byte[] buffer, int offset, int count) + { + CheckBufferArguments(buffer, offset, count); + + int length = checked((int)this.Length); + JET_SETINFO setinfo; + + int newIbLongValue = checked(this.ibLongValue + count); + + // If our current position is beyond the end of the LV extend + // the LV to the write point + if (this.ibLongValue > length) + { + setinfo = new JET_SETINFO { itagSequence = this.Itag }; + Api.JetSetColumn(this.sesid, this.tableid, this.columnid, null, this.ibLongValue, SetColumnGrbit.SizeLV, setinfo); + length = this.ibLongValue; + } + + SetColumnGrbit grbit; + if (this.ibLongValue == length) + { + grbit = SetColumnGrbit.AppendLV; + } + else if (newIbLongValue >= length) + { + grbit = SetColumnGrbit.OverwriteLV | SetColumnGrbit.SizeLV; + } + else + { + grbit = SetColumnGrbit.OverwriteLV; + } + + setinfo = new JET_SETINFO { itagSequence = this.Itag, ibLongValue = this.ibLongValue }; + Api.JetSetColumn(this.sesid, this.tableid, this.columnid, buffer, count, offset, grbit, setinfo); + + checked + { + this.ibLongValue += count; + } + } + + /// + /// Reads a sequence of bytes from the current stream and advances the + /// position within the stream by the number of bytes read. + /// + /// The buffer to read into. + /// The offset in the buffer to read into. + /// The number of bytes to read. + /// The number of bytes read into the buffer. + public override int Read(byte[] buffer, int offset, int count) + { + CheckBufferArguments(buffer, offset, count); + + if (this.ibLongValue >= this.Length) + { + return 0; + } + + int length; + var retinfo = new JET_RETINFO { itagSequence = this.Itag, ibLongValue = this.ibLongValue }; + Api.JetRetrieveColumn(this.sesid, this.tableid, this.columnid, buffer, count, offset, out length, RetrieveGrbit, retinfo); + int bytesRead = Math.Min(length, count); + + checked + { + this.ibLongValue += bytesRead; + } + + return bytesRead; + } + + /// + /// Sets the length of the stream. + /// + /// The desired length, in bytes. + public override void SetLength(long value) + { + if (value > MaxLongValueSize || value < 0) + { + throw new ArgumentOutOfRangeException("value", value, "A LongValueStream cannot be longer than 0x7FFFFFF or less than 0 bytes"); + } + + if (value < this.Length && value > 0) + { + // BUG: Shrinking the column multiple times and then growing it can sometimes hit an unpleasant + // ESENT defect which causes a hang. To make sure we never have that problem we read out the data, + // and insert into a new long-value. This is not efficient. + var data = new byte[value]; + var retinfo = new JET_RETINFO { itagSequence = this.Itag, ibLongValue = 0 }; + int actualDataSize; + Api.JetRetrieveColumn( + this.sesid, + this.tableid, + this.columnid, + data, + data.Length, + out actualDataSize, + RetrieveGrbit, + retinfo); + + var setinfo = new JET_SETINFO { itagSequence = this.Itag }; + Api.JetSetColumn(this.sesid, this.tableid, this.columnid, data, data.Length, SetColumnGrbit.None, setinfo); + } + else + { + var setinfo = new JET_SETINFO { itagSequence = this.Itag }; + SetColumnGrbit grbit = (0 == value) ? SetColumnGrbit.ZeroLength : SetColumnGrbit.SizeLV; + Api.JetSetColumn(this.sesid, this.tableid, this.columnid, null, checked((int)value), grbit, setinfo); + } + + // Setting the length moves the offset back to the end of the data + if (this.ibLongValue > value) + { + this.ibLongValue = checked((int)value); + } + } + + /// + /// Sets the position in the current stream. + /// + /// Byte offset relative to the origin parameter. + /// A SeekOrigin indicating the reference point for the new position. + /// The new position in the current stream. + public override long Seek(long offset, SeekOrigin origin) + { + long newOffset; + switch (origin) + { + case SeekOrigin.Begin: + newOffset = offset; + break; + case SeekOrigin.End: + newOffset = checked(this.Length + offset); + break; + case SeekOrigin.Current: + newOffset = checked(this.ibLongValue + offset); + break; + default: + throw new ArgumentOutOfRangeException("origin", origin, "Unknown origin"); + } + + if (newOffset < 0 || newOffset > MaxLongValueSize) + { + throw new ArgumentOutOfRangeException("offset", offset, "invalid offset/origin combination"); + } + + this.ibLongValue = checked((int)newOffset); + return this.ibLongValue; + } + + /// + /// Check the buffer arguments given to Read/Write . + /// + /// The buffer. + /// The offset in the buffer to read/write to. + /// The number of bytes to read/write. + private static void CheckBufferArguments(ICollection buffer, int offset, int count) + { + if (null == buffer) + { + throw new ArgumentNullException("buffer"); + } + + if (offset < 0) + { + throw new ArgumentOutOfRangeException("offset", offset, "cannot be negative"); + } + + if (count < 0) + { + throw new ArgumentOutOfRangeException("count", count, "cannot be negative"); + } + + if (checked(buffer.Count - offset) < count) + { + throw new ArgumentOutOfRangeException("count", count, "cannot be larger than the size of the buffer"); + } + } + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/ColumnValue.cs b/WelsonJS.Toolkit/EsentInterop/ColumnValue.cs new file mode 100644 index 0000000..be95060 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/ColumnValue.cs @@ -0,0 +1,382 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Collections.Generic; + using System.Diagnostics; + using System.Globalization; + + /// + /// Base class for objects that represent a column value to be set. + /// + public abstract partial class ColumnValue + { + /// + /// Internal grbit. + /// + private RetrieveColumnGrbit grbit; + + /// + /// Initializes a new instance of the ColumnValue class. + /// + protected ColumnValue() + { + this.ItagSequence = 1; + } + + /// + /// Gets or sets the columnid to be set or retrieved. + /// + public JET_COLUMNID Columnid { get; set; } + + /// + /// Gets the last set or retrieved value of the column. The + /// value is returned as a generic object. + /// + public abstract object ValueAsObject { get; } + + /// + /// Gets or sets column update options. + /// + public SetColumnGrbit SetGrbit { get; set; } + + /// + /// Gets or sets column retrieval options. + /// + public RetrieveColumnGrbit RetrieveGrbit + { + get + { + return this.grbit; + } + + set + { + this.ValidateRetrieveGrbit(value); + this.grbit = value; + } + } + + /// + /// Gets or sets the column itag sequence. + /// + public int ItagSequence { get; set; } + + /// + /// Gets the warning generated by retrieving or setting this column. + /// + public JET_wrn Error { get; internal set; } + + /// + /// Gets the byte length of a column value, which is zero if column is null, otherwise + /// it matches the Size for fixed-size columns and represent the actual value byte + /// length for variable sized columns (i.e. binary and string). For strings the length + /// is determined in assumption two bytes per character. + /// + public abstract int Length { get; } + + /// + /// Gets the size of the value in the column. This returns 0 for + /// variable sized columns (i.e. binary and string). + /// + protected abstract int Size { get; } + + /// + /// Returns a that represents the current . + /// + /// + /// A that represents the current . + /// + public abstract override string ToString(); + + /// + /// Recursive RetrieveColumns method for data pinning. This should pin a buffer and + /// call the inherited RetrieveColumns method. + /// + /// The session to use. + /// + /// The table to retrieve the columns from. + /// + /// + /// Column values to retrieve. + /// + internal static void RetrieveColumns(JET_SESID sesid, JET_TABLEID tableid, ColumnValue[] columnValues) + { + const int MaxColumnValues = 1024; + if (columnValues.Length > MaxColumnValues) + { + throw new ArgumentOutOfRangeException("columnValues", columnValues.Length, "Too many column values"); + } + + unsafe + { + byte[] buffer = null; + NATIVE_RETRIEVECOLUMN* nativeRetrievecolumns = stackalloc NATIVE_RETRIEVECOLUMN[columnValues.Length]; + + try + { + buffer = Caches.ColumnCache.Allocate(); + Debug.Assert(MaxColumnValues * 16 < buffer.Length, "Maximum size of fixed columns could exceed buffer size"); + + fixed (byte* pinnedBuffer = buffer) + { + byte* currentBuffer = pinnedBuffer; + int numVariableLengthColumns = columnValues.Length; + + // First the fixed-size columns + for (int i = 0; i < columnValues.Length; ++i) + { + if (0 != columnValues[i].Size) + { + columnValues[i].MakeNativeRetrieveColumn(ref nativeRetrievecolumns[i]); + nativeRetrievecolumns[i].pvData = new IntPtr(currentBuffer); + nativeRetrievecolumns[i].cbData = checked((uint)columnValues[i].Size); + + currentBuffer += nativeRetrievecolumns[i].cbData; + Debug.Assert(currentBuffer <= pinnedBuffer + buffer.Length, "Moved past end of pinned buffer"); + + numVariableLengthColumns--; + } + } + + // Now the variable-length columns + if (numVariableLengthColumns > 0) + { + int bufferUsed = checked((int)(currentBuffer - pinnedBuffer)); + int bufferRemaining = checked(buffer.Length - bufferUsed); + int bufferPerColumn = bufferRemaining / numVariableLengthColumns; + Debug.Assert(bufferPerColumn > 0, "Not enough buffer left to retrieve variable length columns"); + + // Now the variable-size columns + for (int i = 0; i < columnValues.Length; ++i) + { + if (0 == columnValues[i].Size) + { + columnValues[i].MakeNativeRetrieveColumn(ref nativeRetrievecolumns[i]); + nativeRetrievecolumns[i].pvData = new IntPtr(currentBuffer); + nativeRetrievecolumns[i].cbData = checked((uint)bufferPerColumn); + currentBuffer += nativeRetrievecolumns[i].cbData; + Debug.Assert(currentBuffer <= pinnedBuffer + buffer.Length, "Moved past end of pinned buffer"); + } + } + } + + // Retrieve the columns + Api.Check(Api.Impl.JetRetrieveColumns(sesid, tableid, nativeRetrievecolumns, columnValues.Length)); + + // Propagate the warnings and output. + for (int i = 0; i < columnValues.Length; ++i) + { + columnValues[i].Error = (JET_wrn)nativeRetrievecolumns[i].err; + columnValues[i].ItagSequence = (int)nativeRetrievecolumns[i].itagSequence; + } + + // Now parse out the columns that were retrieved successfully + for (int i = 0; i < columnValues.Length; ++i) + { + if (nativeRetrievecolumns[i].err != (int)JET_wrn.BufferTruncated) + { + byte* columnBuffer = (byte*)nativeRetrievecolumns[i].pvData; + int startIndex = checked((int)(columnBuffer - pinnedBuffer)); + columnValues[i].GetValueFromBytes( + buffer, + startIndex, + checked((int)nativeRetrievecolumns[i].cbActual), + nativeRetrievecolumns[i].err); + } + } + } + + // Finally retrieve the buffers where the columns weren't large enough. + RetrieveTruncatedBuffers(sesid, tableid, columnValues, nativeRetrievecolumns); + } + finally + { + if (buffer != null) + { + Caches.ColumnCache.Free(ref buffer); + } + } + } + } + + /// + /// Recursive SetColumns method for data pinning. This should populate the buffer and + /// call the inherited SetColumns method. + /// + /// The session to use. + /// + /// The table to set the columns in. An update should be prepared. + /// + /// + /// Column values to set. + /// + /// + /// Structures to put the pinned data in. + /// + /// Offset of this object in the array. + /// An error code. + internal abstract unsafe int SetColumns(JET_SESID sesid, JET_TABLEID tableid, ColumnValue[] columnValues, NATIVE_SETCOLUMN* nativeColumns, int i); + + /// + /// Recursive SetColumns function used to pin data. + /// + /// The session to use. + /// + /// The table to set the columns in. An update should be prepared. + /// + /// + /// Column values to set. + /// + /// + /// Structures to put the pinned data in. + /// + /// Offset of this object in the array. + /// The buffer for this object. + /// Size of the buffer for ths object. + /// True if this object is non null. + /// An error code. + /// + /// This is marked as internal because it uses the NATIVE_SETCOLUMN type + /// which is also marked as internal. It should be treated as a protected + /// method though. + /// + internal unsafe int SetColumns( + JET_SESID sesid, + JET_TABLEID tableid, + ColumnValue[] columnValues, + NATIVE_SETCOLUMN* nativeColumns, + int i, + void* buffer, + int bufferSize, + bool hasValue) + { + Debug.Assert(this == columnValues[i], "SetColumns should be called on the current object"); + this.MakeNativeSetColumn(ref nativeColumns[i]); + + if (hasValue) + { + nativeColumns[i].cbData = checked((uint)bufferSize); + nativeColumns[i].pvData = new IntPtr(buffer); + if (0 == bufferSize) + { + nativeColumns[i].grbit |= (uint)SetColumnGrbit.ZeroLength; + } + } + + int err = i == columnValues.Length - 1 + ? Api.Impl.JetSetColumns(sesid, tableid, nativeColumns, columnValues.Length) + : columnValues[i + 1].SetColumns(sesid, tableid, columnValues, nativeColumns, i + 1); + + this.Error = (JET_wrn)nativeColumns[i].err; + return err; + } + + /// + /// Given data retrieved from ESENT, decode the data and set the value in the ColumnValue object. + /// + /// An array of bytes. + /// The starting position within the bytes. + /// The number of bytes to decode. + /// The error returned from ESENT. + protected abstract void GetValueFromBytes(byte[] value, int startIndex, int count, int err); + + /// + /// Validation for the requested retrieve options for the column. + /// + /// The retrieve options to validate. + protected virtual void ValidateRetrieveGrbit(RetrieveColumnGrbit grbit) + { + // We cannot support this request when there is no way to indicate that a column reference is returned. + if ((grbit & (RetrieveColumnGrbit)0x00020000) != 0) // UnpublishedGrbits.RetrieveAsRefIfNotInRecord + { + throw new EsentInvalidGrbitException(); + } + } + + /// + /// Retrieve the value for columns whose buffers were truncated. + /// + /// The session to use. + /// The table to use. + /// The column values. + /// + /// The native retrieve columns that match the column values. + /// + private static unsafe void RetrieveTruncatedBuffers(JET_SESID sesid, JET_TABLEID tableid, ColumnValue[] columnValues, NATIVE_RETRIEVECOLUMN* nativeRetrievecolumns) + { + for (int i = 0; i < columnValues.Length; ++i) + { + if (nativeRetrievecolumns[i].err == (int)JET_wrn.BufferTruncated) + { + var buffer = new byte[nativeRetrievecolumns[i].cbActual]; + int actualSize; + int err; + var retinfo = new JET_RETINFO { itagSequence = columnValues[i].ItagSequence }; + + // Pin the buffer and retrieve the data + fixed (byte* pinnedBuffer = buffer) + { + err = Api.Impl.JetRetrieveColumn( + sesid, + tableid, + columnValues[i].Columnid, + new IntPtr(pinnedBuffer), + buffer.Length, + out actualSize, + columnValues[i].RetrieveGrbit, + retinfo); + } + + if (JET_wrn.BufferTruncated == (JET_wrn)err) + { + string error = string.Format( + CultureInfo.CurrentCulture, + "Column size changed from {0} to {1}. The record was probably updated by another thread.", + buffer.Length, + actualSize); + Trace.TraceError(error); + throw new InvalidOperationException(error); + } + + // Throw errors, but put warnings in the structure + Api.Check(err); + columnValues[i].Error = (JET_wrn)err; + + // For BytesColumnValue this will copy the data to a new array. + // If this situation becomes common we should simply use the array. + columnValues[i].GetValueFromBytes(buffer, 0, actualSize, err); + } + } + } + + /// + /// Create a native SetColumn from this object. + /// + /// The native setcolumn structure to fill in. + private void MakeNativeSetColumn(ref NATIVE_SETCOLUMN setcolumn) + { + setcolumn.columnid = this.Columnid.Value; + setcolumn.grbit = (uint)this.SetGrbit; + setcolumn.itagSequence = checked((uint)this.ItagSequence); + } + + /// + /// Create a native RetrieveColumn from this object. + /// + /// + /// The retrieve column structure to fill in. + /// + private void MakeNativeRetrieveColumn(ref NATIVE_RETRIEVECOLUMN retrievecolumn) + { + retrievecolumn.columnid = this.Columnid.Value; + retrievecolumn.grbit = (uint)this.RetrieveGrbit; + retrievecolumn.itagSequence = checked((uint)this.ItagSequence); + } + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/ColumnValueOfStruct.cs b/WelsonJS.Toolkit/EsentInterop/ColumnValueOfStruct.cs new file mode 100644 index 0000000..e80ec2e --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/ColumnValueOfStruct.cs @@ -0,0 +1,82 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + + /// + /// Set a column of a struct type (e.g. /). + /// + /// Type to set. + public abstract class ColumnValueOfStruct : ColumnValue where T : struct, IEquatable + { + /// + /// Internal value. + /// + private T? internalValue; + + /// + /// Gets the last set or retrieved value of the column. The + /// value is returned as a generic object. + /// + public override object ValueAsObject + { + get + { + return BoxedValueCache.GetBoxedValue(this.Value); + } + } + + /// + /// Gets or sets the value in the struct. + /// + public T? Value + { + get + { + return this.internalValue; + } + + set + { + this.internalValue = value; + this.Error = value == null ? JET_wrn.ColumnNull : JET_wrn.Success; + } + } + + /// + /// Gets the byte length of a column value, which is zero if column is null, otherwise + /// it matches the Size for this fixed-size column. + /// + public override int Length + { + get { return this.Value.HasValue ? this.Size : 0; } + } + + /// + /// Gets a string representation of this object. + /// + /// A string representation of this object. + public override string ToString() + { + return this.Value.ToString(); + } + + /// + /// Make sure the retrieved data is exactly the size needed for + /// the structure. An exception is thrown if there is a mismatch. + /// + /// The size of the retrieved data. + protected void CheckDataCount(int count) + { + if (this.Size != count) + { + throw new EsentInvalidColumnException(); + } + } + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/Conversions.cs b/WelsonJS.Toolkit/EsentInterop/Conversions.cs new file mode 100644 index 0000000..7be2de5 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/Conversions.cs @@ -0,0 +1,175 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Collections.Generic; + using System.Globalization; + + /// + /// Provide methods to convert data and flags between + /// Win32 and the .NET Framework. + /// + public static class Conversions + { + /// + /// Maps a CompareOption enumeration to the corresponding LCMapString flag. + /// + private static readonly IDictionary CompareOptionsToLcmapFlags; + + /// + /// Maps an LCMapString flag to the corresponding CompareOption enumeration. + /// + private static readonly IDictionary LcmapFlagsToCompareOptions; + + /// + /// Initializes static members of the Conversions class. This sets up the + /// conversion mapping dictionaries. + /// + static Conversions() + { + // Rather than creating both dictionaries, define one as the inverse of the other. + CompareOptionsToLcmapFlags = new Dictionary + { + { CompareOptions.IgnoreCase, NativeMethods.NORM_IGNORECASE }, + { CompareOptions.IgnoreKanaType, NativeMethods.NORM_IGNOREKANATYPE }, + { CompareOptions.IgnoreNonSpace, NativeMethods.NORM_IGNORENONSPACE }, + { CompareOptions.IgnoreSymbols, NativeMethods.NORM_IGNORESYMBOLS }, + { CompareOptions.IgnoreWidth, NativeMethods.NORM_IGNOREWIDTH }, + { CompareOptions.StringSort, NativeMethods.SORT_STRINGSORT } + }; + + LcmapFlagsToCompareOptions = InvertDictionary(CompareOptionsToLcmapFlags); + } + + /// + /// Convert a double (OA date time format) to a DateTime. Unlike DateTime.FromOADate + /// this doesn't throw exceptions. + /// + /// The double value. + /// A DateTime. + public static DateTime ConvertDoubleToDateTime(double d) + { + try + { + return LibraryHelpers.FromOADate(d); + } + catch (ArgumentException) + { + // Not all double values are valid OADates. We deal with out-of-range values + // by returning either min or max + return d < 0 ? DateTime.MinValue : DateTime.MaxValue; + } + } + + /// + /// Given flags for LCMapFlags, turn them into compare options. Unknown options + /// are ignored. + /// + /// LCMapString flags. + /// CompareOptions describing the (known) flags. + [CLSCompliant(false)] + public static CompareOptions CompareOptionsFromLCMapFlags(uint lcmapFlags) + { + // This should be a template, but there isn't an elegant way to express than with C# generics + CompareOptions options = CompareOptions.None; + foreach (uint flag in LcmapFlagsToCompareOptions.Keys) + { + if (flag == (lcmapFlags & flag)) + { + options |= LcmapFlagsToCompareOptions[flag]; + } + } + + return options; + } + + /// + /// Give CompareOptions, turn them into flags from LCMapString. Unknown options are ignored. + /// + /// The options to convert. + /// The LCMapString flags that match the compare options. Unsupported options are ignored. + [CLSCompliant(false)] + public static uint LCMapFlagsFromCompareOptions(CompareOptions compareOptions) + { + // This should be a template, but there isn't an elegant way to express than with C# generics + uint flags = 0; + foreach (CompareOptions option in CompareOptionsToLcmapFlags.Keys) + { + if (option == (compareOptions & option)) + { + flags |= CompareOptionsToLcmapFlags[option]; + } + } + + return flags; + } + + /// + /// Given a Key=>Value dictionary create an inverted dictionary that maps Value=>Key. + /// + /// The new value type (the key of the current dictionary). + /// The new key type (the value if the current dictionary). + /// The dictionary to invert. + /// An inverted dictionary. + private static IDictionary InvertDictionary(ICollection> dict) + { + var invertedDict = new Dictionary(dict.Count); + foreach (KeyValuePair entry in dict) + { + invertedDict.Add(entry.Value, entry.Key); + } + + return invertedDict; + } + + /// + /// This class contains the unmanaged constants used in the conversion. + /// + internal static class NativeMethods + { + #region Win32 Constants + + /// + /// Ignore case. + /// + public const uint NORM_IGNORECASE = 0x00000001; + + /// + /// Ignore nonspacing chars. + /// + public const uint NORM_IGNORENONSPACE = 0x00000002; + + /// + /// Ignore symbols. + /// + public const uint NORM_IGNORESYMBOLS = 0x00000004; + + /// + /// Ignore kanatype. + /// + public const uint NORM_IGNOREKANATYPE = 0x00010000; + + /// + /// Ignore width. + /// + public const uint NORM_IGNOREWIDTH = 0x00020000; + + /// + /// Treat punctuation the same as symbols. + /// + public const uint SORT_STRINGSORT = 0x00001000; + + /// + /// Produce a normalized wide-character sort key. + /// + public const uint LCMAP_SORTKEY = 0x00000400; + + #endregion Win32 Constants + } + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/DateTimeColumnValue.cs b/WelsonJS.Toolkit/EsentInterop/DateTimeColumnValue.cs new file mode 100644 index 0000000..794d99d --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/DateTimeColumnValue.cs @@ -0,0 +1,70 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Diagnostics; + + /// + /// A column value. + /// + public class DateTimeColumnValue : ColumnValueOfStruct + { + /// + /// Gets the size of the value in the column. This returns 0 for + /// variable sized columns (i.e. binary and string). + /// + protected override int Size + { + [DebuggerStepThrough] + get { return sizeof(double); } + } + + /// + /// Recursive SetColumns method for data pinning. This populates the buffer and + /// calls the inherited SetColumns method. + /// + /// The session to use. + /// + /// The table to set the columns in. An update should be prepared. + /// + /// + /// Column values to set. + /// + /// + /// Structures to put the pinned data in. + /// + /// Offset of this object in the array. + /// An error code. + internal override unsafe int SetColumns(JET_SESID sesid, JET_TABLEID tableid, ColumnValue[] columnValues, NATIVE_SETCOLUMN* nativeColumns, int i) + { + var data = this.Value.GetValueOrDefault().ToOADate(); + return this.SetColumns(sesid, tableid, columnValues, nativeColumns, i, &data, sizeof(double), this.Value.HasValue); + } + + /// + /// Given data retrieved from ESENT, decode the data and set the value in the ColumnValue object. + /// + /// An array of bytes. + /// The starting position within the bytes. + /// The number of bytes to decode. + /// The error returned from ESENT. + protected override void GetValueFromBytes(byte[] value, int startIndex, int count, int err) + { + if (JET_wrn.ColumnNull == (JET_wrn)err) + { + this.Value = null; + } + else + { + this.CheckDataCount(count); + double d = BitConverter.ToDouble(value, startIndex); + this.Value = Conversions.ConvertDoubleToDateTime(d); + } + } + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/DoubleColumnValue.cs b/WelsonJS.Toolkit/EsentInterop/DoubleColumnValue.cs new file mode 100644 index 0000000..4835287 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/DoubleColumnValue.cs @@ -0,0 +1,69 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Diagnostics; + + /// + /// A column value. + /// + public class DoubleColumnValue : ColumnValueOfStruct + { + /// + /// Gets the size of the value in the column. This returns 0 for + /// variable sized columns (i.e. binary and string). + /// + protected override int Size + { + [DebuggerStepThrough] + get { return sizeof(double); } + } + + /// + /// Recursive SetColumns method for data pinning. This populates the buffer and + /// calls the inherited SetColumns method. + /// + /// The session to use. + /// + /// The table to set the columns in. An update should be prepared. + /// + /// + /// Column values to set. + /// + /// + /// Structures to put the pinned data in. + /// + /// Offset of this object in the array. + /// An error code. + internal override unsafe int SetColumns(JET_SESID sesid, JET_TABLEID tableid, ColumnValue[] columnValues, NATIVE_SETCOLUMN* nativeColumns, int i) + { + var data = this.Value.GetValueOrDefault(); + return this.SetColumns(sesid, tableid, columnValues, nativeColumns, i, &data, sizeof(double), this.Value.HasValue); + } + + /// + /// Given data retrieved from ESENT, decode the data and set the value in the ColumnValue object. + /// + /// An array of bytes. + /// The starting position within the bytes. + /// The number of bytes to decode. + /// The error returned from ESENT. + protected override void GetValueFromBytes(byte[] value, int startIndex, int count, int err) + { + if (JET_wrn.ColumnNull == (JET_wrn)err) + { + this.Value = null; + } + else + { + this.CheckDataCount(count); + this.Value = BitConverter.ToDouble(value, startIndex); + } + } + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/DurableCommitCallback.cs b/WelsonJS.Toolkit/EsentInterop/DurableCommitCallback.cs new file mode 100644 index 0000000..f358892 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/DurableCommitCallback.cs @@ -0,0 +1,172 @@ +// -------------------------------------------------------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +// +// Callback for JET_param JET_paramDurableCommitCallback. +// +// -------------------------------------------------------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop.Windows8 +{ + using System; + using System.Diagnostics; + using System.Diagnostics.CodeAnalysis; + using System.Globalization; + using System.Reflection; +#if !MANAGEDESENT_ON_CORECLR + using System.Runtime.CompilerServices; +#endif + + using Microsoft.Isam.Esent.Interop.Implementation; + + /// + /// A class which wraps the callback dealing with durable commits. + /// + public class DurableCommitCallback : EsentResource + { + /// + /// API call tracing. + /// + private static readonly TraceSwitch TraceSwitch = new TraceSwitch("ESENT DurableCommitCallback", "Wrapper around unmanaged ESENT durable commit callback"); + + /// + /// Instance associated with this callback. + /// + private JET_INSTANCE instance; + + /// + /// Hold a reference to the delegate so that it doesn't get garbage-collected. + /// + private JET_PFNDURABLECOMMITCALLBACK wrappedCallback; + + /// + /// Hold a reference to the delegate so that it doesn't get garbage-collected. + /// + [SuppressMessage("Exchange.Performance", "EX0023:DeadVariableDetector", Justification = "Need to hold on to a reference to the callback, so that it does not get garbage collected.")] + private NATIVE_JET_PFNDURABLECOMMITCALLBACK wrapperCallback; + + /// + /// Initializes a new instance of the class. + /// The constructor. + /// + /// + /// The instance with which to associate the callback. + /// + /// + /// The managed code callback to call. + /// + public DurableCommitCallback( + JET_INSTANCE instance, + JET_PFNDURABLECOMMITCALLBACK wrappedCallback) + { + this.instance = instance; + this.wrappedCallback = wrappedCallback; + this.wrapperCallback = this.NativeDurableCommitCallback; + +#if !MANAGEDESENT_ON_WSA // RuntimeHelpers works differently in Windows Store Apps. + if (this.wrappedCallback != null) + { + RuntimeHelpers.PrepareMethod(this.wrappedCallback.Method.MethodHandle); + } + + RuntimeHelpers.PrepareMethod(typeof(DurableCommitCallback).GetMethod("NativeDurableCommitCallback", BindingFlags.NonPublic | BindingFlags.Instance).MethodHandle); +#endif + + InstanceParameters instanceParameters = new InstanceParameters(this.instance); + + // This might be null. + instanceParameters.SetDurableCommitCallback(this.wrapperCallback); + + this.ResourceWasAllocated(); + } + + /// + /// Generate a string representation of the structure. + /// + /// The structure as a string. + public override string ToString() + { + return string.Format( + CultureInfo.InvariantCulture, + "DurableCommitCallback({0})", + this.instance.ToString()); + } + + /// + /// Terminate the durable commit session. + /// + public void End() + { + this.CheckObjectIsNotDisposed(); + this.ReleaseResource(); + } + + /// + /// Free the durable commit session. + /// We do not try to set the instance parameter to null, since the callback is disposed after JetTerm and + /// the callback cannot be set after JetTerm. + /// + protected override void ReleaseResource() + { + this.instance = JET_INSTANCE.Nil; + this.wrappedCallback = null; + this.wrapperCallback = null; + this.ResourceWasReleased(); + } + + /// + /// The proxy callback function to call the user-defined managed delegate. + /// + /// + /// The instance. + /// + /// + /// The commit-id flushed. + /// + /// + /// Reserved currently. + /// + /// + /// An error code. + /// + private JET_err NativeDurableCommitCallback( + IntPtr instance, + ref NATIVE_COMMIT_ID commitIdSeen, + uint grbit) + { + RuntimeHelpers.PrepareConstrainedRegions(); + try + { + JET_INSTANCE jetInstance = new JET_INSTANCE() + { + Value = instance + }; + + if (this.instance != jetInstance) + { + // We assume it's only called on one instance at a time. The only thing + // we really care about is serialization of the byte array. + // + // It would be nice to throw an error, but we're going back to real + // code, which doesn't deal with managed exceptions well. + return JET_err.CallbackFailed; + } + + JET_COMMIT_ID commitId = new JET_COMMIT_ID(commitIdSeen); + + return this.wrappedCallback(jetInstance, commitId, (DurableCommitCallbackGrbit)grbit); + } + catch (Exception ex) + { + Trace.WriteLineIf( + TraceSwitch.TraceWarning, string.Format(CultureInfo.InvariantCulture, "Caught Exception {0}", ex)); + + JetApi.ReportUnhandledException(ex, "Unhandled exception during NativeDurableCommitCallback"); + + // This should never be executed, but the compiler doesn't know it. + return JET_err.CallbackFailed; + } + } + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/EnumeratedColumn.cs b/WelsonJS.Toolkit/EsentInterop/EnumeratedColumn.cs new file mode 100644 index 0000000..ba62783 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/EnumeratedColumn.cs @@ -0,0 +1,121 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Globalization; + + /// + /// The values for a given column as generated by Api.EnumerateColumns. + /// + public class EnumeratedColumn + { + /// + /// Gets or sets the column ID of this set of column values. + /// + public JET_COLUMNID Id { get; set; } + + /// + /// Gets or sets the status of this column id. + /// + /// + /// + /// + public JET_err Error { get; set; } + + /// + /// Gets or sets the status of this set of column values. + /// + /// + /// + /// + /// + /// + public JET_wrn Warning { get; set; } + + /// + /// Gets or sets the column values enumerated. + /// + /// + /// This will be null if the column is null or the column values were not provided. + /// + public Value[] Values { get; set; } + + /// + /// Returns a that represents the current . + /// + /// + /// A that represents the current . + /// + public override string ToString() + { + return string.Format( + CultureInfo.InvariantCulture, + "EnumeratedColumn(0x{0:x}: {1} Values[{2}])", + this.Id, + this.Error != JET_err.Success ? this.Error.ToString() : this.Warning.ToString(), + this.Values.Length); + } + + /// + /// A single column value. + /// + public class Value + { + /// + /// Gets or sets the ordinal of this column value. + /// + /// + /// The lowest valid ordinal is one. + /// This is the same as the "itagSequence" of the column value. + /// + public int Ordinal { get; set; } + + /// + /// Gets or sets the status of this column value. + /// + /// + /// + /// + /// + /// + /// + /// + public JET_wrn Warning { get; set; } + + /// + /// Gets or sets the column value as bytes. + /// + /// + /// This will be null if the column is null or the column values were not provided. + /// This will be truncated if Warning is . + /// + public byte[] Bytes { get; set; } + + /// + /// Returns a that represents the current . + /// + /// + /// A that represents the current . + /// + public override string ToString() + { + const int MaxLength = 16; + return string.Format( + CultureInfo.InvariantCulture, + "EnumeratedColumn.Value({0}: {1} Bytes[{2}] = {3}{4}{5}{6})", + this.Ordinal, + this.Warning, + this.Bytes.Length, + '{', + BitConverter.ToString(this.Bytes, 0, Math.Min(this.Bytes.Length, MaxLength)), + this.Bytes.Length > MaxLength ? "..." : string.Empty, + '}'); + } + } + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/ErrorExceptions.cs b/WelsonJS.Toolkit/EsentInterop/ErrorExceptions.cs new file mode 100644 index 0000000..0f97cfd --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/ErrorExceptions.cs @@ -0,0 +1,14038 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +// Auto generated + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Diagnostics.CodeAnalysis; + using System.Runtime.Serialization; + + // The basic exception hierarchy ... + // + // EsentErrorException + // | + // |-- EsentOperationException + // | |-- EsentFatalException + // | |-- EsentIOException // bad IO issues, may or may not be transient. + // | |-- EsentResourceException + // | |-- EsentMemoryException // out of memory (all variants) + // | |-- EsentQuotaException + // | |-- EsentDiskException // out of disk space (all variants) + // |-- EsentDataException + // | |-- EsentCorruptionException + // | |-- EsentInconsistentException + // | |-- EsentFragmentationException + // |-- EsentApiException + // |-- EsentUsageException + // |-- EsentStateException + // |-- EsentObsoleteException + + /// + /// Base class for Operation exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public abstract class EsentOperationException : EsentErrorException + { + /// + /// Initializes a new instance of the EsentOperationException class. + /// + /// The description of the error. + /// The error code of the exception. + protected EsentOperationException(string description, JET_err err) : + base(description, err) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentOperationException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + protected EsentOperationException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for Data exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public abstract class EsentDataException : EsentErrorException + { + /// + /// Initializes a new instance of the EsentDataException class. + /// + /// The description of the error. + /// The error code of the exception. + protected EsentDataException(string description, JET_err err) : + base(description, err) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentDataException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + protected EsentDataException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for Api exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public abstract class EsentApiException : EsentErrorException + { + /// + /// Initializes a new instance of the EsentApiException class. + /// + /// The description of the error. + /// The error code of the exception. + protected EsentApiException(string description, JET_err err) : + base(description, err) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentApiException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + protected EsentApiException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for Fatal exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public abstract class EsentFatalException : EsentOperationException + { + /// + /// Initializes a new instance of the EsentFatalException class. + /// + /// The description of the error. + /// The error code of the exception. + protected EsentFatalException(string description, JET_err err) : + base(description, err) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentFatalException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + protected EsentFatalException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for IO exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public abstract class EsentIOException : EsentOperationException + { + /// + /// Initializes a new instance of the EsentIOException class. + /// + /// The description of the error. + /// The error code of the exception. + protected EsentIOException(string description, JET_err err) : + base(description, err) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentIOException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + protected EsentIOException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for Resource exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public abstract class EsentResourceException : EsentOperationException + { + /// + /// Initializes a new instance of the EsentResourceException class. + /// + /// The description of the error. + /// The error code of the exception. + protected EsentResourceException(string description, JET_err err) : + base(description, err) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentResourceException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + protected EsentResourceException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for Memory exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public abstract class EsentMemoryException : EsentResourceException + { + /// + /// Initializes a new instance of the EsentMemoryException class. + /// + /// The description of the error. + /// The error code of the exception. + protected EsentMemoryException(string description, JET_err err) : + base(description, err) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentMemoryException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + protected EsentMemoryException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for Quota exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public abstract class EsentQuotaException : EsentResourceException + { + /// + /// Initializes a new instance of the EsentQuotaException class. + /// + /// The description of the error. + /// The error code of the exception. + protected EsentQuotaException(string description, JET_err err) : + base(description, err) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentQuotaException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + protected EsentQuotaException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for Disk exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public abstract class EsentDiskException : EsentResourceException + { + /// + /// Initializes a new instance of the EsentDiskException class. + /// + /// The description of the error. + /// The error code of the exception. + protected EsentDiskException(string description, JET_err err) : + base(description, err) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentDiskException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + protected EsentDiskException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for Corruption exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public abstract class EsentCorruptionException : EsentDataException + { + /// + /// Initializes a new instance of the EsentCorruptionException class. + /// + /// The description of the error. + /// The error code of the exception. + protected EsentCorruptionException(string description, JET_err err) : + base(description, err) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentCorruptionException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + protected EsentCorruptionException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for Inconsistent exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public abstract class EsentInconsistentException : EsentDataException + { + /// + /// Initializes a new instance of the EsentInconsistentException class. + /// + /// The description of the error. + /// The error code of the exception. + protected EsentInconsistentException(string description, JET_err err) : + base(description, err) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentInconsistentException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + protected EsentInconsistentException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for Fragmentation exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public abstract class EsentFragmentationException : EsentDataException + { + /// + /// Initializes a new instance of the EsentFragmentationException class. + /// + /// The description of the error. + /// The error code of the exception. + protected EsentFragmentationException(string description, JET_err err) : + base(description, err) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentFragmentationException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + protected EsentFragmentationException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for Usage exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public abstract class EsentUsageException : EsentApiException + { + /// + /// Initializes a new instance of the EsentUsageException class. + /// + /// The description of the error. + /// The error code of the exception. + protected EsentUsageException(string description, JET_err err) : + base(description, err) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentUsageException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + protected EsentUsageException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for State exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public abstract class EsentStateException : EsentApiException + { + /// + /// Initializes a new instance of the EsentStateException class. + /// + /// The description of the error. + /// The error code of the exception. + protected EsentStateException(string description, JET_err err) : + base(description, err) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentStateException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + protected EsentStateException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for Obsolete exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public abstract class EsentObsoleteException : EsentApiException + { + /// + /// Initializes a new instance of the EsentObsoleteException class. + /// + /// The description of the error. + /// The error code of the exception. + protected EsentObsoleteException(string description, JET_err err) : + base(description, err) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentObsoleteException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + protected EsentObsoleteException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.RfsFailure exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentRfsFailureException : EsentObsoleteException + { + /// + /// Initializes a new instance of the EsentRfsFailureException class. + /// + public EsentRfsFailureException() : + base("Resource Failure Simulator failure", JET_err.RfsFailure) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentRfsFailureException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentRfsFailureException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.RfsNotArmed exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentRfsNotArmedException : EsentObsoleteException + { + /// + /// Initializes a new instance of the EsentRfsNotArmedException class. + /// + public EsentRfsNotArmedException() : + base("Resource Failure Simulator not initialized", JET_err.RfsNotArmed) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentRfsNotArmedException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentRfsNotArmedException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.FileClose exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentFileCloseException : EsentObsoleteException + { + /// + /// Initializes a new instance of the EsentFileCloseException class. + /// + public EsentFileCloseException() : + base("Could not close file", JET_err.FileClose) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentFileCloseException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentFileCloseException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.OutOfThreads exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentOutOfThreadsException : EsentMemoryException + { + /// + /// Initializes a new instance of the EsentOutOfThreadsException class. + /// + public EsentOutOfThreadsException() : + base("Could not start thread", JET_err.OutOfThreads) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentOutOfThreadsException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentOutOfThreadsException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.TooManyIO exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentTooManyIOException : EsentResourceException + { + /// + /// Initializes a new instance of the EsentTooManyIOException class. + /// + public EsentTooManyIOException() : + base("System busy due to too many IOs", JET_err.TooManyIO) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentTooManyIOException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentTooManyIOException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.TaskDropped exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentTaskDroppedException : EsentResourceException + { + /// + /// Initializes a new instance of the EsentTaskDroppedException class. + /// + public EsentTaskDroppedException() : + base("A requested async task could not be executed", JET_err.TaskDropped) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentTaskDroppedException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentTaskDroppedException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.InternalError exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentInternalErrorException : EsentOperationException + { + /// + /// Initializes a new instance of the EsentInternalErrorException class. + /// + public EsentInternalErrorException() : + base("Fatal internal error", JET_err.InternalError) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentInternalErrorException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentInternalErrorException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.DisabledFunctionality exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentDisabledFunctionalityException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentDisabledFunctionalityException class. + /// + public EsentDisabledFunctionalityException() : + base("You are running MinESE, that does not have all features compiled in. This functionality is only supported in a full version of ESE.", JET_err.DisabledFunctionality) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentDisabledFunctionalityException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentDisabledFunctionalityException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.UnloadableOSFunctionality exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentUnloadableOSFunctionalityException : EsentFatalException + { + /// + /// Initializes a new instance of the EsentUnloadableOSFunctionalityException class. + /// + public EsentUnloadableOSFunctionalityException() : + base("The desired OS functionality could not be located and loaded / linked.", JET_err.UnloadableOSFunctionality) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentUnloadableOSFunctionalityException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentUnloadableOSFunctionalityException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.DeviceMissing exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentDeviceMissingException : EsentFatalException + { + /// + /// Initializes a new instance of the EsentDeviceMissingException class. + /// + public EsentDeviceMissingException() : + base("A required hardware device or functionality was missing.", JET_err.DeviceMissing) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentDeviceMissingException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentDeviceMissingException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.DeviceMisconfigured exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentDeviceMisconfiguredException : EsentFatalException + { + /// + /// Initializes a new instance of the EsentDeviceMisconfiguredException class. + /// + public EsentDeviceMisconfiguredException() : + base("A required hardware device was misconfigured externally.", JET_err.DeviceMisconfigured) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentDeviceMisconfiguredException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentDeviceMisconfiguredException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.DeviceTimeout exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentDeviceTimeoutException : EsentOperationException + { + /// + /// Initializes a new instance of the EsentDeviceTimeoutException class. + /// + public EsentDeviceTimeoutException() : + base("Timeout occurred while waiting for a hardware device to respond.", JET_err.DeviceTimeout) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentDeviceTimeoutException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentDeviceTimeoutException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.DeviceFailure exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentDeviceFailureException : EsentOperationException + { + /// + /// Initializes a new instance of the EsentDeviceFailureException class. + /// + public EsentDeviceFailureException() : + base("A required hardware device didn't function as expected.", JET_err.DeviceFailure) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentDeviceFailureException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentDeviceFailureException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.DatabaseBufferDependenciesCorrupted exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentDatabaseBufferDependenciesCorruptedException : EsentCorruptionException + { + /// + /// Initializes a new instance of the EsentDatabaseBufferDependenciesCorruptedException class. + /// + public EsentDatabaseBufferDependenciesCorruptedException() : + base("Buffer dependencies improperly set. Recovery failure", JET_err.DatabaseBufferDependenciesCorrupted) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentDatabaseBufferDependenciesCorruptedException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentDatabaseBufferDependenciesCorruptedException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.PreviousVersion exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentPreviousVersionException : EsentErrorException + { + /// + /// Initializes a new instance of the EsentPreviousVersionException class. + /// + public EsentPreviousVersionException() : + base("Version already existed. Recovery failure", JET_err.PreviousVersion) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentPreviousVersionException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentPreviousVersionException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.PageBoundary exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentPageBoundaryException : EsentObsoleteException + { + /// + /// Initializes a new instance of the EsentPageBoundaryException class. + /// + public EsentPageBoundaryException() : + base("Reached Page Boundary", JET_err.PageBoundary) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentPageBoundaryException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentPageBoundaryException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.KeyBoundary exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentKeyBoundaryException : EsentObsoleteException + { + /// + /// Initializes a new instance of the EsentKeyBoundaryException class. + /// + public EsentKeyBoundaryException() : + base("Reached Key Boundary", JET_err.KeyBoundary) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentKeyBoundaryException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentKeyBoundaryException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.BadPageLink exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentBadPageLinkException : EsentCorruptionException + { + /// + /// Initializes a new instance of the EsentBadPageLinkException class. + /// + public EsentBadPageLinkException() : + base("Database corrupted", JET_err.BadPageLink) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentBadPageLinkException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentBadPageLinkException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.BadBookmark exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentBadBookmarkException : EsentObsoleteException + { + /// + /// Initializes a new instance of the EsentBadBookmarkException class. + /// + public EsentBadBookmarkException() : + base("Bookmark has no corresponding address in database", JET_err.BadBookmark) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentBadBookmarkException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentBadBookmarkException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.NTSystemCallFailed exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentNTSystemCallFailedException : EsentOperationException + { + /// + /// Initializes a new instance of the EsentNTSystemCallFailedException class. + /// + public EsentNTSystemCallFailedException() : + base("A call to the operating system failed", JET_err.NTSystemCallFailed) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentNTSystemCallFailedException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentNTSystemCallFailedException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.BadParentPageLink exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentBadParentPageLinkException : EsentCorruptionException + { + /// + /// Initializes a new instance of the EsentBadParentPageLinkException class. + /// + public EsentBadParentPageLinkException() : + base("Database corrupted", JET_err.BadParentPageLink) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentBadParentPageLinkException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentBadParentPageLinkException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.SPAvailExtCacheOutOfSync exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentSPAvailExtCacheOutOfSyncException : EsentObsoleteException + { + /// + /// Initializes a new instance of the EsentSPAvailExtCacheOutOfSyncException class. + /// + public EsentSPAvailExtCacheOutOfSyncException() : + base("AvailExt cache doesn't match btree", JET_err.SPAvailExtCacheOutOfSync) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentSPAvailExtCacheOutOfSyncException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentSPAvailExtCacheOutOfSyncException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.SPAvailExtCorrupted exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentSPAvailExtCorruptedException : EsentCorruptionException + { + /// + /// Initializes a new instance of the EsentSPAvailExtCorruptedException class. + /// + public EsentSPAvailExtCorruptedException() : + base("AvailExt space tree is corrupt", JET_err.SPAvailExtCorrupted) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentSPAvailExtCorruptedException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentSPAvailExtCorruptedException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.SPAvailExtCacheOutOfMemory exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentSPAvailExtCacheOutOfMemoryException : EsentObsoleteException + { + /// + /// Initializes a new instance of the EsentSPAvailExtCacheOutOfMemoryException class. + /// + public EsentSPAvailExtCacheOutOfMemoryException() : + base("Out of memory allocating an AvailExt cache node", JET_err.SPAvailExtCacheOutOfMemory) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentSPAvailExtCacheOutOfMemoryException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentSPAvailExtCacheOutOfMemoryException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.SPOwnExtCorrupted exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentSPOwnExtCorruptedException : EsentCorruptionException + { + /// + /// Initializes a new instance of the EsentSPOwnExtCorruptedException class. + /// + public EsentSPOwnExtCorruptedException() : + base("OwnExt space tree is corrupt", JET_err.SPOwnExtCorrupted) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentSPOwnExtCorruptedException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentSPOwnExtCorruptedException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.DbTimeCorrupted exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentDbTimeCorruptedException : EsentCorruptionException + { + /// + /// Initializes a new instance of the EsentDbTimeCorruptedException class. + /// + public EsentDbTimeCorruptedException() : + base("Dbtime on current page is greater than global database dbtime", JET_err.DbTimeCorrupted) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentDbTimeCorruptedException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentDbTimeCorruptedException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.KeyTruncated exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentKeyTruncatedException : EsentStateException + { + /// + /// Initializes a new instance of the EsentKeyTruncatedException class. + /// + public EsentKeyTruncatedException() : + base("key truncated on index that disallows key truncation", JET_err.KeyTruncated) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentKeyTruncatedException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentKeyTruncatedException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.DatabaseLeakInSpace exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentDatabaseLeakInSpaceException : EsentStateException + { + /// + /// Initializes a new instance of the EsentDatabaseLeakInSpaceException class. + /// + public EsentDatabaseLeakInSpaceException() : + base("Some database pages have become unreachable even from the avail tree, only an offline defragmentation can return the lost space.", JET_err.DatabaseLeakInSpace) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentDatabaseLeakInSpaceException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentDatabaseLeakInSpaceException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.BadEmptyPage exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentBadEmptyPageException : EsentCorruptionException + { + /// + /// Initializes a new instance of the EsentBadEmptyPageException class. + /// + public EsentBadEmptyPageException() : + base("Database corrupted. Searching an unexpectedly empty page.", JET_err.BadEmptyPage) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentBadEmptyPageException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentBadEmptyPageException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.BadLineCount exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentBadLineCountException : EsentCorruptionException + { + /// + /// Initializes a new instance of the EsentBadLineCountException class. + /// + public EsentBadLineCountException() : + base("Number of lines on the page is too few compared to the line being operated on", JET_err.BadLineCount) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentBadLineCountException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentBadLineCountException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.KeyTooBig exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentKeyTooBigException : EsentObsoleteException + { + /// + /// Initializes a new instance of the EsentKeyTooBigException class. + /// + public EsentKeyTooBigException() : + base("Key is too large", JET_err.KeyTooBig) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentKeyTooBigException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentKeyTooBigException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.CannotSeparateIntrinsicLV exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentCannotSeparateIntrinsicLVException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentCannotSeparateIntrinsicLVException class. + /// + public EsentCannotSeparateIntrinsicLVException() : + base("illegal attempt to separate an LV which must be intrinsic", JET_err.CannotSeparateIntrinsicLV) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentCannotSeparateIntrinsicLVException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentCannotSeparateIntrinsicLVException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.SeparatedLongValue exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentSeparatedLongValueException : EsentStateException + { + /// + /// Initializes a new instance of the EsentSeparatedLongValueException class. + /// + public EsentSeparatedLongValueException() : + base("Operation not supported on separated long-value", JET_err.SeparatedLongValue) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentSeparatedLongValueException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentSeparatedLongValueException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.MustBeSeparateLongValue exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentMustBeSeparateLongValueException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentMustBeSeparateLongValueException class. + /// + public EsentMustBeSeparateLongValueException() : + base("Can only preread long value columns that can be separate, e.g. not size constrained so that they are fixed or variable columns", JET_err.MustBeSeparateLongValue) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentMustBeSeparateLongValueException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentMustBeSeparateLongValueException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.InvalidPreread exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentInvalidPrereadException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentInvalidPrereadException class. + /// + public EsentInvalidPrereadException() : + base("Cannot preread long values when current index secondary", JET_err.InvalidPreread) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentInvalidPrereadException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentInvalidPrereadException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.InvalidColumnReference exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentInvalidColumnReferenceException : EsentStateException + { + /// + /// Initializes a new instance of the EsentInvalidColumnReferenceException class. + /// + public EsentInvalidColumnReferenceException() : + base("Column reference is invalid", JET_err.InvalidColumnReference) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentInvalidColumnReferenceException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentInvalidColumnReferenceException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.StaleColumnReference exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentStaleColumnReferenceException : EsentStateException + { + /// + /// Initializes a new instance of the EsentStaleColumnReferenceException class. + /// + public EsentStaleColumnReferenceException() : + base("Column reference is stale", JET_err.StaleColumnReference) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentStaleColumnReferenceException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentStaleColumnReferenceException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.CompressionIntegrityCheckFailed exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentCompressionIntegrityCheckFailedException : EsentCorruptionException + { + /// + /// Initializes a new instance of the EsentCompressionIntegrityCheckFailedException class. + /// + public EsentCompressionIntegrityCheckFailedException() : + base("A compression integrity check failed. Decompressing data failed the integrity checksum indicating a data corruption in the compress/decompress pipeline.", JET_err.CompressionIntegrityCheckFailed) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentCompressionIntegrityCheckFailedException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentCompressionIntegrityCheckFailedException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.InvalidLoggedOperation exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentInvalidLoggedOperationException : EsentObsoleteException + { + /// + /// Initializes a new instance of the EsentInvalidLoggedOperationException class. + /// + public EsentInvalidLoggedOperationException() : + base("Logged operation cannot be redone", JET_err.InvalidLoggedOperation) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentInvalidLoggedOperationException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentInvalidLoggedOperationException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.LogFileCorrupt exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentLogFileCorruptException : EsentCorruptionException + { + /// + /// Initializes a new instance of the EsentLogFileCorruptException class. + /// + public EsentLogFileCorruptException() : + base("Log file is corrupt", JET_err.LogFileCorrupt) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentLogFileCorruptException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentLogFileCorruptException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.NoBackupDirectory exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentNoBackupDirectoryException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentNoBackupDirectoryException class. + /// + public EsentNoBackupDirectoryException() : + base("No backup directory given", JET_err.NoBackupDirectory) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentNoBackupDirectoryException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentNoBackupDirectoryException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.BackupDirectoryNotEmpty exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentBackupDirectoryNotEmptyException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentBackupDirectoryNotEmptyException class. + /// + public EsentBackupDirectoryNotEmptyException() : + base("The backup directory is not empty", JET_err.BackupDirectoryNotEmpty) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentBackupDirectoryNotEmptyException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentBackupDirectoryNotEmptyException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.BackupInProgress exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentBackupInProgressException : EsentStateException + { + /// + /// Initializes a new instance of the EsentBackupInProgressException class. + /// + public EsentBackupInProgressException() : + base("Backup is active already", JET_err.BackupInProgress) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentBackupInProgressException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentBackupInProgressException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.RestoreInProgress exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentRestoreInProgressException : EsentStateException + { + /// + /// Initializes a new instance of the EsentRestoreInProgressException class. + /// + public EsentRestoreInProgressException() : + base("Restore in progress", JET_err.RestoreInProgress) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentRestoreInProgressException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentRestoreInProgressException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.MissingPreviousLogFile exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentMissingPreviousLogFileException : EsentCorruptionException + { + /// + /// Initializes a new instance of the EsentMissingPreviousLogFileException class. + /// + public EsentMissingPreviousLogFileException() : + base("Missing the log file for check point", JET_err.MissingPreviousLogFile) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentMissingPreviousLogFileException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentMissingPreviousLogFileException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.LogWriteFail exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentLogWriteFailException : EsentIOException + { + /// + /// Initializes a new instance of the EsentLogWriteFailException class. + /// + public EsentLogWriteFailException() : + base("Failure writing to log file", JET_err.LogWriteFail) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentLogWriteFailException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentLogWriteFailException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.LogDisabledDueToRecoveryFailure exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentLogDisabledDueToRecoveryFailureException : EsentFatalException + { + /// + /// Initializes a new instance of the EsentLogDisabledDueToRecoveryFailureException class. + /// + public EsentLogDisabledDueToRecoveryFailureException() : + base("Try to log something after recovery failed", JET_err.LogDisabledDueToRecoveryFailure) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentLogDisabledDueToRecoveryFailureException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentLogDisabledDueToRecoveryFailureException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.CannotLogDuringRecoveryRedo exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentCannotLogDuringRecoveryRedoException : EsentErrorException + { + /// + /// Initializes a new instance of the EsentCannotLogDuringRecoveryRedoException class. + /// + public EsentCannotLogDuringRecoveryRedoException() : + base("Try to log something during recovery redo", JET_err.CannotLogDuringRecoveryRedo) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentCannotLogDuringRecoveryRedoException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentCannotLogDuringRecoveryRedoException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.LogGenerationMismatch exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentLogGenerationMismatchException : EsentInconsistentException + { + /// + /// Initializes a new instance of the EsentLogGenerationMismatchException class. + /// + public EsentLogGenerationMismatchException() : + base("Name of logfile does not match internal generation number", JET_err.LogGenerationMismatch) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentLogGenerationMismatchException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentLogGenerationMismatchException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.BadLogVersion exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentBadLogVersionException : EsentInconsistentException + { + /// + /// Initializes a new instance of the EsentBadLogVersionException class. + /// + public EsentBadLogVersionException() : + base("Version of log file is not compatible with Jet version", JET_err.BadLogVersion) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentBadLogVersionException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentBadLogVersionException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.InvalidLogSequence exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentInvalidLogSequenceException : EsentCorruptionException + { + /// + /// Initializes a new instance of the EsentInvalidLogSequenceException class. + /// + public EsentInvalidLogSequenceException() : + base("Timestamp in next log does not match expected", JET_err.InvalidLogSequence) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentInvalidLogSequenceException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentInvalidLogSequenceException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.LoggingDisabled exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentLoggingDisabledException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentLoggingDisabledException class. + /// + public EsentLoggingDisabledException() : + base("Log is not active", JET_err.LoggingDisabled) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentLoggingDisabledException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentLoggingDisabledException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.LogBufferTooSmall exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentLogBufferTooSmallException : EsentObsoleteException + { + /// + /// Initializes a new instance of the EsentLogBufferTooSmallException class. + /// + public EsentLogBufferTooSmallException() : + base("An operation generated a log record which was too large to fit in the log buffer or in a single log file", JET_err.LogBufferTooSmall) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentLogBufferTooSmallException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentLogBufferTooSmallException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.LogSequenceEnd exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentLogSequenceEndException : EsentFragmentationException + { + /// + /// Initializes a new instance of the EsentLogSequenceEndException class. + /// + public EsentLogSequenceEndException() : + base("Maximum log file number exceeded", JET_err.LogSequenceEnd) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentLogSequenceEndException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentLogSequenceEndException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.NoBackup exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentNoBackupException : EsentStateException + { + /// + /// Initializes a new instance of the EsentNoBackupException class. + /// + public EsentNoBackupException() : + base("No backup in progress", JET_err.NoBackup) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentNoBackupException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentNoBackupException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.InvalidBackupSequence exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentInvalidBackupSequenceException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentInvalidBackupSequenceException class. + /// + public EsentInvalidBackupSequenceException() : + base("Backup call out of sequence", JET_err.InvalidBackupSequence) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentInvalidBackupSequenceException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentInvalidBackupSequenceException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.BackupNotAllowedYet exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentBackupNotAllowedYetException : EsentStateException + { + /// + /// Initializes a new instance of the EsentBackupNotAllowedYetException class. + /// + public EsentBackupNotAllowedYetException() : + base("Cannot do backup now", JET_err.BackupNotAllowedYet) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentBackupNotAllowedYetException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentBackupNotAllowedYetException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.DeleteBackupFileFail exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentDeleteBackupFileFailException : EsentIOException + { + /// + /// Initializes a new instance of the EsentDeleteBackupFileFailException class. + /// + public EsentDeleteBackupFileFailException() : + base("Could not delete backup file", JET_err.DeleteBackupFileFail) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentDeleteBackupFileFailException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentDeleteBackupFileFailException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.MakeBackupDirectoryFail exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentMakeBackupDirectoryFailException : EsentIOException + { + /// + /// Initializes a new instance of the EsentMakeBackupDirectoryFailException class. + /// + public EsentMakeBackupDirectoryFailException() : + base("Could not make backup temp directory", JET_err.MakeBackupDirectoryFail) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentMakeBackupDirectoryFailException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentMakeBackupDirectoryFailException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.InvalidBackup exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentInvalidBackupException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentInvalidBackupException class. + /// + public EsentInvalidBackupException() : + base("Cannot perform incremental backup when circular logging enabled", JET_err.InvalidBackup) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentInvalidBackupException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentInvalidBackupException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.RecoveredWithErrors exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentRecoveredWithErrorsException : EsentStateException + { + /// + /// Initializes a new instance of the EsentRecoveredWithErrorsException class. + /// + public EsentRecoveredWithErrorsException() : + base("Restored with errors", JET_err.RecoveredWithErrors) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentRecoveredWithErrorsException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentRecoveredWithErrorsException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.MissingLogFile exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentMissingLogFileException : EsentCorruptionException + { + /// + /// Initializes a new instance of the EsentMissingLogFileException class. + /// + public EsentMissingLogFileException() : + base("Current log file missing", JET_err.MissingLogFile) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentMissingLogFileException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentMissingLogFileException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.LogDiskFull exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentLogDiskFullException : EsentDiskException + { + /// + /// Initializes a new instance of the EsentLogDiskFullException class. + /// + public EsentLogDiskFullException() : + base("Log disk full", JET_err.LogDiskFull) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentLogDiskFullException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentLogDiskFullException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.BadLogSignature exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentBadLogSignatureException : EsentInconsistentException + { + /// + /// Initializes a new instance of the EsentBadLogSignatureException class. + /// + public EsentBadLogSignatureException() : + base("Bad signature for a log file", JET_err.BadLogSignature) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentBadLogSignatureException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentBadLogSignatureException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.BadDbSignature exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentBadDbSignatureException : EsentObsoleteException + { + /// + /// Initializes a new instance of the EsentBadDbSignatureException class. + /// + public EsentBadDbSignatureException() : + base("Bad signature for a db file", JET_err.BadDbSignature) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentBadDbSignatureException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentBadDbSignatureException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.BadCheckpointSignature exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentBadCheckpointSignatureException : EsentInconsistentException + { + /// + /// Initializes a new instance of the EsentBadCheckpointSignatureException class. + /// + public EsentBadCheckpointSignatureException() : + base("Bad signature for a checkpoint file", JET_err.BadCheckpointSignature) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentBadCheckpointSignatureException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentBadCheckpointSignatureException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.CheckpointCorrupt exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentCheckpointCorruptException : EsentCorruptionException + { + /// + /// Initializes a new instance of the EsentCheckpointCorruptException class. + /// + public EsentCheckpointCorruptException() : + base("Checkpoint file not found or corrupt", JET_err.CheckpointCorrupt) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentCheckpointCorruptException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentCheckpointCorruptException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.MissingPatchPage exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentMissingPatchPageException : EsentObsoleteException + { + /// + /// Initializes a new instance of the EsentMissingPatchPageException class. + /// + public EsentMissingPatchPageException() : + base("Patch file page not found during recovery", JET_err.MissingPatchPage) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentMissingPatchPageException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentMissingPatchPageException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.BadPatchPage exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentBadPatchPageException : EsentObsoleteException + { + /// + /// Initializes a new instance of the EsentBadPatchPageException class. + /// + public EsentBadPatchPageException() : + base("Patch file page is not valid", JET_err.BadPatchPage) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentBadPatchPageException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentBadPatchPageException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.RedoAbruptEnded exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentRedoAbruptEndedException : EsentCorruptionException + { + /// + /// Initializes a new instance of the EsentRedoAbruptEndedException class. + /// + public EsentRedoAbruptEndedException() : + base("Redo abruptly ended due to sudden failure in reading logs from log file", JET_err.RedoAbruptEnded) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentRedoAbruptEndedException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentRedoAbruptEndedException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.PatchFileMissing exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentPatchFileMissingException : EsentObsoleteException + { + /// + /// Initializes a new instance of the EsentPatchFileMissingException class. + /// + public EsentPatchFileMissingException() : + base("Hard restore detected that patch file is missing from backup set", JET_err.PatchFileMissing) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentPatchFileMissingException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentPatchFileMissingException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.DatabaseLogSetMismatch exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentDatabaseLogSetMismatchException : EsentInconsistentException + { + /// + /// Initializes a new instance of the EsentDatabaseLogSetMismatchException class. + /// + public EsentDatabaseLogSetMismatchException() : + base("Database does not belong with the current set of log files", JET_err.DatabaseLogSetMismatch) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentDatabaseLogSetMismatchException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentDatabaseLogSetMismatchException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.DatabaseStreamingFileMismatch exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentDatabaseStreamingFileMismatchException : EsentObsoleteException + { + /// + /// Initializes a new instance of the EsentDatabaseStreamingFileMismatchException class. + /// + public EsentDatabaseStreamingFileMismatchException() : + base("Database and streaming file do not match each other", JET_err.DatabaseStreamingFileMismatch) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentDatabaseStreamingFileMismatchException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentDatabaseStreamingFileMismatchException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.LogFileSizeMismatch exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentLogFileSizeMismatchException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentLogFileSizeMismatchException class. + /// + public EsentLogFileSizeMismatchException() : + base("actual log file size does not match JET_paramLogFileSize", JET_err.LogFileSizeMismatch) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentLogFileSizeMismatchException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentLogFileSizeMismatchException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.CheckpointFileNotFound exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentCheckpointFileNotFoundException : EsentInconsistentException + { + /// + /// Initializes a new instance of the EsentCheckpointFileNotFoundException class. + /// + public EsentCheckpointFileNotFoundException() : + base("Could not locate checkpoint file", JET_err.CheckpointFileNotFound) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentCheckpointFileNotFoundException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentCheckpointFileNotFoundException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.RequiredLogFilesMissing exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentRequiredLogFilesMissingException : EsentInconsistentException + { + /// + /// Initializes a new instance of the EsentRequiredLogFilesMissingException class. + /// + public EsentRequiredLogFilesMissingException() : + base("The required log files for recovery is missing.", JET_err.RequiredLogFilesMissing) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentRequiredLogFilesMissingException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentRequiredLogFilesMissingException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.SoftRecoveryOnBackupDatabase exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentSoftRecoveryOnBackupDatabaseException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentSoftRecoveryOnBackupDatabaseException class. + /// + public EsentSoftRecoveryOnBackupDatabaseException() : + base("Soft recovery is intended on a backup database. Restore should be used instead", JET_err.SoftRecoveryOnBackupDatabase) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentSoftRecoveryOnBackupDatabaseException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentSoftRecoveryOnBackupDatabaseException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.LogFileSizeMismatchDatabasesConsistent exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentLogFileSizeMismatchDatabasesConsistentException : EsentStateException + { + /// + /// Initializes a new instance of the EsentLogFileSizeMismatchDatabasesConsistentException class. + /// + public EsentLogFileSizeMismatchDatabasesConsistentException() : + base("databases have been recovered, but the log file size used during recovery does not match JET_paramLogFileSize", JET_err.LogFileSizeMismatchDatabasesConsistent) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentLogFileSizeMismatchDatabasesConsistentException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentLogFileSizeMismatchDatabasesConsistentException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.LogSectorSizeMismatch exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentLogSectorSizeMismatchException : EsentFragmentationException + { + /// + /// Initializes a new instance of the EsentLogSectorSizeMismatchException class. + /// + public EsentLogSectorSizeMismatchException() : + base("the log file sector size does not match the current volume's sector size", JET_err.LogSectorSizeMismatch) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentLogSectorSizeMismatchException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentLogSectorSizeMismatchException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.LogSectorSizeMismatchDatabasesConsistent exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentLogSectorSizeMismatchDatabasesConsistentException : EsentStateException + { + /// + /// Initializes a new instance of the EsentLogSectorSizeMismatchDatabasesConsistentException class. + /// + public EsentLogSectorSizeMismatchDatabasesConsistentException() : + base("databases have been recovered, but the log file sector size (used during recovery) does not match the current volume's sector size", JET_err.LogSectorSizeMismatchDatabasesConsistent) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentLogSectorSizeMismatchDatabasesConsistentException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentLogSectorSizeMismatchDatabasesConsistentException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.LogSequenceEndDatabasesConsistent exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentLogSequenceEndDatabasesConsistentException : EsentFragmentationException + { + /// + /// Initializes a new instance of the EsentLogSequenceEndDatabasesConsistentException class. + /// + public EsentLogSequenceEndDatabasesConsistentException() : + base("databases have been recovered, but all possible log generations in the current sequence are used; delete all log files and the checkpoint file and backup the databases before continuing", JET_err.LogSequenceEndDatabasesConsistent) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentLogSequenceEndDatabasesConsistentException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentLogSequenceEndDatabasesConsistentException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.StreamingDataNotLogged exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentStreamingDataNotLoggedException : EsentObsoleteException + { + /// + /// Initializes a new instance of the EsentStreamingDataNotLoggedException class. + /// + public EsentStreamingDataNotLoggedException() : + base("Illegal attempt to replay a streaming file operation where the data wasn't logged. Probably caused by an attempt to roll-forward with circular logging enabled", JET_err.StreamingDataNotLogged) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentStreamingDataNotLoggedException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentStreamingDataNotLoggedException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.DatabaseDirtyShutdown exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentDatabaseDirtyShutdownException : EsentInconsistentException + { + /// + /// Initializes a new instance of the EsentDatabaseDirtyShutdownException class. + /// + public EsentDatabaseDirtyShutdownException() : + base("Database was not shutdown cleanly. Recovery must first be run to properly complete database operations for the previous shutdown.", JET_err.DatabaseDirtyShutdown) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentDatabaseDirtyShutdownException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentDatabaseDirtyShutdownException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.ConsistentTimeMismatch exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentConsistentTimeMismatchException : EsentInconsistentException + { + /// + /// Initializes a new instance of the EsentConsistentTimeMismatchException class. + /// + public EsentConsistentTimeMismatchException() : + base("Database last consistent time unmatched", JET_err.ConsistentTimeMismatch) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentConsistentTimeMismatchException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentConsistentTimeMismatchException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.DatabasePatchFileMismatch exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentDatabasePatchFileMismatchException : EsentObsoleteException + { + /// + /// Initializes a new instance of the EsentDatabasePatchFileMismatchException class. + /// + public EsentDatabasePatchFileMismatchException() : + base("Patch file is not generated from this backup", JET_err.DatabasePatchFileMismatch) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentDatabasePatchFileMismatchException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentDatabasePatchFileMismatchException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.EndingRestoreLogTooLow exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentEndingRestoreLogTooLowException : EsentInconsistentException + { + /// + /// Initializes a new instance of the EsentEndingRestoreLogTooLowException class. + /// + public EsentEndingRestoreLogTooLowException() : + base("The starting log number too low for the restore", JET_err.EndingRestoreLogTooLow) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentEndingRestoreLogTooLowException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentEndingRestoreLogTooLowException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.StartingRestoreLogTooHigh exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentStartingRestoreLogTooHighException : EsentInconsistentException + { + /// + /// Initializes a new instance of the EsentStartingRestoreLogTooHighException class. + /// + public EsentStartingRestoreLogTooHighException() : + base("The starting log number too high for the restore", JET_err.StartingRestoreLogTooHigh) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentStartingRestoreLogTooHighException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentStartingRestoreLogTooHighException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.GivenLogFileHasBadSignature exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentGivenLogFileHasBadSignatureException : EsentInconsistentException + { + /// + /// Initializes a new instance of the EsentGivenLogFileHasBadSignatureException class. + /// + public EsentGivenLogFileHasBadSignatureException() : + base("Restore log file has bad signature", JET_err.GivenLogFileHasBadSignature) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentGivenLogFileHasBadSignatureException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentGivenLogFileHasBadSignatureException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.GivenLogFileIsNotContiguous exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentGivenLogFileIsNotContiguousException : EsentInconsistentException + { + /// + /// Initializes a new instance of the EsentGivenLogFileIsNotContiguousException class. + /// + public EsentGivenLogFileIsNotContiguousException() : + base("Restore log file is not contiguous", JET_err.GivenLogFileIsNotContiguous) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentGivenLogFileIsNotContiguousException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentGivenLogFileIsNotContiguousException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.MissingRestoreLogFiles exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentMissingRestoreLogFilesException : EsentInconsistentException + { + /// + /// Initializes a new instance of the EsentMissingRestoreLogFilesException class. + /// + public EsentMissingRestoreLogFilesException() : + base("Some restore log files are missing", JET_err.MissingRestoreLogFiles) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentMissingRestoreLogFilesException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentMissingRestoreLogFilesException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.MissingFullBackup exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentMissingFullBackupException : EsentStateException + { + /// + /// Initializes a new instance of the EsentMissingFullBackupException class. + /// + public EsentMissingFullBackupException() : + base("The database missed a previous full backup before incremental backup", JET_err.MissingFullBackup) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentMissingFullBackupException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentMissingFullBackupException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.BadBackupDatabaseSize exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentBadBackupDatabaseSizeException : EsentObsoleteException + { + /// + /// Initializes a new instance of the EsentBadBackupDatabaseSizeException class. + /// + public EsentBadBackupDatabaseSizeException() : + base("The backup database size is not in 4k", JET_err.BadBackupDatabaseSize) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentBadBackupDatabaseSizeException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentBadBackupDatabaseSizeException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.DatabaseAlreadyUpgraded exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentDatabaseAlreadyUpgradedException : EsentStateException + { + /// + /// Initializes a new instance of the EsentDatabaseAlreadyUpgradedException class. + /// + public EsentDatabaseAlreadyUpgradedException() : + base("Attempted to upgrade a database that is already current", JET_err.DatabaseAlreadyUpgraded) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentDatabaseAlreadyUpgradedException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentDatabaseAlreadyUpgradedException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.DatabaseIncompleteUpgrade exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentDatabaseIncompleteUpgradeException : EsentStateException + { + /// + /// Initializes a new instance of the EsentDatabaseIncompleteUpgradeException class. + /// + public EsentDatabaseIncompleteUpgradeException() : + base("Attempted to use a database which was only partially converted to the current format -- must restore from backup", JET_err.DatabaseIncompleteUpgrade) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentDatabaseIncompleteUpgradeException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentDatabaseIncompleteUpgradeException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.MissingCurrentLogFiles exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentMissingCurrentLogFilesException : EsentInconsistentException + { + /// + /// Initializes a new instance of the EsentMissingCurrentLogFilesException class. + /// + public EsentMissingCurrentLogFilesException() : + base("Some current log files are missing for continuous restore", JET_err.MissingCurrentLogFiles) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentMissingCurrentLogFilesException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentMissingCurrentLogFilesException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.DbTimeTooOld exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentDbTimeTooOldException : EsentCorruptionException + { + /// + /// Initializes a new instance of the EsentDbTimeTooOldException class. + /// + public EsentDbTimeTooOldException() : + base("dbtime on page smaller than dbtimeBefore in record", JET_err.DbTimeTooOld) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentDbTimeTooOldException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentDbTimeTooOldException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.DbTimeTooNew exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentDbTimeTooNewException : EsentCorruptionException + { + /// + /// Initializes a new instance of the EsentDbTimeTooNewException class. + /// + public EsentDbTimeTooNewException() : + base("dbtime on page in advance of the dbtimeBefore in record", JET_err.DbTimeTooNew) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentDbTimeTooNewException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentDbTimeTooNewException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.MissingFileToBackup exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentMissingFileToBackupException : EsentInconsistentException + { + /// + /// Initializes a new instance of the EsentMissingFileToBackupException class. + /// + public EsentMissingFileToBackupException() : + base("Some log or patch files are missing during backup", JET_err.MissingFileToBackup) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentMissingFileToBackupException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentMissingFileToBackupException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.LogTornWriteDuringHardRestore exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentLogTornWriteDuringHardRestoreException : EsentCorruptionException + { + /// + /// Initializes a new instance of the EsentLogTornWriteDuringHardRestoreException class. + /// + public EsentLogTornWriteDuringHardRestoreException() : + base("torn-write was detected in a backup set during hard restore", JET_err.LogTornWriteDuringHardRestore) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentLogTornWriteDuringHardRestoreException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentLogTornWriteDuringHardRestoreException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.LogTornWriteDuringHardRecovery exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentLogTornWriteDuringHardRecoveryException : EsentCorruptionException + { + /// + /// Initializes a new instance of the EsentLogTornWriteDuringHardRecoveryException class. + /// + public EsentLogTornWriteDuringHardRecoveryException() : + base("torn-write was detected during hard recovery (log was not part of a backup set)", JET_err.LogTornWriteDuringHardRecovery) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentLogTornWriteDuringHardRecoveryException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentLogTornWriteDuringHardRecoveryException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.LogCorruptDuringHardRestore exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentLogCorruptDuringHardRestoreException : EsentCorruptionException + { + /// + /// Initializes a new instance of the EsentLogCorruptDuringHardRestoreException class. + /// + public EsentLogCorruptDuringHardRestoreException() : + base("corruption was detected in a backup set during hard restore", JET_err.LogCorruptDuringHardRestore) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentLogCorruptDuringHardRestoreException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentLogCorruptDuringHardRestoreException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.LogCorruptDuringHardRecovery exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentLogCorruptDuringHardRecoveryException : EsentCorruptionException + { + /// + /// Initializes a new instance of the EsentLogCorruptDuringHardRecoveryException class. + /// + public EsentLogCorruptDuringHardRecoveryException() : + base("corruption was detected during hard recovery (log was not part of a backup set)", JET_err.LogCorruptDuringHardRecovery) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentLogCorruptDuringHardRecoveryException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentLogCorruptDuringHardRecoveryException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.MustDisableLoggingForDbUpgrade exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentMustDisableLoggingForDbUpgradeException : EsentObsoleteException + { + /// + /// Initializes a new instance of the EsentMustDisableLoggingForDbUpgradeException class. + /// + public EsentMustDisableLoggingForDbUpgradeException() : + base("Cannot have logging enabled while attempting to upgrade db", JET_err.MustDisableLoggingForDbUpgrade) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentMustDisableLoggingForDbUpgradeException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentMustDisableLoggingForDbUpgradeException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.BadRestoreTargetInstance exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentBadRestoreTargetInstanceException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentBadRestoreTargetInstanceException class. + /// + public EsentBadRestoreTargetInstanceException() : + base("TargetInstance specified for restore is not found or log files don't match", JET_err.BadRestoreTargetInstance) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentBadRestoreTargetInstanceException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentBadRestoreTargetInstanceException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.RecoveredWithoutUndo exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentRecoveredWithoutUndoException : EsentStateException + { + /// + /// Initializes a new instance of the EsentRecoveredWithoutUndoException class. + /// + public EsentRecoveredWithoutUndoException() : + base("Soft recovery successfully replayed all operations, but the Undo phase of recovery was skipped", JET_err.RecoveredWithoutUndo) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentRecoveredWithoutUndoException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentRecoveredWithoutUndoException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.DatabasesNotFromSameSnapshot exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentDatabasesNotFromSameSnapshotException : EsentObsoleteException + { + /// + /// Initializes a new instance of the EsentDatabasesNotFromSameSnapshotException class. + /// + public EsentDatabasesNotFromSameSnapshotException() : + base("Databases to be restored are not from the same shadow copy backup", JET_err.DatabasesNotFromSameSnapshot) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentDatabasesNotFromSameSnapshotException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentDatabasesNotFromSameSnapshotException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.SoftRecoveryOnSnapshot exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentSoftRecoveryOnSnapshotException : EsentObsoleteException + { + /// + /// Initializes a new instance of the EsentSoftRecoveryOnSnapshotException class. + /// + public EsentSoftRecoveryOnSnapshotException() : + base("Soft recovery on a database from a shadow copy backup set", JET_err.SoftRecoveryOnSnapshot) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentSoftRecoveryOnSnapshotException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentSoftRecoveryOnSnapshotException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.CommittedLogFilesMissing exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentCommittedLogFilesMissingException : EsentCorruptionException + { + /// + /// Initializes a new instance of the EsentCommittedLogFilesMissingException class. + /// + public EsentCommittedLogFilesMissingException() : + base("One or more logs that were committed to this database, are missing. These log files are required to maintain durable ACID semantics, but not required to maintain consistency if the JET_bitReplayIgnoreLostLogs bit is specified during recovery.", JET_err.CommittedLogFilesMissing) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentCommittedLogFilesMissingException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentCommittedLogFilesMissingException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.SectorSizeNotSupported exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentSectorSizeNotSupportedException : EsentFatalException + { + /// + /// Initializes a new instance of the EsentSectorSizeNotSupportedException class. + /// + public EsentSectorSizeNotSupportedException() : + base("The physical sector size reported by the disk subsystem, is unsupported by ESE for a specific file type.", JET_err.SectorSizeNotSupported) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentSectorSizeNotSupportedException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentSectorSizeNotSupportedException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.RecoveredWithoutUndoDatabasesConsistent exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentRecoveredWithoutUndoDatabasesConsistentException : EsentStateException + { + /// + /// Initializes a new instance of the EsentRecoveredWithoutUndoDatabasesConsistentException class. + /// + public EsentRecoveredWithoutUndoDatabasesConsistentException() : + base("Soft recovery successfully replayed all operations and intended to skip the Undo phase of recovery, but the Undo phase was not required", JET_err.RecoveredWithoutUndoDatabasesConsistent) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentRecoveredWithoutUndoDatabasesConsistentException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentRecoveredWithoutUndoDatabasesConsistentException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.CommittedLogFileCorrupt exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentCommittedLogFileCorruptException : EsentCorruptionException + { + /// + /// Initializes a new instance of the EsentCommittedLogFileCorruptException class. + /// + public EsentCommittedLogFileCorruptException() : + base("One or more logs were found to be corrupt during recovery. These log files are required to maintain durable ACID semantics, but not required to maintain consistency if the JET_bitIgnoreLostLogs bit and JET_paramDeleteOutOfRangeLogs is specified during recovery.", JET_err.CommittedLogFileCorrupt) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentCommittedLogFileCorruptException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentCommittedLogFileCorruptException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.LogSequenceChecksumMismatch exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentLogSequenceChecksumMismatchException : EsentCorruptionException + { + /// + /// Initializes a new instance of the EsentLogSequenceChecksumMismatchException class. + /// + public EsentLogSequenceChecksumMismatchException() : + base("The previous log's accumulated segment checksum doesn't match the next log", JET_err.LogSequenceChecksumMismatch) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentLogSequenceChecksumMismatchException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentLogSequenceChecksumMismatchException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.PageInitializedMismatch exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentPageInitializedMismatchException : EsentCorruptionException + { + /// + /// Initializes a new instance of the EsentPageInitializedMismatchException class. + /// + public EsentPageInitializedMismatchException() : + base("Database divergence mismatch. Page was uninitialized on remote node, but initialized on local node.", JET_err.PageInitializedMismatch) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentPageInitializedMismatchException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentPageInitializedMismatchException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.UnicodeTranslationBufferTooSmall exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentUnicodeTranslationBufferTooSmallException : EsentObsoleteException + { + /// + /// Initializes a new instance of the EsentUnicodeTranslationBufferTooSmallException class. + /// + public EsentUnicodeTranslationBufferTooSmallException() : + base("Unicode translation buffer too small", JET_err.UnicodeTranslationBufferTooSmall) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentUnicodeTranslationBufferTooSmallException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentUnicodeTranslationBufferTooSmallException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.UnicodeTranslationFail exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentUnicodeTranslationFailException : EsentOperationException + { + /// + /// Initializes a new instance of the EsentUnicodeTranslationFailException class. + /// + public EsentUnicodeTranslationFailException() : + base("Unicode normalization failed", JET_err.UnicodeTranslationFail) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentUnicodeTranslationFailException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentUnicodeTranslationFailException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.UnicodeNormalizationNotSupported exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentUnicodeNormalizationNotSupportedException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentUnicodeNormalizationNotSupportedException class. + /// + public EsentUnicodeNormalizationNotSupportedException() : + base("OS does not provide support for Unicode normalisation (and no normalisation callback was specified)", JET_err.UnicodeNormalizationNotSupported) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentUnicodeNormalizationNotSupportedException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentUnicodeNormalizationNotSupportedException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.UnicodeLanguageValidationFailure exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentUnicodeLanguageValidationFailureException : EsentOperationException + { + /// + /// Initializes a new instance of the EsentUnicodeLanguageValidationFailureException class. + /// + public EsentUnicodeLanguageValidationFailureException() : + base("Can not validate the language", JET_err.UnicodeLanguageValidationFailure) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentUnicodeLanguageValidationFailureException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentUnicodeLanguageValidationFailureException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.ExistingLogFileHasBadSignature exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentExistingLogFileHasBadSignatureException : EsentInconsistentException + { + /// + /// Initializes a new instance of the EsentExistingLogFileHasBadSignatureException class. + /// + public EsentExistingLogFileHasBadSignatureException() : + base("Existing log file has bad signature", JET_err.ExistingLogFileHasBadSignature) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentExistingLogFileHasBadSignatureException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentExistingLogFileHasBadSignatureException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.ExistingLogFileIsNotContiguous exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentExistingLogFileIsNotContiguousException : EsentInconsistentException + { + /// + /// Initializes a new instance of the EsentExistingLogFileIsNotContiguousException class. + /// + public EsentExistingLogFileIsNotContiguousException() : + base("Existing log file is not contiguous", JET_err.ExistingLogFileIsNotContiguous) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentExistingLogFileIsNotContiguousException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentExistingLogFileIsNotContiguousException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.LogReadVerifyFailure exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentLogReadVerifyFailureException : EsentCorruptionException + { + /// + /// Initializes a new instance of the EsentLogReadVerifyFailureException class. + /// + public EsentLogReadVerifyFailureException() : + base("Checksum error in log file during backup", JET_err.LogReadVerifyFailure) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentLogReadVerifyFailureException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentLogReadVerifyFailureException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.CheckpointDepthTooDeep exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentCheckpointDepthTooDeepException : EsentQuotaException + { + /// + /// Initializes a new instance of the EsentCheckpointDepthTooDeepException class. + /// + public EsentCheckpointDepthTooDeepException() : + base("too many outstanding generations between checkpoint and current generation", JET_err.CheckpointDepthTooDeep) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentCheckpointDepthTooDeepException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentCheckpointDepthTooDeepException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.RestoreOfNonBackupDatabase exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentRestoreOfNonBackupDatabaseException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentRestoreOfNonBackupDatabaseException class. + /// + public EsentRestoreOfNonBackupDatabaseException() : + base("hard recovery attempted on a database that wasn't a backup database", JET_err.RestoreOfNonBackupDatabase) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentRestoreOfNonBackupDatabaseException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentRestoreOfNonBackupDatabaseException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.LogFileNotCopied exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentLogFileNotCopiedException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentLogFileNotCopiedException class. + /// + public EsentLogFileNotCopiedException() : + base("log truncation attempted but not all required logs were copied", JET_err.LogFileNotCopied) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentLogFileNotCopiedException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentLogFileNotCopiedException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.SurrogateBackupInProgress exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentSurrogateBackupInProgressException : EsentStateException + { + /// + /// Initializes a new instance of the EsentSurrogateBackupInProgressException class. + /// + public EsentSurrogateBackupInProgressException() : + base("A surrogate backup is in progress.", JET_err.SurrogateBackupInProgress) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentSurrogateBackupInProgressException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentSurrogateBackupInProgressException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.TransactionTooLong exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentTransactionTooLongException : EsentQuotaException + { + /// + /// Initializes a new instance of the EsentTransactionTooLongException class. + /// + public EsentTransactionTooLongException() : + base("Too many outstanding generations between JetBeginTransaction and current generation.", JET_err.TransactionTooLong) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentTransactionTooLongException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentTransactionTooLongException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.EngineFormatVersionNoLongerSupportedTooLow exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentEngineFormatVersionNoLongerSupportedTooLowException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentEngineFormatVersionNoLongerSupportedTooLowException class. + /// + public EsentEngineFormatVersionNoLongerSupportedTooLowException() : + base("The specified JET_ENGINEFORMATVERSION value is too low to be supported by this version of ESE.", JET_err.EngineFormatVersionNoLongerSupportedTooLow) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentEngineFormatVersionNoLongerSupportedTooLowException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentEngineFormatVersionNoLongerSupportedTooLowException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.EngineFormatVersionNotYetImplementedTooHigh exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentEngineFormatVersionNotYetImplementedTooHighException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentEngineFormatVersionNotYetImplementedTooHighException class. + /// + public EsentEngineFormatVersionNotYetImplementedTooHighException() : + base("The specified JET_ENGINEFORMATVERSION value is too high, higher than this version of ESE knows about.", JET_err.EngineFormatVersionNotYetImplementedTooHigh) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentEngineFormatVersionNotYetImplementedTooHighException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentEngineFormatVersionNotYetImplementedTooHighException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.EngineFormatVersionParamTooLowForRequestedFeature exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentEngineFormatVersionParamTooLowForRequestedFeatureException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentEngineFormatVersionParamTooLowForRequestedFeatureException class. + /// + public EsentEngineFormatVersionParamTooLowForRequestedFeatureException() : + base("Thrown by a format feature (not at JetSetSystemParameter) if the client requests a feature that requires a version higher than that set for the JET_paramEngineFormatVersion.", JET_err.EngineFormatVersionParamTooLowForRequestedFeature) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentEngineFormatVersionParamTooLowForRequestedFeatureException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentEngineFormatVersionParamTooLowForRequestedFeatureException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.EngineFormatVersionSpecifiedTooLowForLogVersion exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentEngineFormatVersionSpecifiedTooLowForLogVersionException : EsentStateException + { + /// + /// Initializes a new instance of the EsentEngineFormatVersionSpecifiedTooLowForLogVersionException class. + /// + public EsentEngineFormatVersionSpecifiedTooLowForLogVersionException() : + base("The specified JET_ENGINEFORMATVERSION is set too low for this log stream, the log files have already been upgraded to a higher version. A higher JET_ENGINEFORMATVERSION value must be set in the param.", JET_err.EngineFormatVersionSpecifiedTooLowForLogVersion) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentEngineFormatVersionSpecifiedTooLowForLogVersionException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentEngineFormatVersionSpecifiedTooLowForLogVersionException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.EngineFormatVersionSpecifiedTooLowForDatabaseVersion exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentEngineFormatVersionSpecifiedTooLowForDatabaseVersionException : EsentStateException + { + /// + /// Initializes a new instance of the EsentEngineFormatVersionSpecifiedTooLowForDatabaseVersionException class. + /// + public EsentEngineFormatVersionSpecifiedTooLowForDatabaseVersionException() : + base("The specified JET_ENGINEFORMATVERSION is set too low for this database file, the database file has already been upgraded to a higher version. A higher JET_ENGINEFORMATVERSION value must be set in the param.", JET_err.EngineFormatVersionSpecifiedTooLowForDatabaseVersion) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentEngineFormatVersionSpecifiedTooLowForDatabaseVersionException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentEngineFormatVersionSpecifiedTooLowForDatabaseVersionException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.BackupAbortByServer exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentBackupAbortByServerException : EsentOperationException + { + /// + /// Initializes a new instance of the EsentBackupAbortByServerException class. + /// + public EsentBackupAbortByServerException() : + base("Backup was aborted by server by calling JetTerm with JET_bitTermStopBackup or by calling JetStopBackup", JET_err.BackupAbortByServer) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentBackupAbortByServerException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentBackupAbortByServerException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.InvalidGrbit exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentInvalidGrbitException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentInvalidGrbitException class. + /// + public EsentInvalidGrbitException() : + base("Invalid flags parameter", JET_err.InvalidGrbit) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentInvalidGrbitException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentInvalidGrbitException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.TermInProgress exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentTermInProgressException : EsentOperationException + { + /// + /// Initializes a new instance of the EsentTermInProgressException class. + /// + public EsentTermInProgressException() : + base("Termination in progress", JET_err.TermInProgress) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentTermInProgressException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentTermInProgressException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.FeatureNotAvailable exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentFeatureNotAvailableException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentFeatureNotAvailableException class. + /// + public EsentFeatureNotAvailableException() : + base("API not supported", JET_err.FeatureNotAvailable) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentFeatureNotAvailableException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentFeatureNotAvailableException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.InvalidName exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentInvalidNameException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentInvalidNameException class. + /// + public EsentInvalidNameException() : + base("Invalid name", JET_err.InvalidName) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentInvalidNameException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentInvalidNameException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.InvalidParameter exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentInvalidParameterException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentInvalidParameterException class. + /// + public EsentInvalidParameterException() : + base("Invalid API parameter", JET_err.InvalidParameter) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentInvalidParameterException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentInvalidParameterException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.DatabaseFileReadOnly exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentDatabaseFileReadOnlyException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentDatabaseFileReadOnlyException class. + /// + public EsentDatabaseFileReadOnlyException() : + base("Tried to attach a read-only database file for read/write operations", JET_err.DatabaseFileReadOnly) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentDatabaseFileReadOnlyException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentDatabaseFileReadOnlyException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.InvalidDatabaseId exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentInvalidDatabaseIdException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentInvalidDatabaseIdException class. + /// + public EsentInvalidDatabaseIdException() : + base("Invalid database id", JET_err.InvalidDatabaseId) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentInvalidDatabaseIdException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentInvalidDatabaseIdException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.OutOfMemory exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentOutOfMemoryException : EsentMemoryException + { + /// + /// Initializes a new instance of the EsentOutOfMemoryException class. + /// + public EsentOutOfMemoryException() : + base("Out of Memory", JET_err.OutOfMemory) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentOutOfMemoryException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentOutOfMemoryException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.OutOfDatabaseSpace exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentOutOfDatabaseSpaceException : EsentQuotaException + { + /// + /// Initializes a new instance of the EsentOutOfDatabaseSpaceException class. + /// + public EsentOutOfDatabaseSpaceException() : + base("Maximum database size reached", JET_err.OutOfDatabaseSpace) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentOutOfDatabaseSpaceException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentOutOfDatabaseSpaceException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.OutOfCursors exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentOutOfCursorsException : EsentMemoryException + { + /// + /// Initializes a new instance of the EsentOutOfCursorsException class. + /// + public EsentOutOfCursorsException() : + base("Out of table cursors", JET_err.OutOfCursors) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentOutOfCursorsException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentOutOfCursorsException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.OutOfBuffers exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentOutOfBuffersException : EsentMemoryException + { + /// + /// Initializes a new instance of the EsentOutOfBuffersException class. + /// + public EsentOutOfBuffersException() : + base("Out of database page buffers", JET_err.OutOfBuffers) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentOutOfBuffersException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentOutOfBuffersException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.TooManyIndexes exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentTooManyIndexesException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentTooManyIndexesException class. + /// + public EsentTooManyIndexesException() : + base("Too many indexes", JET_err.TooManyIndexes) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentTooManyIndexesException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentTooManyIndexesException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.TooManyKeys exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentTooManyKeysException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentTooManyKeysException class. + /// + public EsentTooManyKeysException() : + base("Too many columns in an index", JET_err.TooManyKeys) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentTooManyKeysException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentTooManyKeysException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.RecordDeleted exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentRecordDeletedException : EsentStateException + { + /// + /// Initializes a new instance of the EsentRecordDeletedException class. + /// + public EsentRecordDeletedException() : + base("Record has been deleted", JET_err.RecordDeleted) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentRecordDeletedException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentRecordDeletedException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.ReadVerifyFailure exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentReadVerifyFailureException : EsentCorruptionException + { + /// + /// Initializes a new instance of the EsentReadVerifyFailureException class. + /// + public EsentReadVerifyFailureException() : + base("Checksum error on a database page", JET_err.ReadVerifyFailure) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentReadVerifyFailureException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentReadVerifyFailureException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.PageNotInitialized exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentPageNotInitializedException : EsentCorruptionException + { + /// + /// Initializes a new instance of the EsentPageNotInitializedException class. + /// + public EsentPageNotInitializedException() : + base("Blank database page", JET_err.PageNotInitialized) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentPageNotInitializedException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentPageNotInitializedException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.OutOfFileHandles exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentOutOfFileHandlesException : EsentMemoryException + { + /// + /// Initializes a new instance of the EsentOutOfFileHandlesException class. + /// + public EsentOutOfFileHandlesException() : + base("Out of file handles", JET_err.OutOfFileHandles) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentOutOfFileHandlesException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentOutOfFileHandlesException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.DiskReadVerificationFailure exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentDiskReadVerificationFailureException : EsentCorruptionException + { + /// + /// Initializes a new instance of the EsentDiskReadVerificationFailureException class. + /// + public EsentDiskReadVerificationFailureException() : + base("The OS returned ERROR_CRC from file IO", JET_err.DiskReadVerificationFailure) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentDiskReadVerificationFailureException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentDiskReadVerificationFailureException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.DiskIO exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentDiskIOException : EsentIOException + { + /// + /// Initializes a new instance of the EsentDiskIOException class. + /// + public EsentDiskIOException() : + base("Disk IO error", JET_err.DiskIO) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentDiskIOException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentDiskIOException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.InvalidPath exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentInvalidPathException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentInvalidPathException class. + /// + public EsentInvalidPathException() : + base("Invalid file path", JET_err.InvalidPath) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentInvalidPathException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentInvalidPathException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.InvalidSystemPath exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentInvalidSystemPathException : EsentObsoleteException + { + /// + /// Initializes a new instance of the EsentInvalidSystemPathException class. + /// + public EsentInvalidSystemPathException() : + base("Invalid system path", JET_err.InvalidSystemPath) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentInvalidSystemPathException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentInvalidSystemPathException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.InvalidLogDirectory exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentInvalidLogDirectoryException : EsentObsoleteException + { + /// + /// Initializes a new instance of the EsentInvalidLogDirectoryException class. + /// + public EsentInvalidLogDirectoryException() : + base("Invalid log directory", JET_err.InvalidLogDirectory) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentInvalidLogDirectoryException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentInvalidLogDirectoryException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.RecordTooBig exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentRecordTooBigException : EsentStateException + { + /// + /// Initializes a new instance of the EsentRecordTooBigException class. + /// + public EsentRecordTooBigException() : + base("Record larger than maximum size", JET_err.RecordTooBig) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentRecordTooBigException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentRecordTooBigException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.TooManyOpenDatabases exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentTooManyOpenDatabasesException : EsentObsoleteException + { + /// + /// Initializes a new instance of the EsentTooManyOpenDatabasesException class. + /// + public EsentTooManyOpenDatabasesException() : + base("Too many open databases", JET_err.TooManyOpenDatabases) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentTooManyOpenDatabasesException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentTooManyOpenDatabasesException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.InvalidDatabase exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentInvalidDatabaseException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentInvalidDatabaseException class. + /// + public EsentInvalidDatabaseException() : + base("Not a database file", JET_err.InvalidDatabase) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentInvalidDatabaseException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentInvalidDatabaseException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.NotInitialized exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentNotInitializedException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentNotInitializedException class. + /// + public EsentNotInitializedException() : + base("Database engine not initialized", JET_err.NotInitialized) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentNotInitializedException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentNotInitializedException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.AlreadyInitialized exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentAlreadyInitializedException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentAlreadyInitializedException class. + /// + public EsentAlreadyInitializedException() : + base("Database engine already initialized", JET_err.AlreadyInitialized) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentAlreadyInitializedException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentAlreadyInitializedException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.InitInProgress exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentInitInProgressException : EsentOperationException + { + /// + /// Initializes a new instance of the EsentInitInProgressException class. + /// + public EsentInitInProgressException() : + base("Database engine is being initialized", JET_err.InitInProgress) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentInitInProgressException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentInitInProgressException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.FileAccessDenied exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentFileAccessDeniedException : EsentIOException + { + /// + /// Initializes a new instance of the EsentFileAccessDeniedException class. + /// + public EsentFileAccessDeniedException() : + base("Cannot access file, the file is locked or in use", JET_err.FileAccessDenied) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentFileAccessDeniedException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentFileAccessDeniedException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.QueryNotSupported exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentQueryNotSupportedException : EsentObsoleteException + { + /// + /// Initializes a new instance of the EsentQueryNotSupportedException class. + /// + public EsentQueryNotSupportedException() : + base("Query support unavailable", JET_err.QueryNotSupported) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentQueryNotSupportedException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentQueryNotSupportedException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.SQLLinkNotSupported exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentSQLLinkNotSupportedException : EsentObsoleteException + { + /// + /// Initializes a new instance of the EsentSQLLinkNotSupportedException class. + /// + public EsentSQLLinkNotSupportedException() : + base("SQL Link support unavailable", JET_err.SQLLinkNotSupported) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentSQLLinkNotSupportedException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentSQLLinkNotSupportedException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.BufferTooSmall exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentBufferTooSmallException : EsentStateException + { + /// + /// Initializes a new instance of the EsentBufferTooSmallException class. + /// + public EsentBufferTooSmallException() : + base("Buffer is too small", JET_err.BufferTooSmall) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentBufferTooSmallException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentBufferTooSmallException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.TooManyColumns exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentTooManyColumnsException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentTooManyColumnsException class. + /// + public EsentTooManyColumnsException() : + base("Too many columns defined", JET_err.TooManyColumns) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentTooManyColumnsException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentTooManyColumnsException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.ContainerNotEmpty exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentContainerNotEmptyException : EsentObsoleteException + { + /// + /// Initializes a new instance of the EsentContainerNotEmptyException class. + /// + public EsentContainerNotEmptyException() : + base("Container is not empty", JET_err.ContainerNotEmpty) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentContainerNotEmptyException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentContainerNotEmptyException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.InvalidFilename exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentInvalidFilenameException : EsentObsoleteException + { + /// + /// Initializes a new instance of the EsentInvalidFilenameException class. + /// + public EsentInvalidFilenameException() : + base("Filename is invalid", JET_err.InvalidFilename) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentInvalidFilenameException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentInvalidFilenameException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.InvalidBookmark exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentInvalidBookmarkException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentInvalidBookmarkException class. + /// + public EsentInvalidBookmarkException() : + base("Invalid bookmark", JET_err.InvalidBookmark) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentInvalidBookmarkException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentInvalidBookmarkException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.ColumnInUse exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentColumnInUseException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentColumnInUseException class. + /// + public EsentColumnInUseException() : + base("Column used in an index", JET_err.ColumnInUse) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentColumnInUseException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentColumnInUseException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.InvalidBufferSize exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentInvalidBufferSizeException : EsentStateException + { + /// + /// Initializes a new instance of the EsentInvalidBufferSizeException class. + /// + public EsentInvalidBufferSizeException() : + base("Data buffer doesn't match column size", JET_err.InvalidBufferSize) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentInvalidBufferSizeException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentInvalidBufferSizeException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.ColumnNotUpdatable exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentColumnNotUpdatableException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentColumnNotUpdatableException class. + /// + public EsentColumnNotUpdatableException() : + base("Cannot set column value", JET_err.ColumnNotUpdatable) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentColumnNotUpdatableException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentColumnNotUpdatableException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.IndexInUse exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentIndexInUseException : EsentStateException + { + /// + /// Initializes a new instance of the EsentIndexInUseException class. + /// + public EsentIndexInUseException() : + base("Index is in use", JET_err.IndexInUse) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentIndexInUseException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentIndexInUseException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.LinkNotSupported exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentLinkNotSupportedException : EsentObsoleteException + { + /// + /// Initializes a new instance of the EsentLinkNotSupportedException class. + /// + public EsentLinkNotSupportedException() : + base("Link support unavailable", JET_err.LinkNotSupported) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentLinkNotSupportedException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentLinkNotSupportedException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.NullKeyDisallowed exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentNullKeyDisallowedException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentNullKeyDisallowedException class. + /// + public EsentNullKeyDisallowedException() : + base("Null keys are disallowed on index", JET_err.NullKeyDisallowed) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentNullKeyDisallowedException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentNullKeyDisallowedException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.NotInTransaction exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentNotInTransactionException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentNotInTransactionException class. + /// + public EsentNotInTransactionException() : + base("Operation must be within a transaction", JET_err.NotInTransaction) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentNotInTransactionException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentNotInTransactionException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.MustRollback exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentMustRollbackException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentMustRollbackException class. + /// + public EsentMustRollbackException() : + base("Transaction must rollback because failure of unversioned update", JET_err.MustRollback) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentMustRollbackException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentMustRollbackException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.TooManyActiveUsers exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentTooManyActiveUsersException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentTooManyActiveUsersException class. + /// + public EsentTooManyActiveUsersException() : + base("Too many active database users", JET_err.TooManyActiveUsers) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentTooManyActiveUsersException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentTooManyActiveUsersException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.InvalidCountry exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentInvalidCountryException : EsentObsoleteException + { + /// + /// Initializes a new instance of the EsentInvalidCountryException class. + /// + public EsentInvalidCountryException() : + base("Invalid or unknown country/region code", JET_err.InvalidCountry) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentInvalidCountryException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentInvalidCountryException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.InvalidLanguageId exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentInvalidLanguageIdException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentInvalidLanguageIdException class. + /// + public EsentInvalidLanguageIdException() : + base("Invalid or unknown language id", JET_err.InvalidLanguageId) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentInvalidLanguageIdException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentInvalidLanguageIdException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.InvalidCodePage exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentInvalidCodePageException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentInvalidCodePageException class. + /// + public EsentInvalidCodePageException() : + base("Invalid or unknown code page", JET_err.InvalidCodePage) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentInvalidCodePageException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentInvalidCodePageException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.InvalidLCMapStringFlags exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentInvalidLCMapStringFlagsException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentInvalidLCMapStringFlagsException class. + /// + public EsentInvalidLCMapStringFlagsException() : + base("Invalid flags for LCMapString()", JET_err.InvalidLCMapStringFlags) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentInvalidLCMapStringFlagsException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentInvalidLCMapStringFlagsException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.VersionStoreEntryTooBig exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentVersionStoreEntryTooBigException : EsentErrorException + { + /// + /// Initializes a new instance of the EsentVersionStoreEntryTooBigException class. + /// + public EsentVersionStoreEntryTooBigException() : + base("Attempted to create a version store entry (RCE) larger than a version bucket", JET_err.VersionStoreEntryTooBig) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentVersionStoreEntryTooBigException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentVersionStoreEntryTooBigException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.VersionStoreOutOfMemoryAndCleanupTimedOut exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentVersionStoreOutOfMemoryAndCleanupTimedOutException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentVersionStoreOutOfMemoryAndCleanupTimedOutException class. + /// + public EsentVersionStoreOutOfMemoryAndCleanupTimedOutException() : + base("Version store out of memory (and cleanup attempt failed to complete)", JET_err.VersionStoreOutOfMemoryAndCleanupTimedOut) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentVersionStoreOutOfMemoryAndCleanupTimedOutException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentVersionStoreOutOfMemoryAndCleanupTimedOutException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.VersionStoreOutOfMemory exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentVersionStoreOutOfMemoryException : EsentQuotaException + { + /// + /// Initializes a new instance of the EsentVersionStoreOutOfMemoryException class. + /// + public EsentVersionStoreOutOfMemoryException() : + base("Version store out of memory (cleanup already attempted)", JET_err.VersionStoreOutOfMemory) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentVersionStoreOutOfMemoryException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentVersionStoreOutOfMemoryException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.CurrencyStackOutOfMemory exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentCurrencyStackOutOfMemoryException : EsentObsoleteException + { + /// + /// Initializes a new instance of the EsentCurrencyStackOutOfMemoryException class. + /// + public EsentCurrencyStackOutOfMemoryException() : + base("UNUSED: lCSRPerfFUCB * g_lCursorsMax exceeded (XJET only)", JET_err.CurrencyStackOutOfMemory) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentCurrencyStackOutOfMemoryException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentCurrencyStackOutOfMemoryException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.CannotIndex exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentCannotIndexException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentCannotIndexException class. + /// + public EsentCannotIndexException() : + base("Cannot index escrow column", JET_err.CannotIndex) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentCannotIndexException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentCannotIndexException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.RecordNotDeleted exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentRecordNotDeletedException : EsentOperationException + { + /// + /// Initializes a new instance of the EsentRecordNotDeletedException class. + /// + public EsentRecordNotDeletedException() : + base("Record has not been deleted", JET_err.RecordNotDeleted) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentRecordNotDeletedException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentRecordNotDeletedException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.TooManyMempoolEntries exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentTooManyMempoolEntriesException : EsentMemoryException + { + /// + /// Initializes a new instance of the EsentTooManyMempoolEntriesException class. + /// + public EsentTooManyMempoolEntriesException() : + base("Too many mempool entries requested", JET_err.TooManyMempoolEntries) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentTooManyMempoolEntriesException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentTooManyMempoolEntriesException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.OutOfObjectIDs exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentOutOfObjectIDsException : EsentFragmentationException + { + /// + /// Initializes a new instance of the EsentOutOfObjectIDsException class. + /// + public EsentOutOfObjectIDsException() : + base("Out of btree ObjectIDs (perform offline defrag to reclaim freed/unused ObjectIds)", JET_err.OutOfObjectIDs) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentOutOfObjectIDsException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentOutOfObjectIDsException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.OutOfLongValueIDs exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentOutOfLongValueIDsException : EsentFragmentationException + { + /// + /// Initializes a new instance of the EsentOutOfLongValueIDsException class. + /// + public EsentOutOfLongValueIDsException() : + base("Long-value ID counter has reached maximum value. (perform offline defrag to reclaim free/unused LongValueIDs)", JET_err.OutOfLongValueIDs) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentOutOfLongValueIDsException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentOutOfLongValueIDsException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.OutOfAutoincrementValues exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentOutOfAutoincrementValuesException : EsentFragmentationException + { + /// + /// Initializes a new instance of the EsentOutOfAutoincrementValuesException class. + /// + public EsentOutOfAutoincrementValuesException() : + base("Auto-increment counter has reached maximum value (offline defrag WILL NOT be able to reclaim free/unused Auto-increment values).", JET_err.OutOfAutoincrementValues) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentOutOfAutoincrementValuesException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentOutOfAutoincrementValuesException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.OutOfDbtimeValues exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentOutOfDbtimeValuesException : EsentFragmentationException + { + /// + /// Initializes a new instance of the EsentOutOfDbtimeValuesException class. + /// + public EsentOutOfDbtimeValuesException() : + base("Dbtime counter has reached maximum value (perform offline defrag to reclaim free/unused Dbtime values)", JET_err.OutOfDbtimeValues) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentOutOfDbtimeValuesException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentOutOfDbtimeValuesException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.OutOfSequentialIndexValues exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentOutOfSequentialIndexValuesException : EsentFragmentationException + { + /// + /// Initializes a new instance of the EsentOutOfSequentialIndexValuesException class. + /// + public EsentOutOfSequentialIndexValuesException() : + base("Sequential index counter has reached maximum value (perform offline defrag to reclaim free/unused SequentialIndex values)", JET_err.OutOfSequentialIndexValues) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentOutOfSequentialIndexValuesException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentOutOfSequentialIndexValuesException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.RunningInOneInstanceMode exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentRunningInOneInstanceModeException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentRunningInOneInstanceModeException class. + /// + public EsentRunningInOneInstanceModeException() : + base("Multi-instance call with single-instance mode enabled", JET_err.RunningInOneInstanceMode) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentRunningInOneInstanceModeException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentRunningInOneInstanceModeException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.RunningInMultiInstanceMode exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentRunningInMultiInstanceModeException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentRunningInMultiInstanceModeException class. + /// + public EsentRunningInMultiInstanceModeException() : + base("Single-instance call with multi-instance mode enabled", JET_err.RunningInMultiInstanceMode) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentRunningInMultiInstanceModeException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentRunningInMultiInstanceModeException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.SystemParamsAlreadySet exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentSystemParamsAlreadySetException : EsentStateException + { + /// + /// Initializes a new instance of the EsentSystemParamsAlreadySetException class. + /// + public EsentSystemParamsAlreadySetException() : + base("Global system parameters have already been set", JET_err.SystemParamsAlreadySet) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentSystemParamsAlreadySetException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentSystemParamsAlreadySetException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.SystemPathInUse exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentSystemPathInUseException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentSystemPathInUseException class. + /// + public EsentSystemPathInUseException() : + base("System path already used by another database instance", JET_err.SystemPathInUse) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentSystemPathInUseException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentSystemPathInUseException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.LogFilePathInUse exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentLogFilePathInUseException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentLogFilePathInUseException class. + /// + public EsentLogFilePathInUseException() : + base("Logfile path already used by another database instance", JET_err.LogFilePathInUse) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentLogFilePathInUseException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentLogFilePathInUseException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.TempPathInUse exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentTempPathInUseException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentTempPathInUseException class. + /// + public EsentTempPathInUseException() : + base("Temp path already used by another database instance", JET_err.TempPathInUse) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentTempPathInUseException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentTempPathInUseException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.InstanceNameInUse exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentInstanceNameInUseException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentInstanceNameInUseException class. + /// + public EsentInstanceNameInUseException() : + base("Instance Name already in use", JET_err.InstanceNameInUse) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentInstanceNameInUseException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentInstanceNameInUseException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.SystemParameterConflict exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentSystemParameterConflictException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentSystemParameterConflictException class. + /// + public EsentSystemParameterConflictException() : + base("Global system parameters have already been set, but to a conflicting or disagreeable state to the specified values.", JET_err.SystemParameterConflict) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentSystemParameterConflictException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentSystemParameterConflictException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.InstanceUnavailable exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentInstanceUnavailableException : EsentFatalException + { + /// + /// Initializes a new instance of the EsentInstanceUnavailableException class. + /// + public EsentInstanceUnavailableException() : + base("This instance cannot be used because it encountered a fatal error", JET_err.InstanceUnavailable) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentInstanceUnavailableException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentInstanceUnavailableException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.DatabaseUnavailable exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentDatabaseUnavailableException : EsentObsoleteException + { + /// + /// Initializes a new instance of the EsentDatabaseUnavailableException class. + /// + public EsentDatabaseUnavailableException() : + base("This database cannot be used because it encountered a fatal error", JET_err.DatabaseUnavailable) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentDatabaseUnavailableException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentDatabaseUnavailableException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.InstanceUnavailableDueToFatalLogDiskFull exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentInstanceUnavailableDueToFatalLogDiskFullException : EsentFatalException + { + /// + /// Initializes a new instance of the EsentInstanceUnavailableDueToFatalLogDiskFullException class. + /// + public EsentInstanceUnavailableDueToFatalLogDiskFullException() : + base("This instance cannot be used because it encountered a log-disk-full error performing an operation (likely transaction rollback) that could not tolerate failure", JET_err.InstanceUnavailableDueToFatalLogDiskFull) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentInstanceUnavailableDueToFatalLogDiskFullException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentInstanceUnavailableDueToFatalLogDiskFullException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.InvalidSesparamId exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentInvalidSesparamIdException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentInvalidSesparamIdException class. + /// + public EsentInvalidSesparamIdException() : + base("This JET_sesparam* identifier is not known to the ESE engine.", JET_err.InvalidSesparamId) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentInvalidSesparamIdException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentInvalidSesparamIdException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.TooManyRecords exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentTooManyRecordsException : EsentStateException + { + /// + /// Initializes a new instance of the EsentTooManyRecordsException class. + /// + public EsentTooManyRecordsException() : + base("There are too many records to enumerate, switch to an API that handles 64-bit numbers", JET_err.TooManyRecords) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentTooManyRecordsException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentTooManyRecordsException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.InvalidDbparamId exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentInvalidDbparamIdException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentInvalidDbparamIdException class. + /// + public EsentInvalidDbparamIdException() : + base("This JET_dbparam* identifier is not known to the ESE engine.", JET_err.InvalidDbparamId) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentInvalidDbparamIdException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentInvalidDbparamIdException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.OutOfSessions exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentOutOfSessionsException : EsentMemoryException + { + /// + /// Initializes a new instance of the EsentOutOfSessionsException class. + /// + public EsentOutOfSessionsException() : + base("Out of sessions", JET_err.OutOfSessions) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentOutOfSessionsException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentOutOfSessionsException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.WriteConflict exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentWriteConflictException : EsentStateException + { + /// + /// Initializes a new instance of the EsentWriteConflictException class. + /// + public EsentWriteConflictException() : + base("Write lock failed due to outstanding write lock", JET_err.WriteConflict) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentWriteConflictException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentWriteConflictException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.TransTooDeep exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentTransTooDeepException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentTransTooDeepException class. + /// + public EsentTransTooDeepException() : + base("Transactions nested too deeply", JET_err.TransTooDeep) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentTransTooDeepException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentTransTooDeepException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.InvalidSesid exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentInvalidSesidException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentInvalidSesidException class. + /// + public EsentInvalidSesidException() : + base("Invalid session handle", JET_err.InvalidSesid) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentInvalidSesidException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentInvalidSesidException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.WriteConflictPrimaryIndex exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentWriteConflictPrimaryIndexException : EsentStateException + { + /// + /// Initializes a new instance of the EsentWriteConflictPrimaryIndexException class. + /// + public EsentWriteConflictPrimaryIndexException() : + base("Update attempted on uncommitted primary index", JET_err.WriteConflictPrimaryIndex) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentWriteConflictPrimaryIndexException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentWriteConflictPrimaryIndexException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.InTransaction exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentInTransactionException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentInTransactionException class. + /// + public EsentInTransactionException() : + base("Operation not allowed within a transaction", JET_err.InTransaction) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentInTransactionException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentInTransactionException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.RollbackRequired exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentRollbackRequiredException : EsentObsoleteException + { + /// + /// Initializes a new instance of the EsentRollbackRequiredException class. + /// + public EsentRollbackRequiredException() : + base("Must rollback current transaction -- cannot commit or begin a new one", JET_err.RollbackRequired) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentRollbackRequiredException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentRollbackRequiredException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.TransReadOnly exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentTransReadOnlyException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentTransReadOnlyException class. + /// + public EsentTransReadOnlyException() : + base("Read-only transaction tried to modify the database", JET_err.TransReadOnly) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentTransReadOnlyException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentTransReadOnlyException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.SessionWriteConflict exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentSessionWriteConflictException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentSessionWriteConflictException class. + /// + public EsentSessionWriteConflictException() : + base("Attempt to replace the same record by two different cursors in the same session", JET_err.SessionWriteConflict) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentSessionWriteConflictException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentSessionWriteConflictException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.RecordTooBigForBackwardCompatibility exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentRecordTooBigForBackwardCompatibilityException : EsentStateException + { + /// + /// Initializes a new instance of the EsentRecordTooBigForBackwardCompatibilityException class. + /// + public EsentRecordTooBigForBackwardCompatibilityException() : + base("record would be too big if represented in a database format from a previous version of Jet", JET_err.RecordTooBigForBackwardCompatibility) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentRecordTooBigForBackwardCompatibilityException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentRecordTooBigForBackwardCompatibilityException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.CannotMaterializeForwardOnlySort exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentCannotMaterializeForwardOnlySortException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentCannotMaterializeForwardOnlySortException class. + /// + public EsentCannotMaterializeForwardOnlySortException() : + base("The temp table could not be created due to parameters that conflict with JET_bitTTForwardOnly", JET_err.CannotMaterializeForwardOnlySort) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentCannotMaterializeForwardOnlySortException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentCannotMaterializeForwardOnlySortException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.SesidTableIdMismatch exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentSesidTableIdMismatchException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentSesidTableIdMismatchException class. + /// + public EsentSesidTableIdMismatchException() : + base("This session handle can't be used with this table id", JET_err.SesidTableIdMismatch) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentSesidTableIdMismatchException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentSesidTableIdMismatchException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.InvalidInstance exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentInvalidInstanceException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentInvalidInstanceException class. + /// + public EsentInvalidInstanceException() : + base("Invalid instance handle", JET_err.InvalidInstance) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentInvalidInstanceException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentInvalidInstanceException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.DirtyShutdown exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentDirtyShutdownException : EsentStateException + { + /// + /// Initializes a new instance of the EsentDirtyShutdownException class. + /// + public EsentDirtyShutdownException() : + base("The instance was shutdown successfully but all the attached databases were left in a dirty state by request via JET_bitTermDirty", JET_err.DirtyShutdown) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentDirtyShutdownException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentDirtyShutdownException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.ReadPgnoVerifyFailure exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentReadPgnoVerifyFailureException : EsentCorruptionException + { + /// + /// Initializes a new instance of the EsentReadPgnoVerifyFailureException class. + /// + public EsentReadPgnoVerifyFailureException() : + base("The database page read from disk had the wrong page number.", JET_err.ReadPgnoVerifyFailure) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentReadPgnoVerifyFailureException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentReadPgnoVerifyFailureException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.ReadLostFlushVerifyFailure exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentReadLostFlushVerifyFailureException : EsentCorruptionException + { + /// + /// Initializes a new instance of the EsentReadLostFlushVerifyFailureException class. + /// + public EsentReadLostFlushVerifyFailureException() : + base("The database page read from disk had a previous write not represented on the page.", JET_err.ReadLostFlushVerifyFailure) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentReadLostFlushVerifyFailureException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentReadLostFlushVerifyFailureException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.FileSystemCorruption exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentFileSystemCorruptionException : EsentCorruptionException + { + /// + /// Initializes a new instance of the EsentFileSystemCorruptionException class. + /// + public EsentFileSystemCorruptionException() : + base("File system operation failed with an error indicating the file system is corrupt.", JET_err.FileSystemCorruption) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentFileSystemCorruptionException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentFileSystemCorruptionException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.RecoveryVerifyFailure exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentRecoveryVerifyFailureException : EsentCorruptionException + { + /// + /// Initializes a new instance of the EsentRecoveryVerifyFailureException class. + /// + public EsentRecoveryVerifyFailureException() : + base("One or more database pages read from disk during recovery do not match the expected state.", JET_err.RecoveryVerifyFailure) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentRecoveryVerifyFailureException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentRecoveryVerifyFailureException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.FilteredMoveNotSupported exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentFilteredMoveNotSupportedException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentFilteredMoveNotSupportedException class. + /// + public EsentFilteredMoveNotSupportedException() : + base("Attempted to provide a filter to JetSetCursorFilter() in an unsupported scenario.", JET_err.FilteredMoveNotSupported) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentFilteredMoveNotSupportedException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentFilteredMoveNotSupportedException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.MustCommitDistributedTransactionToLevel0 exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentMustCommitDistributedTransactionToLevel0Exception : EsentObsoleteException + { + /// + /// Initializes a new instance of the EsentMustCommitDistributedTransactionToLevel0Exception class. + /// + public EsentMustCommitDistributedTransactionToLevel0Exception() : + base("Attempted to PrepareToCommit a distributed transaction to non-zero level", JET_err.MustCommitDistributedTransactionToLevel0) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentMustCommitDistributedTransactionToLevel0Exception class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentMustCommitDistributedTransactionToLevel0Exception(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.DistributedTransactionAlreadyPreparedToCommit exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentDistributedTransactionAlreadyPreparedToCommitException : EsentObsoleteException + { + /// + /// Initializes a new instance of the EsentDistributedTransactionAlreadyPreparedToCommitException class. + /// + public EsentDistributedTransactionAlreadyPreparedToCommitException() : + base("Attempted a write-operation after a distributed transaction has called PrepareToCommit", JET_err.DistributedTransactionAlreadyPreparedToCommit) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentDistributedTransactionAlreadyPreparedToCommitException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentDistributedTransactionAlreadyPreparedToCommitException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.NotInDistributedTransaction exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentNotInDistributedTransactionException : EsentObsoleteException + { + /// + /// Initializes a new instance of the EsentNotInDistributedTransactionException class. + /// + public EsentNotInDistributedTransactionException() : + base("Attempted to PrepareToCommit a non-distributed transaction", JET_err.NotInDistributedTransaction) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentNotInDistributedTransactionException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentNotInDistributedTransactionException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.DistributedTransactionNotYetPreparedToCommit exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentDistributedTransactionNotYetPreparedToCommitException : EsentObsoleteException + { + /// + /// Initializes a new instance of the EsentDistributedTransactionNotYetPreparedToCommitException class. + /// + public EsentDistributedTransactionNotYetPreparedToCommitException() : + base("Attempted to commit a distributed transaction, but PrepareToCommit has not yet been called", JET_err.DistributedTransactionNotYetPreparedToCommit) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentDistributedTransactionNotYetPreparedToCommitException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentDistributedTransactionNotYetPreparedToCommitException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.CannotNestDistributedTransactions exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentCannotNestDistributedTransactionsException : EsentObsoleteException + { + /// + /// Initializes a new instance of the EsentCannotNestDistributedTransactionsException class. + /// + public EsentCannotNestDistributedTransactionsException() : + base("Attempted to begin a distributed transaction when not at level 0", JET_err.CannotNestDistributedTransactions) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentCannotNestDistributedTransactionsException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentCannotNestDistributedTransactionsException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.DTCMissingCallback exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentDTCMissingCallbackException : EsentObsoleteException + { + /// + /// Initializes a new instance of the EsentDTCMissingCallbackException class. + /// + public EsentDTCMissingCallbackException() : + base("Attempted to begin a distributed transaction but no callback for DTC coordination was specified on initialisation", JET_err.DTCMissingCallback) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentDTCMissingCallbackException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentDTCMissingCallbackException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.DTCMissingCallbackOnRecovery exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentDTCMissingCallbackOnRecoveryException : EsentObsoleteException + { + /// + /// Initializes a new instance of the EsentDTCMissingCallbackOnRecoveryException class. + /// + public EsentDTCMissingCallbackOnRecoveryException() : + base("Attempted to recover a distributed transaction but no callback for DTC coordination was specified on initialisation", JET_err.DTCMissingCallbackOnRecovery) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentDTCMissingCallbackOnRecoveryException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentDTCMissingCallbackOnRecoveryException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.DTCCallbackUnexpectedError exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentDTCCallbackUnexpectedErrorException : EsentObsoleteException + { + /// + /// Initializes a new instance of the EsentDTCCallbackUnexpectedErrorException class. + /// + public EsentDTCCallbackUnexpectedErrorException() : + base("Unexpected error code returned from DTC callback", JET_err.DTCCallbackUnexpectedError) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentDTCCallbackUnexpectedErrorException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentDTCCallbackUnexpectedErrorException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.DatabaseDuplicate exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentDatabaseDuplicateException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentDatabaseDuplicateException class. + /// + public EsentDatabaseDuplicateException() : + base("Database already exists", JET_err.DatabaseDuplicate) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentDatabaseDuplicateException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentDatabaseDuplicateException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.DatabaseInUse exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentDatabaseInUseException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentDatabaseInUseException class. + /// + public EsentDatabaseInUseException() : + base("Database in use", JET_err.DatabaseInUse) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentDatabaseInUseException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentDatabaseInUseException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.DatabaseNotFound exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentDatabaseNotFoundException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentDatabaseNotFoundException class. + /// + public EsentDatabaseNotFoundException() : + base("No such database", JET_err.DatabaseNotFound) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentDatabaseNotFoundException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentDatabaseNotFoundException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.DatabaseInvalidName exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentDatabaseInvalidNameException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentDatabaseInvalidNameException class. + /// + public EsentDatabaseInvalidNameException() : + base("Invalid database name", JET_err.DatabaseInvalidName) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentDatabaseInvalidNameException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentDatabaseInvalidNameException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.DatabaseInvalidPages exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentDatabaseInvalidPagesException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentDatabaseInvalidPagesException class. + /// + public EsentDatabaseInvalidPagesException() : + base("Invalid number of pages", JET_err.DatabaseInvalidPages) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentDatabaseInvalidPagesException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentDatabaseInvalidPagesException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.DatabaseCorrupted exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentDatabaseCorruptedException : EsentCorruptionException + { + /// + /// Initializes a new instance of the EsentDatabaseCorruptedException class. + /// + public EsentDatabaseCorruptedException() : + base("Non database file or corrupted db", JET_err.DatabaseCorrupted) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentDatabaseCorruptedException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentDatabaseCorruptedException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.DatabaseLocked exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentDatabaseLockedException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentDatabaseLockedException class. + /// + public EsentDatabaseLockedException() : + base("Database exclusively locked", JET_err.DatabaseLocked) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentDatabaseLockedException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentDatabaseLockedException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.CannotDisableVersioning exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentCannotDisableVersioningException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentCannotDisableVersioningException class. + /// + public EsentCannotDisableVersioningException() : + base("Cannot disable versioning for this database", JET_err.CannotDisableVersioning) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentCannotDisableVersioningException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentCannotDisableVersioningException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.InvalidDatabaseVersion exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentInvalidDatabaseVersionException : EsentInconsistentException + { + /// + /// Initializes a new instance of the EsentInvalidDatabaseVersionException class. + /// + public EsentInvalidDatabaseVersionException() : + base("Database engine is incompatible with database", JET_err.InvalidDatabaseVersion) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentInvalidDatabaseVersionException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentInvalidDatabaseVersionException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.Database200Format exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentDatabase200FormatException : EsentObsoleteException + { + /// + /// Initializes a new instance of the EsentDatabase200FormatException class. + /// + public EsentDatabase200FormatException() : + base("The database is in an older (200) format", JET_err.Database200Format) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentDatabase200FormatException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentDatabase200FormatException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.Database400Format exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentDatabase400FormatException : EsentObsoleteException + { + /// + /// Initializes a new instance of the EsentDatabase400FormatException class. + /// + public EsentDatabase400FormatException() : + base("The database is in an older (400) format", JET_err.Database400Format) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentDatabase400FormatException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentDatabase400FormatException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.Database500Format exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentDatabase500FormatException : EsentObsoleteException + { + /// + /// Initializes a new instance of the EsentDatabase500FormatException class. + /// + public EsentDatabase500FormatException() : + base("The database is in an older (500) format", JET_err.Database500Format) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentDatabase500FormatException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentDatabase500FormatException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.PageSizeMismatch exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentPageSizeMismatchException : EsentInconsistentException + { + /// + /// Initializes a new instance of the EsentPageSizeMismatchException class. + /// + public EsentPageSizeMismatchException() : + base("The database page size does not match the engine", JET_err.PageSizeMismatch) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentPageSizeMismatchException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentPageSizeMismatchException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.TooManyInstances exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentTooManyInstancesException : EsentQuotaException + { + /// + /// Initializes a new instance of the EsentTooManyInstancesException class. + /// + public EsentTooManyInstancesException() : + base("Cannot start any more database instances", JET_err.TooManyInstances) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentTooManyInstancesException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentTooManyInstancesException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.DatabaseSharingViolation exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentDatabaseSharingViolationException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentDatabaseSharingViolationException class. + /// + public EsentDatabaseSharingViolationException() : + base("A different database instance is using this database", JET_err.DatabaseSharingViolation) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentDatabaseSharingViolationException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentDatabaseSharingViolationException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.AttachedDatabaseMismatch exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentAttachedDatabaseMismatchException : EsentInconsistentException + { + /// + /// Initializes a new instance of the EsentAttachedDatabaseMismatchException class. + /// + public EsentAttachedDatabaseMismatchException() : + base("An outstanding database attachment has been detected at the start or end of recovery, but database is missing or does not match attachment info", JET_err.AttachedDatabaseMismatch) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentAttachedDatabaseMismatchException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentAttachedDatabaseMismatchException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.DatabaseInvalidPath exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentDatabaseInvalidPathException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentDatabaseInvalidPathException class. + /// + public EsentDatabaseInvalidPathException() : + base("Specified path to database file is illegal", JET_err.DatabaseInvalidPath) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentDatabaseInvalidPathException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentDatabaseInvalidPathException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.DatabaseIdInUse exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentDatabaseIdInUseException : EsentObsoleteException + { + /// + /// Initializes a new instance of the EsentDatabaseIdInUseException class. + /// + public EsentDatabaseIdInUseException() : + base("A database is being assigned an id already in use", JET_err.DatabaseIdInUse) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentDatabaseIdInUseException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentDatabaseIdInUseException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.ForceDetachNotAllowed exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentForceDetachNotAllowedException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentForceDetachNotAllowedException class. + /// + public EsentForceDetachNotAllowedException() : + base("Force Detach allowed only after normal detach errored out", JET_err.ForceDetachNotAllowed) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentForceDetachNotAllowedException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentForceDetachNotAllowedException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.CatalogCorrupted exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentCatalogCorruptedException : EsentCorruptionException + { + /// + /// Initializes a new instance of the EsentCatalogCorruptedException class. + /// + public EsentCatalogCorruptedException() : + base("Corruption detected in catalog", JET_err.CatalogCorrupted) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentCatalogCorruptedException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentCatalogCorruptedException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.PartiallyAttachedDB exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentPartiallyAttachedDBException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentPartiallyAttachedDBException class. + /// + public EsentPartiallyAttachedDBException() : + base("Database is partially attached. Cannot complete attach operation", JET_err.PartiallyAttachedDB) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentPartiallyAttachedDBException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentPartiallyAttachedDBException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.DatabaseSignInUse exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentDatabaseSignInUseException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentDatabaseSignInUseException class. + /// + public EsentDatabaseSignInUseException() : + base("Database with same signature in use", JET_err.DatabaseSignInUse) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentDatabaseSignInUseException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentDatabaseSignInUseException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.DatabaseCorruptedNoRepair exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentDatabaseCorruptedNoRepairException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentDatabaseCorruptedNoRepairException class. + /// + public EsentDatabaseCorruptedNoRepairException() : + base("Corrupted db but repair not allowed", JET_err.DatabaseCorruptedNoRepair) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentDatabaseCorruptedNoRepairException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentDatabaseCorruptedNoRepairException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.InvalidCreateDbVersion exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentInvalidCreateDbVersionException : EsentInconsistentException + { + /// + /// Initializes a new instance of the EsentInvalidCreateDbVersionException class. + /// + public EsentInvalidCreateDbVersionException() : + base("recovery tried to replay a database creation, but the database was originally created with an incompatible (likely older) version of the database engine", JET_err.InvalidCreateDbVersion) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentInvalidCreateDbVersionException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentInvalidCreateDbVersionException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.DatabaseIncompleteIncrementalReseed exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentDatabaseIncompleteIncrementalReseedException : EsentInconsistentException + { + /// + /// Initializes a new instance of the EsentDatabaseIncompleteIncrementalReseedException class. + /// + public EsentDatabaseIncompleteIncrementalReseedException() : + base("The database cannot be attached because it is currently being rebuilt as part of an incremental reseed.", JET_err.DatabaseIncompleteIncrementalReseed) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentDatabaseIncompleteIncrementalReseedException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentDatabaseIncompleteIncrementalReseedException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.DatabaseInvalidIncrementalReseed exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentDatabaseInvalidIncrementalReseedException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentDatabaseInvalidIncrementalReseedException class. + /// + public EsentDatabaseInvalidIncrementalReseedException() : + base("The database is not a valid state to perform an incremental reseed.", JET_err.DatabaseInvalidIncrementalReseed) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentDatabaseInvalidIncrementalReseedException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentDatabaseInvalidIncrementalReseedException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.DatabaseFailedIncrementalReseed exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentDatabaseFailedIncrementalReseedException : EsentStateException + { + /// + /// Initializes a new instance of the EsentDatabaseFailedIncrementalReseedException class. + /// + public EsentDatabaseFailedIncrementalReseedException() : + base("The incremental reseed being performed on the specified database cannot be completed due to a fatal error. A full reseed is required to recover this database.", JET_err.DatabaseFailedIncrementalReseed) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentDatabaseFailedIncrementalReseedException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentDatabaseFailedIncrementalReseedException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.NoAttachmentsFailedIncrementalReseed exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentNoAttachmentsFailedIncrementalReseedException : EsentStateException + { + /// + /// Initializes a new instance of the EsentNoAttachmentsFailedIncrementalReseedException class. + /// + public EsentNoAttachmentsFailedIncrementalReseedException() : + base("The incremental reseed being performed on the specified database cannot be completed because the min required log contains no attachment info. A full reseed is required to recover this database.", JET_err.NoAttachmentsFailedIncrementalReseed) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentNoAttachmentsFailedIncrementalReseedException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentNoAttachmentsFailedIncrementalReseedException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.DatabaseNotReady exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentDatabaseNotReadyException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentDatabaseNotReadyException class. + /// + public EsentDatabaseNotReadyException() : + base("Recovery on this database has not yet completed enough to permit access.", JET_err.DatabaseNotReady) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentDatabaseNotReadyException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentDatabaseNotReadyException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.DatabaseAttachedForRecovery exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentDatabaseAttachedForRecoveryException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentDatabaseAttachedForRecoveryException class. + /// + public EsentDatabaseAttachedForRecoveryException() : + base("Database is attached but only for recovery. It must be explicitly attached before it can be opened. ", JET_err.DatabaseAttachedForRecovery) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentDatabaseAttachedForRecoveryException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentDatabaseAttachedForRecoveryException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.TransactionsNotReadyDuringRecovery exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentTransactionsNotReadyDuringRecoveryException : EsentStateException + { + /// + /// Initializes a new instance of the EsentTransactionsNotReadyDuringRecoveryException class. + /// + public EsentTransactionsNotReadyDuringRecoveryException() : + base("Recovery has not seen any Begin0/Commit0 records and so does not know what trxBegin0 to assign to this transaction", JET_err.TransactionsNotReadyDuringRecovery) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentTransactionsNotReadyDuringRecoveryException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentTransactionsNotReadyDuringRecoveryException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.TableLocked exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentTableLockedException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentTableLockedException class. + /// + public EsentTableLockedException() : + base("Table is exclusively locked", JET_err.TableLocked) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentTableLockedException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentTableLockedException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.TableDuplicate exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentTableDuplicateException : EsentStateException + { + /// + /// Initializes a new instance of the EsentTableDuplicateException class. + /// + public EsentTableDuplicateException() : + base("Table already exists", JET_err.TableDuplicate) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentTableDuplicateException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentTableDuplicateException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.TableInUse exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentTableInUseException : EsentStateException + { + /// + /// Initializes a new instance of the EsentTableInUseException class. + /// + public EsentTableInUseException() : + base("Table is in use, cannot lock", JET_err.TableInUse) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentTableInUseException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentTableInUseException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.ObjectNotFound exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentObjectNotFoundException : EsentStateException + { + /// + /// Initializes a new instance of the EsentObjectNotFoundException class. + /// + public EsentObjectNotFoundException() : + base("No such table or object", JET_err.ObjectNotFound) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentObjectNotFoundException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentObjectNotFoundException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.DensityInvalid exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentDensityInvalidException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentDensityInvalidException class. + /// + public EsentDensityInvalidException() : + base("Bad file/index density", JET_err.DensityInvalid) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentDensityInvalidException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentDensityInvalidException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.TableNotEmpty exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentTableNotEmptyException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentTableNotEmptyException class. + /// + public EsentTableNotEmptyException() : + base("Table is not empty", JET_err.TableNotEmpty) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentTableNotEmptyException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentTableNotEmptyException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.InvalidTableId exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentInvalidTableIdException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentInvalidTableIdException class. + /// + public EsentInvalidTableIdException() : + base("Invalid table id", JET_err.InvalidTableId) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentInvalidTableIdException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentInvalidTableIdException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.TooManyOpenTables exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentTooManyOpenTablesException : EsentQuotaException + { + /// + /// Initializes a new instance of the EsentTooManyOpenTablesException class. + /// + public EsentTooManyOpenTablesException() : + base("Cannot open any more tables (cleanup already attempted)", JET_err.TooManyOpenTables) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentTooManyOpenTablesException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentTooManyOpenTablesException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.IllegalOperation exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentIllegalOperationException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentIllegalOperationException class. + /// + public EsentIllegalOperationException() : + base("Oper. not supported on table", JET_err.IllegalOperation) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentIllegalOperationException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentIllegalOperationException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.TooManyOpenTablesAndCleanupTimedOut exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentTooManyOpenTablesAndCleanupTimedOutException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentTooManyOpenTablesAndCleanupTimedOutException class. + /// + public EsentTooManyOpenTablesAndCleanupTimedOutException() : + base("Cannot open any more tables (cleanup attempt failed to complete)", JET_err.TooManyOpenTablesAndCleanupTimedOut) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentTooManyOpenTablesAndCleanupTimedOutException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentTooManyOpenTablesAndCleanupTimedOutException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.ObjectDuplicate exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentObjectDuplicateException : EsentObsoleteException + { + /// + /// Initializes a new instance of the EsentObjectDuplicateException class. + /// + public EsentObjectDuplicateException() : + base("Table or object name in use", JET_err.ObjectDuplicate) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentObjectDuplicateException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentObjectDuplicateException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.InvalidObject exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentInvalidObjectException : EsentObsoleteException + { + /// + /// Initializes a new instance of the EsentInvalidObjectException class. + /// + public EsentInvalidObjectException() : + base("Object is invalid for operation", JET_err.InvalidObject) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentInvalidObjectException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentInvalidObjectException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.CannotDeleteTempTable exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentCannotDeleteTempTableException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentCannotDeleteTempTableException class. + /// + public EsentCannotDeleteTempTableException() : + base("Use CloseTable instead of DeleteTable to delete temp table", JET_err.CannotDeleteTempTable) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentCannotDeleteTempTableException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentCannotDeleteTempTableException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.CannotDeleteSystemTable exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentCannotDeleteSystemTableException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentCannotDeleteSystemTableException class. + /// + public EsentCannotDeleteSystemTableException() : + base("Illegal attempt to delete a system table", JET_err.CannotDeleteSystemTable) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentCannotDeleteSystemTableException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentCannotDeleteSystemTableException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.CannotDeleteTemplateTable exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentCannotDeleteTemplateTableException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentCannotDeleteTemplateTableException class. + /// + public EsentCannotDeleteTemplateTableException() : + base("Illegal attempt to delete a template table", JET_err.CannotDeleteTemplateTable) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentCannotDeleteTemplateTableException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentCannotDeleteTemplateTableException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.ExclusiveTableLockRequired exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentExclusiveTableLockRequiredException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentExclusiveTableLockRequiredException class. + /// + public EsentExclusiveTableLockRequiredException() : + base("Must have exclusive lock on table.", JET_err.ExclusiveTableLockRequired) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentExclusiveTableLockRequiredException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentExclusiveTableLockRequiredException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.FixedDDL exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentFixedDDLException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentFixedDDLException class. + /// + public EsentFixedDDLException() : + base("DDL operations prohibited on this table", JET_err.FixedDDL) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentFixedDDLException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentFixedDDLException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.FixedInheritedDDL exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentFixedInheritedDDLException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentFixedInheritedDDLException class. + /// + public EsentFixedInheritedDDLException() : + base("On a derived table, DDL operations are prohibited on inherited portion of DDL", JET_err.FixedInheritedDDL) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentFixedInheritedDDLException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentFixedInheritedDDLException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.CannotNestDDL exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentCannotNestDDLException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentCannotNestDDLException class. + /// + public EsentCannotNestDDLException() : + base("Nesting of hierarchical DDL is not currently supported.", JET_err.CannotNestDDL) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentCannotNestDDLException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentCannotNestDDLException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.DDLNotInheritable exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentDDLNotInheritableException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentDDLNotInheritableException class. + /// + public EsentDDLNotInheritableException() : + base("Tried to inherit DDL from a table not marked as a template table.", JET_err.DDLNotInheritable) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentDDLNotInheritableException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentDDLNotInheritableException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.InvalidSettings exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentInvalidSettingsException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentInvalidSettingsException class. + /// + public EsentInvalidSettingsException() : + base("System parameters were set improperly", JET_err.InvalidSettings) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentInvalidSettingsException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentInvalidSettingsException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.ClientRequestToStopJetService exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentClientRequestToStopJetServiceException : EsentOperationException + { + /// + /// Initializes a new instance of the EsentClientRequestToStopJetServiceException class. + /// + public EsentClientRequestToStopJetServiceException() : + base("Client has requested stop service", JET_err.ClientRequestToStopJetService) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentClientRequestToStopJetServiceException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentClientRequestToStopJetServiceException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.CannotAddFixedVarColumnToDerivedTable exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentCannotAddFixedVarColumnToDerivedTableException : EsentObsoleteException + { + /// + /// Initializes a new instance of the EsentCannotAddFixedVarColumnToDerivedTableException class. + /// + public EsentCannotAddFixedVarColumnToDerivedTableException() : + base("Template table was created with NoFixedVarColumnsInDerivedTables", JET_err.CannotAddFixedVarColumnToDerivedTable) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentCannotAddFixedVarColumnToDerivedTableException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentCannotAddFixedVarColumnToDerivedTableException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.IndexCantBuild exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentIndexCantBuildException : EsentObsoleteException + { + /// + /// Initializes a new instance of the EsentIndexCantBuildException class. + /// + public EsentIndexCantBuildException() : + base("Index build failed", JET_err.IndexCantBuild) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentIndexCantBuildException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentIndexCantBuildException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.IndexHasPrimary exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentIndexHasPrimaryException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentIndexHasPrimaryException class. + /// + public EsentIndexHasPrimaryException() : + base("Primary index already defined", JET_err.IndexHasPrimary) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentIndexHasPrimaryException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentIndexHasPrimaryException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.IndexDuplicate exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentIndexDuplicateException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentIndexDuplicateException class. + /// + public EsentIndexDuplicateException() : + base("Index is already defined", JET_err.IndexDuplicate) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentIndexDuplicateException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentIndexDuplicateException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.IndexNotFound exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentIndexNotFoundException : EsentStateException + { + /// + /// Initializes a new instance of the EsentIndexNotFoundException class. + /// + public EsentIndexNotFoundException() : + base("No such index", JET_err.IndexNotFound) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentIndexNotFoundException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentIndexNotFoundException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.IndexMustStay exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentIndexMustStayException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentIndexMustStayException class. + /// + public EsentIndexMustStayException() : + base("Cannot delete clustered index", JET_err.IndexMustStay) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentIndexMustStayException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentIndexMustStayException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.IndexInvalidDef exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentIndexInvalidDefException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentIndexInvalidDefException class. + /// + public EsentIndexInvalidDefException() : + base("Illegal index definition", JET_err.IndexInvalidDef) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentIndexInvalidDefException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentIndexInvalidDefException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.InvalidCreateIndex exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentInvalidCreateIndexException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentInvalidCreateIndexException class. + /// + public EsentInvalidCreateIndexException() : + base("Invalid create index description", JET_err.InvalidCreateIndex) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentInvalidCreateIndexException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentInvalidCreateIndexException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.TooManyOpenIndexes exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentTooManyOpenIndexesException : EsentMemoryException + { + /// + /// Initializes a new instance of the EsentTooManyOpenIndexesException class. + /// + public EsentTooManyOpenIndexesException() : + base("Out of index description blocks", JET_err.TooManyOpenIndexes) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentTooManyOpenIndexesException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentTooManyOpenIndexesException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.MultiValuedIndexViolation exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentMultiValuedIndexViolationException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentMultiValuedIndexViolationException class. + /// + public EsentMultiValuedIndexViolationException() : + base("Non-unique inter-record index keys generated for a multivalued index", JET_err.MultiValuedIndexViolation) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentMultiValuedIndexViolationException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentMultiValuedIndexViolationException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.IndexBuildCorrupted exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentIndexBuildCorruptedException : EsentCorruptionException + { + /// + /// Initializes a new instance of the EsentIndexBuildCorruptedException class. + /// + public EsentIndexBuildCorruptedException() : + base("Failed to build a secondary index that properly reflects primary index", JET_err.IndexBuildCorrupted) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentIndexBuildCorruptedException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentIndexBuildCorruptedException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.PrimaryIndexCorrupted exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentPrimaryIndexCorruptedException : EsentCorruptionException + { + /// + /// Initializes a new instance of the EsentPrimaryIndexCorruptedException class. + /// + public EsentPrimaryIndexCorruptedException() : + base("Primary index is corrupt. The database must be defragmented or the table deleted.", JET_err.PrimaryIndexCorrupted) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentPrimaryIndexCorruptedException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentPrimaryIndexCorruptedException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.SecondaryIndexCorrupted exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentSecondaryIndexCorruptedException : EsentCorruptionException + { + /// + /// Initializes a new instance of the EsentSecondaryIndexCorruptedException class. + /// + public EsentSecondaryIndexCorruptedException() : + base("Secondary index is corrupt. The database must be defragmented or the affected index must be deleted. If the corrupt index is over Unicode text, a likely cause is a sort-order change.", JET_err.SecondaryIndexCorrupted) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentSecondaryIndexCorruptedException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentSecondaryIndexCorruptedException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.InvalidIndexId exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentInvalidIndexIdException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentInvalidIndexIdException class. + /// + public EsentInvalidIndexIdException() : + base("Illegal index id", JET_err.InvalidIndexId) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentInvalidIndexIdException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentInvalidIndexIdException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.IndexTuplesSecondaryIndexOnly exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentIndexTuplesSecondaryIndexOnlyException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentIndexTuplesSecondaryIndexOnlyException class. + /// + public EsentIndexTuplesSecondaryIndexOnlyException() : + base("tuple index can only be on a secondary index", JET_err.IndexTuplesSecondaryIndexOnly) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentIndexTuplesSecondaryIndexOnlyException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentIndexTuplesSecondaryIndexOnlyException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.IndexTuplesTooManyColumns exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentIndexTuplesTooManyColumnsException : EsentObsoleteException + { + /// + /// Initializes a new instance of the EsentIndexTuplesTooManyColumnsException class. + /// + public EsentIndexTuplesTooManyColumnsException() : + base("tuple index may only have eleven columns in the index", JET_err.IndexTuplesTooManyColumns) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentIndexTuplesTooManyColumnsException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentIndexTuplesTooManyColumnsException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.IndexTuplesNonUniqueOnly exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentIndexTuplesNonUniqueOnlyException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentIndexTuplesNonUniqueOnlyException class. + /// + public EsentIndexTuplesNonUniqueOnlyException() : + base("tuple index must be a non-unique index", JET_err.IndexTuplesNonUniqueOnly) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentIndexTuplesNonUniqueOnlyException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentIndexTuplesNonUniqueOnlyException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.IndexTuplesTextBinaryColumnsOnly exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentIndexTuplesTextBinaryColumnsOnlyException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentIndexTuplesTextBinaryColumnsOnlyException class. + /// + public EsentIndexTuplesTextBinaryColumnsOnlyException() : + base("tuple index must be on a text/binary column", JET_err.IndexTuplesTextBinaryColumnsOnly) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentIndexTuplesTextBinaryColumnsOnlyException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentIndexTuplesTextBinaryColumnsOnlyException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.IndexTuplesVarSegMacNotAllowed exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentIndexTuplesVarSegMacNotAllowedException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentIndexTuplesVarSegMacNotAllowedException class. + /// + public EsentIndexTuplesVarSegMacNotAllowedException() : + base("tuple index does not allow setting cbVarSegMac", JET_err.IndexTuplesVarSegMacNotAllowed) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentIndexTuplesVarSegMacNotAllowedException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentIndexTuplesVarSegMacNotAllowedException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.IndexTuplesInvalidLimits exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentIndexTuplesInvalidLimitsException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentIndexTuplesInvalidLimitsException class. + /// + public EsentIndexTuplesInvalidLimitsException() : + base("invalid min/max tuple length or max characters to index specified", JET_err.IndexTuplesInvalidLimits) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentIndexTuplesInvalidLimitsException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentIndexTuplesInvalidLimitsException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.IndexTuplesCannotRetrieveFromIndex exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentIndexTuplesCannotRetrieveFromIndexException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentIndexTuplesCannotRetrieveFromIndexException class. + /// + public EsentIndexTuplesCannotRetrieveFromIndexException() : + base("cannot call RetrieveColumn() with RetrieveFromIndex on a tuple index", JET_err.IndexTuplesCannotRetrieveFromIndex) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentIndexTuplesCannotRetrieveFromIndexException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentIndexTuplesCannotRetrieveFromIndexException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.IndexTuplesKeyTooSmall exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentIndexTuplesKeyTooSmallException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentIndexTuplesKeyTooSmallException class. + /// + public EsentIndexTuplesKeyTooSmallException() : + base("specified key does not meet minimum tuple length", JET_err.IndexTuplesKeyTooSmall) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentIndexTuplesKeyTooSmallException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentIndexTuplesKeyTooSmallException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.InvalidLVChunkSize exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentInvalidLVChunkSizeException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentInvalidLVChunkSizeException class. + /// + public EsentInvalidLVChunkSizeException() : + base("Specified LV chunk size is not supported", JET_err.InvalidLVChunkSize) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentInvalidLVChunkSizeException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentInvalidLVChunkSizeException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.ColumnCannotBeEncrypted exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentColumnCannotBeEncryptedException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentColumnCannotBeEncryptedException class. + /// + public EsentColumnCannotBeEncryptedException() : + base("Only JET_coltypLongText and JET_coltypLongBinary columns without default values can be encrypted", JET_err.ColumnCannotBeEncrypted) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentColumnCannotBeEncryptedException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentColumnCannotBeEncryptedException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.CannotIndexOnEncryptedColumn exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentCannotIndexOnEncryptedColumnException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentCannotIndexOnEncryptedColumnException class. + /// + public EsentCannotIndexOnEncryptedColumnException() : + base("Cannot index encrypted column", JET_err.CannotIndexOnEncryptedColumn) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentCannotIndexOnEncryptedColumnException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentCannotIndexOnEncryptedColumnException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.ColumnLong exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentColumnLongException : EsentObsoleteException + { + /// + /// Initializes a new instance of the EsentColumnLongException class. + /// + public EsentColumnLongException() : + base("Column value is long", JET_err.ColumnLong) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentColumnLongException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentColumnLongException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.ColumnNoChunk exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentColumnNoChunkException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentColumnNoChunkException class. + /// + public EsentColumnNoChunkException() : + base("No such chunk in long value", JET_err.ColumnNoChunk) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentColumnNoChunkException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentColumnNoChunkException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.ColumnDoesNotFit exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentColumnDoesNotFitException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentColumnDoesNotFitException class. + /// + public EsentColumnDoesNotFitException() : + base("Field will not fit in record", JET_err.ColumnDoesNotFit) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentColumnDoesNotFitException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentColumnDoesNotFitException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.NullInvalid exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentNullInvalidException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentNullInvalidException class. + /// + public EsentNullInvalidException() : + base("Null not valid", JET_err.NullInvalid) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentNullInvalidException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentNullInvalidException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.ColumnIndexed exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentColumnIndexedException : EsentObsoleteException + { + /// + /// Initializes a new instance of the EsentColumnIndexedException class. + /// + public EsentColumnIndexedException() : + base("Column indexed, cannot delete", JET_err.ColumnIndexed) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentColumnIndexedException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentColumnIndexedException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.ColumnTooBig exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentColumnTooBigException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentColumnTooBigException class. + /// + public EsentColumnTooBigException() : + base("Field length is greater than maximum", JET_err.ColumnTooBig) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentColumnTooBigException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentColumnTooBigException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.ColumnNotFound exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentColumnNotFoundException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentColumnNotFoundException class. + /// + public EsentColumnNotFoundException() : + base("No such column", JET_err.ColumnNotFound) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentColumnNotFoundException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentColumnNotFoundException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.ColumnDuplicate exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentColumnDuplicateException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentColumnDuplicateException class. + /// + public EsentColumnDuplicateException() : + base("Field is already defined", JET_err.ColumnDuplicate) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentColumnDuplicateException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentColumnDuplicateException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.MultiValuedColumnMustBeTagged exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentMultiValuedColumnMustBeTaggedException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentMultiValuedColumnMustBeTaggedException class. + /// + public EsentMultiValuedColumnMustBeTaggedException() : + base("Attempted to create a multi-valued column, but column was not Tagged", JET_err.MultiValuedColumnMustBeTagged) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentMultiValuedColumnMustBeTaggedException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentMultiValuedColumnMustBeTaggedException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.ColumnRedundant exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentColumnRedundantException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentColumnRedundantException class. + /// + public EsentColumnRedundantException() : + base("Second autoincrement or version column", JET_err.ColumnRedundant) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentColumnRedundantException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentColumnRedundantException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.InvalidColumnType exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentInvalidColumnTypeException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentInvalidColumnTypeException class. + /// + public EsentInvalidColumnTypeException() : + base("Invalid column data type", JET_err.InvalidColumnType) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentInvalidColumnTypeException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentInvalidColumnTypeException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.TaggedNotNULL exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentTaggedNotNULLException : EsentObsoleteException + { + /// + /// Initializes a new instance of the EsentTaggedNotNULLException class. + /// + public EsentTaggedNotNULLException() : + base("No non-NULL tagged columns", JET_err.TaggedNotNULL) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentTaggedNotNULLException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentTaggedNotNULLException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.NoCurrentIndex exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentNoCurrentIndexException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentNoCurrentIndexException class. + /// + public EsentNoCurrentIndexException() : + base("Invalid w/o a current index", JET_err.NoCurrentIndex) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentNoCurrentIndexException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentNoCurrentIndexException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.KeyIsMade exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentKeyIsMadeException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentKeyIsMadeException class. + /// + public EsentKeyIsMadeException() : + base("The key is completely made", JET_err.KeyIsMade) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentKeyIsMadeException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentKeyIsMadeException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.BadColumnId exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentBadColumnIdException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentBadColumnIdException class. + /// + public EsentBadColumnIdException() : + base("Column Id Incorrect", JET_err.BadColumnId) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentBadColumnIdException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentBadColumnIdException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.BadItagSequence exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentBadItagSequenceException : EsentStateException + { + /// + /// Initializes a new instance of the EsentBadItagSequenceException class. + /// + public EsentBadItagSequenceException() : + base("Bad itagSequence for tagged column", JET_err.BadItagSequence) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentBadItagSequenceException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentBadItagSequenceException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.ColumnInRelationship exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentColumnInRelationshipException : EsentObsoleteException + { + /// + /// Initializes a new instance of the EsentColumnInRelationshipException class. + /// + public EsentColumnInRelationshipException() : + base("Cannot delete, column participates in relationship", JET_err.ColumnInRelationship) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentColumnInRelationshipException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentColumnInRelationshipException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.CannotBeTagged exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentCannotBeTaggedException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentCannotBeTaggedException class. + /// + public EsentCannotBeTaggedException() : + base("AutoIncrement and Version cannot be tagged", JET_err.CannotBeTagged) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentCannotBeTaggedException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentCannotBeTaggedException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.DefaultValueTooBig exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentDefaultValueTooBigException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentDefaultValueTooBigException class. + /// + public EsentDefaultValueTooBigException() : + base("Default value exceeds maximum size", JET_err.DefaultValueTooBig) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentDefaultValueTooBigException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentDefaultValueTooBigException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.MultiValuedDuplicate exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentMultiValuedDuplicateException : EsentStateException + { + /// + /// Initializes a new instance of the EsentMultiValuedDuplicateException class. + /// + public EsentMultiValuedDuplicateException() : + base("Duplicate detected on a unique multi-valued column", JET_err.MultiValuedDuplicate) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentMultiValuedDuplicateException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentMultiValuedDuplicateException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.LVCorrupted exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentLVCorruptedException : EsentCorruptionException + { + /// + /// Initializes a new instance of the EsentLVCorruptedException class. + /// + public EsentLVCorruptedException() : + base("Corruption encountered in long-value tree", JET_err.LVCorrupted) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentLVCorruptedException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentLVCorruptedException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.MultiValuedDuplicateAfterTruncation exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentMultiValuedDuplicateAfterTruncationException : EsentStateException + { + /// + /// Initializes a new instance of the EsentMultiValuedDuplicateAfterTruncationException class. + /// + public EsentMultiValuedDuplicateAfterTruncationException() : + base("Duplicate detected on a unique multi-valued column after data was normalized, and normalizing truncated the data before comparison", JET_err.MultiValuedDuplicateAfterTruncation) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentMultiValuedDuplicateAfterTruncationException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentMultiValuedDuplicateAfterTruncationException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.DerivedColumnCorruption exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentDerivedColumnCorruptionException : EsentCorruptionException + { + /// + /// Initializes a new instance of the EsentDerivedColumnCorruptionException class. + /// + public EsentDerivedColumnCorruptionException() : + base("Invalid column in derived table", JET_err.DerivedColumnCorruption) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentDerivedColumnCorruptionException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentDerivedColumnCorruptionException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.InvalidPlaceholderColumn exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentInvalidPlaceholderColumnException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentInvalidPlaceholderColumnException class. + /// + public EsentInvalidPlaceholderColumnException() : + base("Tried to convert column to a primary index placeholder, but column doesn't meet necessary criteria", JET_err.InvalidPlaceholderColumn) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentInvalidPlaceholderColumnException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentInvalidPlaceholderColumnException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.ColumnCannotBeCompressed exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentColumnCannotBeCompressedException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentColumnCannotBeCompressedException class. + /// + public EsentColumnCannotBeCompressedException() : + base("Only JET_coltypLongText and JET_coltypLongBinary columns can be compressed", JET_err.ColumnCannotBeCompressed) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentColumnCannotBeCompressedException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentColumnCannotBeCompressedException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.ColumnNoEncryptionKey exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentColumnNoEncryptionKeyException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentColumnNoEncryptionKeyException class. + /// + public EsentColumnNoEncryptionKeyException() : + base("Cannot retrieve/set encrypted column without an encryption key", JET_err.ColumnNoEncryptionKey) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentColumnNoEncryptionKeyException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentColumnNoEncryptionKeyException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.RecordNotFound exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentRecordNotFoundException : EsentStateException + { + /// + /// Initializes a new instance of the EsentRecordNotFoundException class. + /// + public EsentRecordNotFoundException() : + base("The key was not found", JET_err.RecordNotFound) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentRecordNotFoundException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentRecordNotFoundException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.RecordNoCopy exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentRecordNoCopyException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentRecordNoCopyException class. + /// + public EsentRecordNoCopyException() : + base("No working buffer", JET_err.RecordNoCopy) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentRecordNoCopyException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentRecordNoCopyException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.NoCurrentRecord exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentNoCurrentRecordException : EsentStateException + { + /// + /// Initializes a new instance of the EsentNoCurrentRecordException class. + /// + public EsentNoCurrentRecordException() : + base("Currency not on a record", JET_err.NoCurrentRecord) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentNoCurrentRecordException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentNoCurrentRecordException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.RecordPrimaryChanged exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentRecordPrimaryChangedException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentRecordPrimaryChangedException class. + /// + public EsentRecordPrimaryChangedException() : + base("Primary key may not change", JET_err.RecordPrimaryChanged) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentRecordPrimaryChangedException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentRecordPrimaryChangedException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.KeyDuplicate exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentKeyDuplicateException : EsentStateException + { + /// + /// Initializes a new instance of the EsentKeyDuplicateException class. + /// + public EsentKeyDuplicateException() : + base("Illegal duplicate key", JET_err.KeyDuplicate) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentKeyDuplicateException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentKeyDuplicateException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.AlreadyPrepared exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentAlreadyPreparedException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentAlreadyPreparedException class. + /// + public EsentAlreadyPreparedException() : + base("Attempted to update record when record update was already in progress", JET_err.AlreadyPrepared) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentAlreadyPreparedException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentAlreadyPreparedException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.KeyNotMade exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentKeyNotMadeException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentKeyNotMadeException class. + /// + public EsentKeyNotMadeException() : + base("No call to JetMakeKey", JET_err.KeyNotMade) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentKeyNotMadeException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentKeyNotMadeException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.UpdateNotPrepared exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentUpdateNotPreparedException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentUpdateNotPreparedException class. + /// + public EsentUpdateNotPreparedException() : + base("No call to JetPrepareUpdate", JET_err.UpdateNotPrepared) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentUpdateNotPreparedException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentUpdateNotPreparedException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.DataHasChanged exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentDataHasChangedException : EsentObsoleteException + { + /// + /// Initializes a new instance of the EsentDataHasChangedException class. + /// + public EsentDataHasChangedException() : + base("Data has changed, operation aborted", JET_err.DataHasChanged) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentDataHasChangedException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentDataHasChangedException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.LanguageNotSupported exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentLanguageNotSupportedException : EsentObsoleteException + { + /// + /// Initializes a new instance of the EsentLanguageNotSupportedException class. + /// + public EsentLanguageNotSupportedException() : + base("Windows installation does not support language", JET_err.LanguageNotSupported) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentLanguageNotSupportedException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentLanguageNotSupportedException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.DecompressionFailed exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentDecompressionFailedException : EsentCorruptionException + { + /// + /// Initializes a new instance of the EsentDecompressionFailedException class. + /// + public EsentDecompressionFailedException() : + base("Internal error: data could not be decompressed", JET_err.DecompressionFailed) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentDecompressionFailedException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentDecompressionFailedException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.UpdateMustVersion exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentUpdateMustVersionException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentUpdateMustVersionException class. + /// + public EsentUpdateMustVersionException() : + base("No version updates only for uncommitted tables", JET_err.UpdateMustVersion) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentUpdateMustVersionException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentUpdateMustVersionException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.DecryptionFailed exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentDecryptionFailedException : EsentCorruptionException + { + /// + /// Initializes a new instance of the EsentDecryptionFailedException class. + /// + public EsentDecryptionFailedException() : + base("Data could not be decrypted", JET_err.DecryptionFailed) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentDecryptionFailedException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentDecryptionFailedException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.EncryptionBadItag exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentEncryptionBadItagException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentEncryptionBadItagException class. + /// + public EsentEncryptionBadItagException() : + base("Cannot encrypt tagged columns with itag>1", JET_err.EncryptionBadItag) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentEncryptionBadItagException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentEncryptionBadItagException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.TooManySorts exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentTooManySortsException : EsentMemoryException + { + /// + /// Initializes a new instance of the EsentTooManySortsException class. + /// + public EsentTooManySortsException() : + base("Too many sort processes", JET_err.TooManySorts) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentTooManySortsException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentTooManySortsException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.InvalidOnSort exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentInvalidOnSortException : EsentObsoleteException + { + /// + /// Initializes a new instance of the EsentInvalidOnSortException class. + /// + public EsentInvalidOnSortException() : + base("Invalid operation on Sort", JET_err.InvalidOnSort) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentInvalidOnSortException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentInvalidOnSortException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.TempFileOpenError exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentTempFileOpenErrorException : EsentObsoleteException + { + /// + /// Initializes a new instance of the EsentTempFileOpenErrorException class. + /// + public EsentTempFileOpenErrorException() : + base("Temp file could not be opened", JET_err.TempFileOpenError) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentTempFileOpenErrorException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentTempFileOpenErrorException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.TooManyAttachedDatabases exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentTooManyAttachedDatabasesException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentTooManyAttachedDatabasesException class. + /// + public EsentTooManyAttachedDatabasesException() : + base("Too many open databases", JET_err.TooManyAttachedDatabases) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentTooManyAttachedDatabasesException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentTooManyAttachedDatabasesException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.DiskFull exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentDiskFullException : EsentDiskException + { + /// + /// Initializes a new instance of the EsentDiskFullException class. + /// + public EsentDiskFullException() : + base("No space left on disk", JET_err.DiskFull) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentDiskFullException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentDiskFullException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.PermissionDenied exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentPermissionDeniedException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentPermissionDeniedException class. + /// + public EsentPermissionDeniedException() : + base("Permission denied", JET_err.PermissionDenied) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentPermissionDeniedException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentPermissionDeniedException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.FileNotFound exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentFileNotFoundException : EsentStateException + { + /// + /// Initializes a new instance of the EsentFileNotFoundException class. + /// + public EsentFileNotFoundException() : + base("File not found", JET_err.FileNotFound) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentFileNotFoundException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentFileNotFoundException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.FileInvalidType exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentFileInvalidTypeException : EsentInconsistentException + { + /// + /// Initializes a new instance of the EsentFileInvalidTypeException class. + /// + public EsentFileInvalidTypeException() : + base("Invalid file type", JET_err.FileInvalidType) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentFileInvalidTypeException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentFileInvalidTypeException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.FileAlreadyExists exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentFileAlreadyExistsException : EsentInconsistentException + { + /// + /// Initializes a new instance of the EsentFileAlreadyExistsException class. + /// + public EsentFileAlreadyExistsException() : + base("File already exists", JET_err.FileAlreadyExists) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentFileAlreadyExistsException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentFileAlreadyExistsException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.AfterInitialization exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentAfterInitializationException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentAfterInitializationException class. + /// + public EsentAfterInitializationException() : + base("Cannot Restore after init.", JET_err.AfterInitialization) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentAfterInitializationException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentAfterInitializationException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.LogCorrupted exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentLogCorruptedException : EsentCorruptionException + { + /// + /// Initializes a new instance of the EsentLogCorruptedException class. + /// + public EsentLogCorruptedException() : + base("Logs could not be interpreted", JET_err.LogCorrupted) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentLogCorruptedException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentLogCorruptedException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.InvalidOperation exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentInvalidOperationException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentInvalidOperationException class. + /// + public EsentInvalidOperationException() : + base("Invalid operation", JET_err.InvalidOperation) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentInvalidOperationException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentInvalidOperationException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.AccessDenied exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentAccessDeniedException : EsentObsoleteException + { + /// + /// Initializes a new instance of the EsentAccessDeniedException class. + /// + public EsentAccessDeniedException() : + base("Access denied", JET_err.AccessDenied) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentAccessDeniedException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentAccessDeniedException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.TooManySplits exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentTooManySplitsException : EsentObsoleteException + { + /// + /// Initializes a new instance of the EsentTooManySplitsException class. + /// + public EsentTooManySplitsException() : + base("Infinite split", JET_err.TooManySplits) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentTooManySplitsException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentTooManySplitsException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.SessionSharingViolation exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentSessionSharingViolationException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentSessionSharingViolationException class. + /// + public EsentSessionSharingViolationException() : + base("Multiple threads are using the same session", JET_err.SessionSharingViolation) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentSessionSharingViolationException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentSessionSharingViolationException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.EntryPointNotFound exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentEntryPointNotFoundException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentEntryPointNotFoundException class. + /// + public EsentEntryPointNotFoundException() : + base("An entry point in a DLL we require could not be found", JET_err.EntryPointNotFound) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentEntryPointNotFoundException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentEntryPointNotFoundException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.SessionContextAlreadySet exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentSessionContextAlreadySetException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentSessionContextAlreadySetException class. + /// + public EsentSessionContextAlreadySetException() : + base("Specified session already has a session context set", JET_err.SessionContextAlreadySet) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentSessionContextAlreadySetException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentSessionContextAlreadySetException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.SessionContextNotSetByThisThread exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentSessionContextNotSetByThisThreadException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentSessionContextNotSetByThisThreadException class. + /// + public EsentSessionContextNotSetByThisThreadException() : + base("Tried to reset session context, but current thread did not originally set the session context", JET_err.SessionContextNotSetByThisThread) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentSessionContextNotSetByThisThreadException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentSessionContextNotSetByThisThreadException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.SessionInUse exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentSessionInUseException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentSessionInUseException class. + /// + public EsentSessionInUseException() : + base("Tried to terminate session in use", JET_err.SessionInUse) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentSessionInUseException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentSessionInUseException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.RecordFormatConversionFailed exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentRecordFormatConversionFailedException : EsentCorruptionException + { + /// + /// Initializes a new instance of the EsentRecordFormatConversionFailedException class. + /// + public EsentRecordFormatConversionFailedException() : + base("Internal error during dynamic record format conversion", JET_err.RecordFormatConversionFailed) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentRecordFormatConversionFailedException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentRecordFormatConversionFailedException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.OneDatabasePerSession exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentOneDatabasePerSessionException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentOneDatabasePerSessionException class. + /// + public EsentOneDatabasePerSessionException() : + base("Just one open user database per session is allowed (JET_paramOneDatabasePerSession)", JET_err.OneDatabasePerSession) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentOneDatabasePerSessionException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentOneDatabasePerSessionException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.RollbackError exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentRollbackErrorException : EsentFatalException + { + /// + /// Initializes a new instance of the EsentRollbackErrorException class. + /// + public EsentRollbackErrorException() : + base("error during rollback", JET_err.RollbackError) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentRollbackErrorException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentRollbackErrorException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.FlushMapVersionUnsupported exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentFlushMapVersionUnsupportedException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentFlushMapVersionUnsupportedException class. + /// + public EsentFlushMapVersionUnsupportedException() : + base("The version of the persisted flush map is not supported by this version of the engine.", JET_err.FlushMapVersionUnsupported) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentFlushMapVersionUnsupportedException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentFlushMapVersionUnsupportedException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.FlushMapDatabaseMismatch exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentFlushMapDatabaseMismatchException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentFlushMapDatabaseMismatchException class. + /// + public EsentFlushMapDatabaseMismatchException() : + base("The persisted flush map and the database do not match.", JET_err.FlushMapDatabaseMismatch) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentFlushMapDatabaseMismatchException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentFlushMapDatabaseMismatchException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.FlushMapUnrecoverable exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentFlushMapUnrecoverableException : EsentStateException + { + /// + /// Initializes a new instance of the EsentFlushMapUnrecoverableException class. + /// + public EsentFlushMapUnrecoverableException() : + base("The persisted flush map cannot be reconstructed.", JET_err.FlushMapUnrecoverable) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentFlushMapUnrecoverableException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentFlushMapUnrecoverableException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.DatabaseAlreadyRunningMaintenance exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentDatabaseAlreadyRunningMaintenanceException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentDatabaseAlreadyRunningMaintenanceException class. + /// + public EsentDatabaseAlreadyRunningMaintenanceException() : + base("The operation did not complete successfully because the database is already running maintenance on specified database", JET_err.DatabaseAlreadyRunningMaintenance) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentDatabaseAlreadyRunningMaintenanceException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentDatabaseAlreadyRunningMaintenanceException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.CallbackFailed exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentCallbackFailedException : EsentStateException + { + /// + /// Initializes a new instance of the EsentCallbackFailedException class. + /// + public EsentCallbackFailedException() : + base("A callback failed", JET_err.CallbackFailed) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentCallbackFailedException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentCallbackFailedException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.CallbackNotResolved exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentCallbackNotResolvedException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentCallbackNotResolvedException class. + /// + public EsentCallbackNotResolvedException() : + base("A callback function could not be found", JET_err.CallbackNotResolved) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentCallbackNotResolvedException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentCallbackNotResolvedException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.SpaceHintsInvalid exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentSpaceHintsInvalidException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentSpaceHintsInvalidException class. + /// + public EsentSpaceHintsInvalidException() : + base("An element of the JET space hints structure was not correct or actionable.", JET_err.SpaceHintsInvalid) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentSpaceHintsInvalidException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentSpaceHintsInvalidException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.OSSnapshotInvalidSequence exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentOSSnapshotInvalidSequenceException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentOSSnapshotInvalidSequenceException class. + /// + public EsentOSSnapshotInvalidSequenceException() : + base("OS Shadow copy API used in an invalid sequence", JET_err.OSSnapshotInvalidSequence) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentOSSnapshotInvalidSequenceException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentOSSnapshotInvalidSequenceException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.OSSnapshotTimeOut exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentOSSnapshotTimeOutException : EsentOperationException + { + /// + /// Initializes a new instance of the EsentOSSnapshotTimeOutException class. + /// + public EsentOSSnapshotTimeOutException() : + base("OS Shadow copy ended with time-out", JET_err.OSSnapshotTimeOut) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentOSSnapshotTimeOutException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentOSSnapshotTimeOutException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.OSSnapshotNotAllowed exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentOSSnapshotNotAllowedException : EsentStateException + { + /// + /// Initializes a new instance of the EsentOSSnapshotNotAllowedException class. + /// + public EsentOSSnapshotNotAllowedException() : + base("OS Shadow copy not allowed (backup or recovery in progress)", JET_err.OSSnapshotNotAllowed) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentOSSnapshotNotAllowedException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentOSSnapshotNotAllowedException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.OSSnapshotInvalidSnapId exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentOSSnapshotInvalidSnapIdException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentOSSnapshotInvalidSnapIdException class. + /// + public EsentOSSnapshotInvalidSnapIdException() : + base("invalid JET_OSSNAPID", JET_err.OSSnapshotInvalidSnapId) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentOSSnapshotInvalidSnapIdException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentOSSnapshotInvalidSnapIdException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.TooManyTestInjections exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentTooManyTestInjectionsException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentTooManyTestInjectionsException class. + /// + public EsentTooManyTestInjectionsException() : + base("Internal test injection limit hit", JET_err.TooManyTestInjections) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentTooManyTestInjectionsException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentTooManyTestInjectionsException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.TestInjectionNotSupported exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentTestInjectionNotSupportedException : EsentStateException + { + /// + /// Initializes a new instance of the EsentTestInjectionNotSupportedException class. + /// + public EsentTestInjectionNotSupportedException() : + base("Test injection not supported", JET_err.TestInjectionNotSupported) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentTestInjectionNotSupportedException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentTestInjectionNotSupportedException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.InvalidLogDataSequence exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentInvalidLogDataSequenceException : EsentStateException + { + /// + /// Initializes a new instance of the EsentInvalidLogDataSequenceException class. + /// + public EsentInvalidLogDataSequenceException() : + base("Some how the log data provided got out of sequence with the current state of the instance", JET_err.InvalidLogDataSequence) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentInvalidLogDataSequenceException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentInvalidLogDataSequenceException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.LSCallbackNotSpecified exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentLSCallbackNotSpecifiedException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentLSCallbackNotSpecifiedException class. + /// + public EsentLSCallbackNotSpecifiedException() : + base("Attempted to use Local Storage without a callback function being specified", JET_err.LSCallbackNotSpecified) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentLSCallbackNotSpecifiedException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentLSCallbackNotSpecifiedException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.LSAlreadySet exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentLSAlreadySetException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentLSAlreadySetException class. + /// + public EsentLSAlreadySetException() : + base("Attempted to set Local Storage for an object which already had it set", JET_err.LSAlreadySet) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentLSAlreadySetException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentLSAlreadySetException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.LSNotSet exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentLSNotSetException : EsentStateException + { + /// + /// Initializes a new instance of the EsentLSNotSetException class. + /// + public EsentLSNotSetException() : + base("Attempted to retrieve Local Storage from an object which didn't have it set", JET_err.LSNotSet) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentLSNotSetException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentLSNotSetException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.FileIOSparse exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentFileIOSparseException : EsentObsoleteException + { + /// + /// Initializes a new instance of the EsentFileIOSparseException class. + /// + public EsentFileIOSparseException() : + base("an I/O was issued to a location that was sparse", JET_err.FileIOSparse) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentFileIOSparseException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentFileIOSparseException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.FileIOBeyondEOF exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentFileIOBeyondEOFException : EsentCorruptionException + { + /// + /// Initializes a new instance of the EsentFileIOBeyondEOFException class. + /// + public EsentFileIOBeyondEOFException() : + base("a read was issued to a location beyond EOF (writes will expand the file)", JET_err.FileIOBeyondEOF) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentFileIOBeyondEOFException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentFileIOBeyondEOFException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.FileIOAbort exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentFileIOAbortException : EsentObsoleteException + { + /// + /// Initializes a new instance of the EsentFileIOAbortException class. + /// + public EsentFileIOAbortException() : + base("instructs the JET_ABORTRETRYFAILCALLBACK caller to abort the specified I/O", JET_err.FileIOAbort) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentFileIOAbortException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentFileIOAbortException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.FileIORetry exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentFileIORetryException : EsentObsoleteException + { + /// + /// Initializes a new instance of the EsentFileIORetryException class. + /// + public EsentFileIORetryException() : + base("instructs the JET_ABORTRETRYFAILCALLBACK caller to retry the specified I/O", JET_err.FileIORetry) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentFileIORetryException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentFileIORetryException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.FileIOFail exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentFileIOFailException : EsentObsoleteException + { + /// + /// Initializes a new instance of the EsentFileIOFailException class. + /// + public EsentFileIOFailException() : + base("instructs the JET_ABORTRETRYFAILCALLBACK caller to fail the specified I/O", JET_err.FileIOFail) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentFileIOFailException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentFileIOFailException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Base class for JET_err.FileCompressed exceptions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "Auto-generated code.")] + [Serializable] + public sealed class EsentFileCompressedException : EsentUsageException + { + /// + /// Initializes a new instance of the EsentFileCompressedException class. + /// + public EsentFileCompressedException() : + base("read/write access is not supported on compressed files", JET_err.FileCompressed) + { + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// + /// Initializes a new instance of the EsentFileCompressedException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + private EsentFileCompressedException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + } + + /// + /// Method to generate an EsentErrorException from an error code. + /// + internal static class EsentExceptionHelper + { + /// + /// Create an EsentErrorException from an error code. + /// + /// The error code. + /// An EsentErrorException for the error code. + public static EsentErrorException JetErrToException(JET_err err) + { + switch (err) + { + case JET_err.RfsFailure: + return new EsentRfsFailureException(); + case JET_err.RfsNotArmed: + return new EsentRfsNotArmedException(); + case JET_err.FileClose: + return new EsentFileCloseException(); + case JET_err.OutOfThreads: + return new EsentOutOfThreadsException(); + case JET_err.TooManyIO: + return new EsentTooManyIOException(); + case JET_err.TaskDropped: + return new EsentTaskDroppedException(); + case JET_err.InternalError: + return new EsentInternalErrorException(); + case JET_err.DisabledFunctionality: + return new EsentDisabledFunctionalityException(); + case JET_err.UnloadableOSFunctionality: + return new EsentUnloadableOSFunctionalityException(); + case JET_err.DeviceMissing: + return new EsentDeviceMissingException(); + case JET_err.DeviceMisconfigured: + return new EsentDeviceMisconfiguredException(); + case JET_err.DeviceTimeout: + return new EsentDeviceTimeoutException(); + case JET_err.DeviceFailure: + return new EsentDeviceFailureException(); + case JET_err.DatabaseBufferDependenciesCorrupted: + return new EsentDatabaseBufferDependenciesCorruptedException(); + case JET_err.PreviousVersion: + return new EsentPreviousVersionException(); + case JET_err.PageBoundary: + return new EsentPageBoundaryException(); + case JET_err.KeyBoundary: + return new EsentKeyBoundaryException(); + case JET_err.BadPageLink: + return new EsentBadPageLinkException(); + case JET_err.BadBookmark: + return new EsentBadBookmarkException(); + case JET_err.NTSystemCallFailed: + return new EsentNTSystemCallFailedException(); + case JET_err.BadParentPageLink: + return new EsentBadParentPageLinkException(); + case JET_err.SPAvailExtCacheOutOfSync: + return new EsentSPAvailExtCacheOutOfSyncException(); + case JET_err.SPAvailExtCorrupted: + return new EsentSPAvailExtCorruptedException(); + case JET_err.SPAvailExtCacheOutOfMemory: + return new EsentSPAvailExtCacheOutOfMemoryException(); + case JET_err.SPOwnExtCorrupted: + return new EsentSPOwnExtCorruptedException(); + case JET_err.DbTimeCorrupted: + return new EsentDbTimeCorruptedException(); + case JET_err.KeyTruncated: + return new EsentKeyTruncatedException(); + case JET_err.DatabaseLeakInSpace: + return new EsentDatabaseLeakInSpaceException(); + case JET_err.BadEmptyPage: + return new EsentBadEmptyPageException(); + case JET_err.BadLineCount: + return new EsentBadLineCountException(); + case JET_err.KeyTooBig: + return new EsentKeyTooBigException(); + case JET_err.CannotSeparateIntrinsicLV: + return new EsentCannotSeparateIntrinsicLVException(); + case JET_err.SeparatedLongValue: + return new EsentSeparatedLongValueException(); + case JET_err.MustBeSeparateLongValue: + return new EsentMustBeSeparateLongValueException(); + case JET_err.InvalidPreread: + return new EsentInvalidPrereadException(); + case JET_err.InvalidColumnReference: + return new EsentInvalidColumnReferenceException(); + case JET_err.StaleColumnReference: + return new EsentStaleColumnReferenceException(); + case JET_err.CompressionIntegrityCheckFailed: + return new EsentCompressionIntegrityCheckFailedException(); + case JET_err.InvalidLoggedOperation: + return new EsentInvalidLoggedOperationException(); + case JET_err.LogFileCorrupt: + return new EsentLogFileCorruptException(); + case JET_err.NoBackupDirectory: + return new EsentNoBackupDirectoryException(); + case JET_err.BackupDirectoryNotEmpty: + return new EsentBackupDirectoryNotEmptyException(); + case JET_err.BackupInProgress: + return new EsentBackupInProgressException(); + case JET_err.RestoreInProgress: + return new EsentRestoreInProgressException(); + case JET_err.MissingPreviousLogFile: + return new EsentMissingPreviousLogFileException(); + case JET_err.LogWriteFail: + return new EsentLogWriteFailException(); + case JET_err.LogDisabledDueToRecoveryFailure: + return new EsentLogDisabledDueToRecoveryFailureException(); + case JET_err.CannotLogDuringRecoveryRedo: + return new EsentCannotLogDuringRecoveryRedoException(); + case JET_err.LogGenerationMismatch: + return new EsentLogGenerationMismatchException(); + case JET_err.BadLogVersion: + return new EsentBadLogVersionException(); + case JET_err.InvalidLogSequence: + return new EsentInvalidLogSequenceException(); + case JET_err.LoggingDisabled: + return new EsentLoggingDisabledException(); + case JET_err.LogBufferTooSmall: + return new EsentLogBufferTooSmallException(); + case JET_err.LogSequenceEnd: + return new EsentLogSequenceEndException(); + case JET_err.NoBackup: + return new EsentNoBackupException(); + case JET_err.InvalidBackupSequence: + return new EsentInvalidBackupSequenceException(); + case JET_err.BackupNotAllowedYet: + return new EsentBackupNotAllowedYetException(); + case JET_err.DeleteBackupFileFail: + return new EsentDeleteBackupFileFailException(); + case JET_err.MakeBackupDirectoryFail: + return new EsentMakeBackupDirectoryFailException(); + case JET_err.InvalidBackup: + return new EsentInvalidBackupException(); + case JET_err.RecoveredWithErrors: + return new EsentRecoveredWithErrorsException(); + case JET_err.MissingLogFile: + return new EsentMissingLogFileException(); + case JET_err.LogDiskFull: + return new EsentLogDiskFullException(); + case JET_err.BadLogSignature: + return new EsentBadLogSignatureException(); + case JET_err.BadDbSignature: + return new EsentBadDbSignatureException(); + case JET_err.BadCheckpointSignature: + return new EsentBadCheckpointSignatureException(); + case JET_err.CheckpointCorrupt: + return new EsentCheckpointCorruptException(); + case JET_err.MissingPatchPage: + return new EsentMissingPatchPageException(); + case JET_err.BadPatchPage: + return new EsentBadPatchPageException(); + case JET_err.RedoAbruptEnded: + return new EsentRedoAbruptEndedException(); + case JET_err.PatchFileMissing: + return new EsentPatchFileMissingException(); + case JET_err.DatabaseLogSetMismatch: + return new EsentDatabaseLogSetMismatchException(); + case JET_err.DatabaseStreamingFileMismatch: + return new EsentDatabaseStreamingFileMismatchException(); + case JET_err.LogFileSizeMismatch: + return new EsentLogFileSizeMismatchException(); + case JET_err.CheckpointFileNotFound: + return new EsentCheckpointFileNotFoundException(); + case JET_err.RequiredLogFilesMissing: + return new EsentRequiredLogFilesMissingException(); + case JET_err.SoftRecoveryOnBackupDatabase: + return new EsentSoftRecoveryOnBackupDatabaseException(); + case JET_err.LogFileSizeMismatchDatabasesConsistent: + return new EsentLogFileSizeMismatchDatabasesConsistentException(); + case JET_err.LogSectorSizeMismatch: + return new EsentLogSectorSizeMismatchException(); + case JET_err.LogSectorSizeMismatchDatabasesConsistent: + return new EsentLogSectorSizeMismatchDatabasesConsistentException(); + case JET_err.LogSequenceEndDatabasesConsistent: + return new EsentLogSequenceEndDatabasesConsistentException(); + case JET_err.StreamingDataNotLogged: + return new EsentStreamingDataNotLoggedException(); + case JET_err.DatabaseDirtyShutdown: + return new EsentDatabaseDirtyShutdownException(); + case JET_err.ConsistentTimeMismatch: + return new EsentConsistentTimeMismatchException(); + case JET_err.DatabasePatchFileMismatch: + return new EsentDatabasePatchFileMismatchException(); + case JET_err.EndingRestoreLogTooLow: + return new EsentEndingRestoreLogTooLowException(); + case JET_err.StartingRestoreLogTooHigh: + return new EsentStartingRestoreLogTooHighException(); + case JET_err.GivenLogFileHasBadSignature: + return new EsentGivenLogFileHasBadSignatureException(); + case JET_err.GivenLogFileIsNotContiguous: + return new EsentGivenLogFileIsNotContiguousException(); + case JET_err.MissingRestoreLogFiles: + return new EsentMissingRestoreLogFilesException(); + case JET_err.MissingFullBackup: + return new EsentMissingFullBackupException(); + case JET_err.BadBackupDatabaseSize: + return new EsentBadBackupDatabaseSizeException(); + case JET_err.DatabaseAlreadyUpgraded: + return new EsentDatabaseAlreadyUpgradedException(); + case JET_err.DatabaseIncompleteUpgrade: + return new EsentDatabaseIncompleteUpgradeException(); + case JET_err.MissingCurrentLogFiles: + return new EsentMissingCurrentLogFilesException(); + case JET_err.DbTimeTooOld: + return new EsentDbTimeTooOldException(); + case JET_err.DbTimeTooNew: + return new EsentDbTimeTooNewException(); + case JET_err.MissingFileToBackup: + return new EsentMissingFileToBackupException(); + case JET_err.LogTornWriteDuringHardRestore: + return new EsentLogTornWriteDuringHardRestoreException(); + case JET_err.LogTornWriteDuringHardRecovery: + return new EsentLogTornWriteDuringHardRecoveryException(); + case JET_err.LogCorruptDuringHardRestore: + return new EsentLogCorruptDuringHardRestoreException(); + case JET_err.LogCorruptDuringHardRecovery: + return new EsentLogCorruptDuringHardRecoveryException(); + case JET_err.MustDisableLoggingForDbUpgrade: + return new EsentMustDisableLoggingForDbUpgradeException(); + case JET_err.BadRestoreTargetInstance: + return new EsentBadRestoreTargetInstanceException(); + case JET_err.RecoveredWithoutUndo: + return new EsentRecoveredWithoutUndoException(); + case JET_err.DatabasesNotFromSameSnapshot: + return new EsentDatabasesNotFromSameSnapshotException(); + case JET_err.SoftRecoveryOnSnapshot: + return new EsentSoftRecoveryOnSnapshotException(); + case JET_err.CommittedLogFilesMissing: + return new EsentCommittedLogFilesMissingException(); + case JET_err.SectorSizeNotSupported: + return new EsentSectorSizeNotSupportedException(); + case JET_err.RecoveredWithoutUndoDatabasesConsistent: + return new EsentRecoveredWithoutUndoDatabasesConsistentException(); + case JET_err.CommittedLogFileCorrupt: + return new EsentCommittedLogFileCorruptException(); + case JET_err.LogSequenceChecksumMismatch: + return new EsentLogSequenceChecksumMismatchException(); + case JET_err.PageInitializedMismatch: + return new EsentPageInitializedMismatchException(); + case JET_err.UnicodeTranslationBufferTooSmall: + return new EsentUnicodeTranslationBufferTooSmallException(); + case JET_err.UnicodeTranslationFail: + return new EsentUnicodeTranslationFailException(); + case JET_err.UnicodeNormalizationNotSupported: + return new EsentUnicodeNormalizationNotSupportedException(); + case JET_err.UnicodeLanguageValidationFailure: + return new EsentUnicodeLanguageValidationFailureException(); + case JET_err.ExistingLogFileHasBadSignature: + return new EsentExistingLogFileHasBadSignatureException(); + case JET_err.ExistingLogFileIsNotContiguous: + return new EsentExistingLogFileIsNotContiguousException(); + case JET_err.LogReadVerifyFailure: + return new EsentLogReadVerifyFailureException(); + case JET_err.CheckpointDepthTooDeep: + return new EsentCheckpointDepthTooDeepException(); + case JET_err.RestoreOfNonBackupDatabase: + return new EsentRestoreOfNonBackupDatabaseException(); + case JET_err.LogFileNotCopied: + return new EsentLogFileNotCopiedException(); + case JET_err.SurrogateBackupInProgress: + return new EsentSurrogateBackupInProgressException(); + case JET_err.TransactionTooLong: + return new EsentTransactionTooLongException(); + case JET_err.EngineFormatVersionNoLongerSupportedTooLow: + return new EsentEngineFormatVersionNoLongerSupportedTooLowException(); + case JET_err.EngineFormatVersionNotYetImplementedTooHigh: + return new EsentEngineFormatVersionNotYetImplementedTooHighException(); + case JET_err.EngineFormatVersionParamTooLowForRequestedFeature: + return new EsentEngineFormatVersionParamTooLowForRequestedFeatureException(); + case JET_err.EngineFormatVersionSpecifiedTooLowForLogVersion: + return new EsentEngineFormatVersionSpecifiedTooLowForLogVersionException(); + case JET_err.EngineFormatVersionSpecifiedTooLowForDatabaseVersion: + return new EsentEngineFormatVersionSpecifiedTooLowForDatabaseVersionException(); + case JET_err.BackupAbortByServer: + return new EsentBackupAbortByServerException(); + case JET_err.InvalidGrbit: + return new EsentInvalidGrbitException(); + case JET_err.TermInProgress: + return new EsentTermInProgressException(); + case JET_err.FeatureNotAvailable: + return new EsentFeatureNotAvailableException(); + case JET_err.InvalidName: + return new EsentInvalidNameException(); + case JET_err.InvalidParameter: + return new EsentInvalidParameterException(); + case JET_err.DatabaseFileReadOnly: + return new EsentDatabaseFileReadOnlyException(); + case JET_err.InvalidDatabaseId: + return new EsentInvalidDatabaseIdException(); + case JET_err.OutOfMemory: + return new EsentOutOfMemoryException(); + case JET_err.OutOfDatabaseSpace: + return new EsentOutOfDatabaseSpaceException(); + case JET_err.OutOfCursors: + return new EsentOutOfCursorsException(); + case JET_err.OutOfBuffers: + return new EsentOutOfBuffersException(); + case JET_err.TooManyIndexes: + return new EsentTooManyIndexesException(); + case JET_err.TooManyKeys: + return new EsentTooManyKeysException(); + case JET_err.RecordDeleted: + return new EsentRecordDeletedException(); + case JET_err.ReadVerifyFailure: + return new EsentReadVerifyFailureException(); + case JET_err.PageNotInitialized: + return new EsentPageNotInitializedException(); + case JET_err.OutOfFileHandles: + return new EsentOutOfFileHandlesException(); + case JET_err.DiskReadVerificationFailure: + return new EsentDiskReadVerificationFailureException(); + case JET_err.DiskIO: + return new EsentDiskIOException(); + case JET_err.InvalidPath: + return new EsentInvalidPathException(); + case JET_err.InvalidSystemPath: + return new EsentInvalidSystemPathException(); + case JET_err.InvalidLogDirectory: + return new EsentInvalidLogDirectoryException(); + case JET_err.RecordTooBig: + return new EsentRecordTooBigException(); + case JET_err.TooManyOpenDatabases: + return new EsentTooManyOpenDatabasesException(); + case JET_err.InvalidDatabase: + return new EsentInvalidDatabaseException(); + case JET_err.NotInitialized: + return new EsentNotInitializedException(); + case JET_err.AlreadyInitialized: + return new EsentAlreadyInitializedException(); + case JET_err.InitInProgress: + return new EsentInitInProgressException(); + case JET_err.FileAccessDenied: + return new EsentFileAccessDeniedException(); + case JET_err.QueryNotSupported: + return new EsentQueryNotSupportedException(); + case JET_err.SQLLinkNotSupported: + return new EsentSQLLinkNotSupportedException(); + case JET_err.BufferTooSmall: + return new EsentBufferTooSmallException(); + case JET_err.TooManyColumns: + return new EsentTooManyColumnsException(); + case JET_err.ContainerNotEmpty: + return new EsentContainerNotEmptyException(); + case JET_err.InvalidFilename: + return new EsentInvalidFilenameException(); + case JET_err.InvalidBookmark: + return new EsentInvalidBookmarkException(); + case JET_err.ColumnInUse: + return new EsentColumnInUseException(); + case JET_err.InvalidBufferSize: + return new EsentInvalidBufferSizeException(); + case JET_err.ColumnNotUpdatable: + return new EsentColumnNotUpdatableException(); + case JET_err.IndexInUse: + return new EsentIndexInUseException(); + case JET_err.LinkNotSupported: + return new EsentLinkNotSupportedException(); + case JET_err.NullKeyDisallowed: + return new EsentNullKeyDisallowedException(); + case JET_err.NotInTransaction: + return new EsentNotInTransactionException(); + case JET_err.MustRollback: + return new EsentMustRollbackException(); + case JET_err.TooManyActiveUsers: + return new EsentTooManyActiveUsersException(); + case JET_err.InvalidCountry: + return new EsentInvalidCountryException(); + case JET_err.InvalidLanguageId: + return new EsentInvalidLanguageIdException(); + case JET_err.InvalidCodePage: + return new EsentInvalidCodePageException(); + case JET_err.InvalidLCMapStringFlags: + return new EsentInvalidLCMapStringFlagsException(); + case JET_err.VersionStoreEntryTooBig: + return new EsentVersionStoreEntryTooBigException(); + case JET_err.VersionStoreOutOfMemoryAndCleanupTimedOut: + return new EsentVersionStoreOutOfMemoryAndCleanupTimedOutException(); + case JET_err.VersionStoreOutOfMemory: + return new EsentVersionStoreOutOfMemoryException(); + case JET_err.CurrencyStackOutOfMemory: + return new EsentCurrencyStackOutOfMemoryException(); + case JET_err.CannotIndex: + return new EsentCannotIndexException(); + case JET_err.RecordNotDeleted: + return new EsentRecordNotDeletedException(); + case JET_err.TooManyMempoolEntries: + return new EsentTooManyMempoolEntriesException(); + case JET_err.OutOfObjectIDs: + return new EsentOutOfObjectIDsException(); + case JET_err.OutOfLongValueIDs: + return new EsentOutOfLongValueIDsException(); + case JET_err.OutOfAutoincrementValues: + return new EsentOutOfAutoincrementValuesException(); + case JET_err.OutOfDbtimeValues: + return new EsentOutOfDbtimeValuesException(); + case JET_err.OutOfSequentialIndexValues: + return new EsentOutOfSequentialIndexValuesException(); + case JET_err.RunningInOneInstanceMode: + return new EsentRunningInOneInstanceModeException(); + case JET_err.RunningInMultiInstanceMode: + return new EsentRunningInMultiInstanceModeException(); + case JET_err.SystemParamsAlreadySet: + return new EsentSystemParamsAlreadySetException(); + case JET_err.SystemPathInUse: + return new EsentSystemPathInUseException(); + case JET_err.LogFilePathInUse: + return new EsentLogFilePathInUseException(); + case JET_err.TempPathInUse: + return new EsentTempPathInUseException(); + case JET_err.InstanceNameInUse: + return new EsentInstanceNameInUseException(); + case JET_err.SystemParameterConflict: + return new EsentSystemParameterConflictException(); + case JET_err.InstanceUnavailable: + return new EsentInstanceUnavailableException(); + case JET_err.DatabaseUnavailable: + return new EsentDatabaseUnavailableException(); + case JET_err.InstanceUnavailableDueToFatalLogDiskFull: + return new EsentInstanceUnavailableDueToFatalLogDiskFullException(); + case JET_err.InvalidSesparamId: + return new EsentInvalidSesparamIdException(); + case JET_err.TooManyRecords: + return new EsentTooManyRecordsException(); + case JET_err.InvalidDbparamId: + return new EsentInvalidDbparamIdException(); + case JET_err.OutOfSessions: + return new EsentOutOfSessionsException(); + case JET_err.WriteConflict: + return new EsentWriteConflictException(); + case JET_err.TransTooDeep: + return new EsentTransTooDeepException(); + case JET_err.InvalidSesid: + return new EsentInvalidSesidException(); + case JET_err.WriteConflictPrimaryIndex: + return new EsentWriteConflictPrimaryIndexException(); + case JET_err.InTransaction: + return new EsentInTransactionException(); + case JET_err.RollbackRequired: + return new EsentRollbackRequiredException(); + case JET_err.TransReadOnly: + return new EsentTransReadOnlyException(); + case JET_err.SessionWriteConflict: + return new EsentSessionWriteConflictException(); + case JET_err.RecordTooBigForBackwardCompatibility: + return new EsentRecordTooBigForBackwardCompatibilityException(); + case JET_err.CannotMaterializeForwardOnlySort: + return new EsentCannotMaterializeForwardOnlySortException(); + case JET_err.SesidTableIdMismatch: + return new EsentSesidTableIdMismatchException(); + case JET_err.InvalidInstance: + return new EsentInvalidInstanceException(); + case JET_err.DirtyShutdown: + return new EsentDirtyShutdownException(); + case JET_err.ReadPgnoVerifyFailure: + return new EsentReadPgnoVerifyFailureException(); + case JET_err.ReadLostFlushVerifyFailure: + return new EsentReadLostFlushVerifyFailureException(); + case JET_err.FileSystemCorruption: + return new EsentFileSystemCorruptionException(); + case JET_err.RecoveryVerifyFailure: + return new EsentRecoveryVerifyFailureException(); + case JET_err.FilteredMoveNotSupported: + return new EsentFilteredMoveNotSupportedException(); + case JET_err.MustCommitDistributedTransactionToLevel0: + return new EsentMustCommitDistributedTransactionToLevel0Exception(); + case JET_err.DistributedTransactionAlreadyPreparedToCommit: + return new EsentDistributedTransactionAlreadyPreparedToCommitException(); + case JET_err.NotInDistributedTransaction: + return new EsentNotInDistributedTransactionException(); + case JET_err.DistributedTransactionNotYetPreparedToCommit: + return new EsentDistributedTransactionNotYetPreparedToCommitException(); + case JET_err.CannotNestDistributedTransactions: + return new EsentCannotNestDistributedTransactionsException(); + case JET_err.DTCMissingCallback: + return new EsentDTCMissingCallbackException(); + case JET_err.DTCMissingCallbackOnRecovery: + return new EsentDTCMissingCallbackOnRecoveryException(); + case JET_err.DTCCallbackUnexpectedError: + return new EsentDTCCallbackUnexpectedErrorException(); + case JET_err.DatabaseDuplicate: + return new EsentDatabaseDuplicateException(); + case JET_err.DatabaseInUse: + return new EsentDatabaseInUseException(); + case JET_err.DatabaseNotFound: + return new EsentDatabaseNotFoundException(); + case JET_err.DatabaseInvalidName: + return new EsentDatabaseInvalidNameException(); + case JET_err.DatabaseInvalidPages: + return new EsentDatabaseInvalidPagesException(); + case JET_err.DatabaseCorrupted: + return new EsentDatabaseCorruptedException(); + case JET_err.DatabaseLocked: + return new EsentDatabaseLockedException(); + case JET_err.CannotDisableVersioning: + return new EsentCannotDisableVersioningException(); + case JET_err.InvalidDatabaseVersion: + return new EsentInvalidDatabaseVersionException(); + case JET_err.Database200Format: + return new EsentDatabase200FormatException(); + case JET_err.Database400Format: + return new EsentDatabase400FormatException(); + case JET_err.Database500Format: + return new EsentDatabase500FormatException(); + case JET_err.PageSizeMismatch: + return new EsentPageSizeMismatchException(); + case JET_err.TooManyInstances: + return new EsentTooManyInstancesException(); + case JET_err.DatabaseSharingViolation: + return new EsentDatabaseSharingViolationException(); + case JET_err.AttachedDatabaseMismatch: + return new EsentAttachedDatabaseMismatchException(); + case JET_err.DatabaseInvalidPath: + return new EsentDatabaseInvalidPathException(); + case JET_err.DatabaseIdInUse: + return new EsentDatabaseIdInUseException(); + case JET_err.ForceDetachNotAllowed: + return new EsentForceDetachNotAllowedException(); + case JET_err.CatalogCorrupted: + return new EsentCatalogCorruptedException(); + case JET_err.PartiallyAttachedDB: + return new EsentPartiallyAttachedDBException(); + case JET_err.DatabaseSignInUse: + return new EsentDatabaseSignInUseException(); + case JET_err.DatabaseCorruptedNoRepair: + return new EsentDatabaseCorruptedNoRepairException(); + case JET_err.InvalidCreateDbVersion: + return new EsentInvalidCreateDbVersionException(); + case JET_err.DatabaseIncompleteIncrementalReseed: + return new EsentDatabaseIncompleteIncrementalReseedException(); + case JET_err.DatabaseInvalidIncrementalReseed: + return new EsentDatabaseInvalidIncrementalReseedException(); + case JET_err.DatabaseFailedIncrementalReseed: + return new EsentDatabaseFailedIncrementalReseedException(); + case JET_err.NoAttachmentsFailedIncrementalReseed: + return new EsentNoAttachmentsFailedIncrementalReseedException(); + case JET_err.DatabaseNotReady: + return new EsentDatabaseNotReadyException(); + case JET_err.DatabaseAttachedForRecovery: + return new EsentDatabaseAttachedForRecoveryException(); + case JET_err.TransactionsNotReadyDuringRecovery: + return new EsentTransactionsNotReadyDuringRecoveryException(); + case JET_err.TableLocked: + return new EsentTableLockedException(); + case JET_err.TableDuplicate: + return new EsentTableDuplicateException(); + case JET_err.TableInUse: + return new EsentTableInUseException(); + case JET_err.ObjectNotFound: + return new EsentObjectNotFoundException(); + case JET_err.DensityInvalid: + return new EsentDensityInvalidException(); + case JET_err.TableNotEmpty: + return new EsentTableNotEmptyException(); + case JET_err.InvalidTableId: + return new EsentInvalidTableIdException(); + case JET_err.TooManyOpenTables: + return new EsentTooManyOpenTablesException(); + case JET_err.IllegalOperation: + return new EsentIllegalOperationException(); + case JET_err.TooManyOpenTablesAndCleanupTimedOut: + return new EsentTooManyOpenTablesAndCleanupTimedOutException(); + case JET_err.ObjectDuplicate: + return new EsentObjectDuplicateException(); + case JET_err.InvalidObject: + return new EsentInvalidObjectException(); + case JET_err.CannotDeleteTempTable: + return new EsentCannotDeleteTempTableException(); + case JET_err.CannotDeleteSystemTable: + return new EsentCannotDeleteSystemTableException(); + case JET_err.CannotDeleteTemplateTable: + return new EsentCannotDeleteTemplateTableException(); + case JET_err.ExclusiveTableLockRequired: + return new EsentExclusiveTableLockRequiredException(); + case JET_err.FixedDDL: + return new EsentFixedDDLException(); + case JET_err.FixedInheritedDDL: + return new EsentFixedInheritedDDLException(); + case JET_err.CannotNestDDL: + return new EsentCannotNestDDLException(); + case JET_err.DDLNotInheritable: + return new EsentDDLNotInheritableException(); + case JET_err.InvalidSettings: + return new EsentInvalidSettingsException(); + case JET_err.ClientRequestToStopJetService: + return new EsentClientRequestToStopJetServiceException(); + case JET_err.CannotAddFixedVarColumnToDerivedTable: + return new EsentCannotAddFixedVarColumnToDerivedTableException(); + case JET_err.IndexCantBuild: + return new EsentIndexCantBuildException(); + case JET_err.IndexHasPrimary: + return new EsentIndexHasPrimaryException(); + case JET_err.IndexDuplicate: + return new EsentIndexDuplicateException(); + case JET_err.IndexNotFound: + return new EsentIndexNotFoundException(); + case JET_err.IndexMustStay: + return new EsentIndexMustStayException(); + case JET_err.IndexInvalidDef: + return new EsentIndexInvalidDefException(); + case JET_err.InvalidCreateIndex: + return new EsentInvalidCreateIndexException(); + case JET_err.TooManyOpenIndexes: + return new EsentTooManyOpenIndexesException(); + case JET_err.MultiValuedIndexViolation: + return new EsentMultiValuedIndexViolationException(); + case JET_err.IndexBuildCorrupted: + return new EsentIndexBuildCorruptedException(); + case JET_err.PrimaryIndexCorrupted: + return new EsentPrimaryIndexCorruptedException(); + case JET_err.SecondaryIndexCorrupted: + return new EsentSecondaryIndexCorruptedException(); + case JET_err.InvalidIndexId: + return new EsentInvalidIndexIdException(); + case JET_err.IndexTuplesSecondaryIndexOnly: + return new EsentIndexTuplesSecondaryIndexOnlyException(); + case JET_err.IndexTuplesTooManyColumns: + return new EsentIndexTuplesTooManyColumnsException(); + case JET_err.IndexTuplesNonUniqueOnly: + return new EsentIndexTuplesNonUniqueOnlyException(); + case JET_err.IndexTuplesTextBinaryColumnsOnly: + return new EsentIndexTuplesTextBinaryColumnsOnlyException(); + case JET_err.IndexTuplesVarSegMacNotAllowed: + return new EsentIndexTuplesVarSegMacNotAllowedException(); + case JET_err.IndexTuplesInvalidLimits: + return new EsentIndexTuplesInvalidLimitsException(); + case JET_err.IndexTuplesCannotRetrieveFromIndex: + return new EsentIndexTuplesCannotRetrieveFromIndexException(); + case JET_err.IndexTuplesKeyTooSmall: + return new EsentIndexTuplesKeyTooSmallException(); + case JET_err.InvalidLVChunkSize: + return new EsentInvalidLVChunkSizeException(); + case JET_err.ColumnCannotBeEncrypted: + return new EsentColumnCannotBeEncryptedException(); + case JET_err.CannotIndexOnEncryptedColumn: + return new EsentCannotIndexOnEncryptedColumnException(); + case JET_err.ColumnLong: + return new EsentColumnLongException(); + case JET_err.ColumnNoChunk: + return new EsentColumnNoChunkException(); + case JET_err.ColumnDoesNotFit: + return new EsentColumnDoesNotFitException(); + case JET_err.NullInvalid: + return new EsentNullInvalidException(); + case JET_err.ColumnIndexed: + return new EsentColumnIndexedException(); + case JET_err.ColumnTooBig: + return new EsentColumnTooBigException(); + case JET_err.ColumnNotFound: + return new EsentColumnNotFoundException(); + case JET_err.ColumnDuplicate: + return new EsentColumnDuplicateException(); + case JET_err.MultiValuedColumnMustBeTagged: + return new EsentMultiValuedColumnMustBeTaggedException(); + case JET_err.ColumnRedundant: + return new EsentColumnRedundantException(); + case JET_err.InvalidColumnType: + return new EsentInvalidColumnTypeException(); + case JET_err.TaggedNotNULL: + return new EsentTaggedNotNULLException(); + case JET_err.NoCurrentIndex: + return new EsentNoCurrentIndexException(); + case JET_err.KeyIsMade: + return new EsentKeyIsMadeException(); + case JET_err.BadColumnId: + return new EsentBadColumnIdException(); + case JET_err.BadItagSequence: + return new EsentBadItagSequenceException(); + case JET_err.ColumnInRelationship: + return new EsentColumnInRelationshipException(); + case JET_err.CannotBeTagged: + return new EsentCannotBeTaggedException(); + case JET_err.DefaultValueTooBig: + return new EsentDefaultValueTooBigException(); + case JET_err.MultiValuedDuplicate: + return new EsentMultiValuedDuplicateException(); + case JET_err.LVCorrupted: + return new EsentLVCorruptedException(); + case JET_err.MultiValuedDuplicateAfterTruncation: + return new EsentMultiValuedDuplicateAfterTruncationException(); + case JET_err.DerivedColumnCorruption: + return new EsentDerivedColumnCorruptionException(); + case JET_err.InvalidPlaceholderColumn: + return new EsentInvalidPlaceholderColumnException(); + case JET_err.ColumnCannotBeCompressed: + return new EsentColumnCannotBeCompressedException(); + case JET_err.ColumnNoEncryptionKey: + return new EsentColumnNoEncryptionKeyException(); + case JET_err.RecordNotFound: + return new EsentRecordNotFoundException(); + case JET_err.RecordNoCopy: + return new EsentRecordNoCopyException(); + case JET_err.NoCurrentRecord: + return new EsentNoCurrentRecordException(); + case JET_err.RecordPrimaryChanged: + return new EsentRecordPrimaryChangedException(); + case JET_err.KeyDuplicate: + return new EsentKeyDuplicateException(); + case JET_err.AlreadyPrepared: + return new EsentAlreadyPreparedException(); + case JET_err.KeyNotMade: + return new EsentKeyNotMadeException(); + case JET_err.UpdateNotPrepared: + return new EsentUpdateNotPreparedException(); + case JET_err.DataHasChanged: + return new EsentDataHasChangedException(); + case JET_err.LanguageNotSupported: + return new EsentLanguageNotSupportedException(); + case JET_err.DecompressionFailed: + return new EsentDecompressionFailedException(); + case JET_err.UpdateMustVersion: + return new EsentUpdateMustVersionException(); + case JET_err.DecryptionFailed: + return new EsentDecryptionFailedException(); + case JET_err.EncryptionBadItag: + return new EsentEncryptionBadItagException(); + case JET_err.TooManySorts: + return new EsentTooManySortsException(); + case JET_err.InvalidOnSort: + return new EsentInvalidOnSortException(); + case JET_err.TempFileOpenError: + return new EsentTempFileOpenErrorException(); + case JET_err.TooManyAttachedDatabases: + return new EsentTooManyAttachedDatabasesException(); + case JET_err.DiskFull: + return new EsentDiskFullException(); + case JET_err.PermissionDenied: + return new EsentPermissionDeniedException(); + case JET_err.FileNotFound: + return new EsentFileNotFoundException(); + case JET_err.FileInvalidType: + return new EsentFileInvalidTypeException(); + case JET_err.FileAlreadyExists: + return new EsentFileAlreadyExistsException(); + case JET_err.AfterInitialization: + return new EsentAfterInitializationException(); + case JET_err.LogCorrupted: + return new EsentLogCorruptedException(); + case JET_err.InvalidOperation: + return new EsentInvalidOperationException(); + case JET_err.AccessDenied: + return new EsentAccessDeniedException(); + case JET_err.TooManySplits: + return new EsentTooManySplitsException(); + case JET_err.SessionSharingViolation: + return new EsentSessionSharingViolationException(); + case JET_err.EntryPointNotFound: + return new EsentEntryPointNotFoundException(); + case JET_err.SessionContextAlreadySet: + return new EsentSessionContextAlreadySetException(); + case JET_err.SessionContextNotSetByThisThread: + return new EsentSessionContextNotSetByThisThreadException(); + case JET_err.SessionInUse: + return new EsentSessionInUseException(); + case JET_err.RecordFormatConversionFailed: + return new EsentRecordFormatConversionFailedException(); + case JET_err.OneDatabasePerSession: + return new EsentOneDatabasePerSessionException(); + case JET_err.RollbackError: + return new EsentRollbackErrorException(); + case JET_err.FlushMapVersionUnsupported: + return new EsentFlushMapVersionUnsupportedException(); + case JET_err.FlushMapDatabaseMismatch: + return new EsentFlushMapDatabaseMismatchException(); + case JET_err.FlushMapUnrecoverable: + return new EsentFlushMapUnrecoverableException(); + case JET_err.DatabaseAlreadyRunningMaintenance: + return new EsentDatabaseAlreadyRunningMaintenanceException(); + case JET_err.CallbackFailed: + return new EsentCallbackFailedException(); + case JET_err.CallbackNotResolved: + return new EsentCallbackNotResolvedException(); + case JET_err.SpaceHintsInvalid: + return new EsentSpaceHintsInvalidException(); + case JET_err.OSSnapshotInvalidSequence: + return new EsentOSSnapshotInvalidSequenceException(); + case JET_err.OSSnapshotTimeOut: + return new EsentOSSnapshotTimeOutException(); + case JET_err.OSSnapshotNotAllowed: + return new EsentOSSnapshotNotAllowedException(); + case JET_err.OSSnapshotInvalidSnapId: + return new EsentOSSnapshotInvalidSnapIdException(); + case JET_err.TooManyTestInjections: + return new EsentTooManyTestInjectionsException(); + case JET_err.TestInjectionNotSupported: + return new EsentTestInjectionNotSupportedException(); + case JET_err.InvalidLogDataSequence: + return new EsentInvalidLogDataSequenceException(); + case JET_err.LSCallbackNotSpecified: + return new EsentLSCallbackNotSpecifiedException(); + case JET_err.LSAlreadySet: + return new EsentLSAlreadySetException(); + case JET_err.LSNotSet: + return new EsentLSNotSetException(); + case JET_err.FileIOSparse: + return new EsentFileIOSparseException(); + case JET_err.FileIOBeyondEOF: + return new EsentFileIOBeyondEOFException(); + case JET_err.FileIOAbort: + return new EsentFileIOAbortException(); + case JET_err.FileIORetry: + return new EsentFileIORetryException(); + case JET_err.FileIOFail: + return new EsentFileIOFailException(); + case JET_err.FileCompressed: + return new EsentFileCompressedException(); + default: + // This could be a new error introduced in a newer version of Esent. Try to look up the description. + IntPtr errNum = new IntPtr((int)err); + string description; + int wrn = Api.Impl.JetGetSystemParameter(JET_INSTANCE.Nil, JET_SESID.Nil, JET_param.ErrorToString, ref errNum, out description, 1024); + err = (JET_err)errNum.ToInt32(); + if ((int)JET_wrn.Success != wrn) + { + description = "Unknown error"; + } + + return new EsentErrorException(description, err); + } + } + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/Esent.sln b/WelsonJS.Toolkit/EsentInterop/Esent.sln new file mode 100644 index 0000000..1edbae6 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/Esent.sln @@ -0,0 +1,351 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.10.35122.118 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{18B3E50E-454E-49DB-A92F-E1D7DAD2AF7D}" + ProjectSection(SolutionItems) = preProject + CodeCoverage.testrunconfig = CodeCoverage.testrunconfig + esent.vsmdi = esent.vsmdi + Normal.testrunconfig = Normal.testrunconfig + EndProjectSection +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EsentInterop", "EsentInterop.csproj", "{E929E163-52A0-4AAC-917B-6D7FAF70C45E}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DbUtil", "..\EsentInteropSamples\DbUtil\DbUtil.csproj", "{E0B163B0-5AC6-4304-B932-BFC1F6A2A4EB}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "isam", "..\isam\isam.csproj", "{21CC632C-B09A-4DB7-BD6E-7F7D2716F58F}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "StockSample", "..\EsentInteropSamples\StockSample\StockSample.csproj", "{B0E6D3AB-26F8-4A77-A7E1-D8024B8FFFCF}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EsentCollections", "..\EsentCollections\EsentCollections.csproj", "{CF2D4EE4-0D11-404D-B800-C4DCFEC42588}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HelloWorld", "..\EsentCollectionsSamples\HelloWorld\HelloWorld.csproj", "{8341DE8C-5BC7-461F-B42D-AA2B72586A5C}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "RssDictionarySample", "..\EsentCollectionsSamples\RssDictionarySample\RssDictionarySample.csproj", "{134FBC80-2E23-451B-A6B3-72B0AA2234F9}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EsentInteropTests", "..\EsentInteropTests\EsentInteropTests.csproj", "{85B2B7BB-BF95-42DF-8CBF-348AEF63BD1F}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EsentCollectionsTests", "..\EsentCollectionsTests\EsentCollectionsTests.csproj", "{D3A1C1C8-6119-4827-AC24-1FF49FACFD4D}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IsamUnitTests", "..\isamunittests\IsamUnitTests.csproj", "{6AC9C0BE-6BCE-493F-BD80-6F2247CB669D}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DbUtilTests", "..\EsentInteropSamples\DbUtilTests\DbUtilTests.csproj", "{C9B82A4F-8306-41A9-91DA-1BA5080F1DB0}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EsentSample", "..\EsentInteropSamples\EsentSample\EsentSample.csproj", "{44D46916-891F-435F-B914-AE8AC80613FD}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BasicTest", "..\EsentInteropSamples\BasicTest\BasicTest.csproj", "{08819B49-02B8-4F93-A143-F9B0461CEA64}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UWPSample", "..\UWPSample\UWPSample.csproj", "{B1427E8D-9175-42BE-8B90-A5A9CB4AAD51}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Debug|ARM = Debug|ARM + Debug|ARM64 = Debug|ARM64 + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|Any CPU = Release|Any CPU + Release|ARM = Release|ARM + Release|ARM64 = Release|ARM64 + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {E929E163-52A0-4AAC-917B-6D7FAF70C45E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E929E163-52A0-4AAC-917B-6D7FAF70C45E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E929E163-52A0-4AAC-917B-6D7FAF70C45E}.Debug|ARM.ActiveCfg = Debug|Any CPU + {E929E163-52A0-4AAC-917B-6D7FAF70C45E}.Debug|ARM.Build.0 = Debug|Any CPU + {E929E163-52A0-4AAC-917B-6D7FAF70C45E}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {E929E163-52A0-4AAC-917B-6D7FAF70C45E}.Debug|ARM64.Build.0 = Debug|Any CPU + {E929E163-52A0-4AAC-917B-6D7FAF70C45E}.Debug|x64.ActiveCfg = Debug|Any CPU + {E929E163-52A0-4AAC-917B-6D7FAF70C45E}.Debug|x64.Build.0 = Debug|Any CPU + {E929E163-52A0-4AAC-917B-6D7FAF70C45E}.Debug|x86.ActiveCfg = Debug|Any CPU + {E929E163-52A0-4AAC-917B-6D7FAF70C45E}.Debug|x86.Build.0 = Debug|Any CPU + {E929E163-52A0-4AAC-917B-6D7FAF70C45E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E929E163-52A0-4AAC-917B-6D7FAF70C45E}.Release|Any CPU.Build.0 = Release|Any CPU + {E929E163-52A0-4AAC-917B-6D7FAF70C45E}.Release|ARM.ActiveCfg = Release|Any CPU + {E929E163-52A0-4AAC-917B-6D7FAF70C45E}.Release|ARM.Build.0 = Release|Any CPU + {E929E163-52A0-4AAC-917B-6D7FAF70C45E}.Release|ARM64.ActiveCfg = Release|Any CPU + {E929E163-52A0-4AAC-917B-6D7FAF70C45E}.Release|ARM64.Build.0 = Release|Any CPU + {E929E163-52A0-4AAC-917B-6D7FAF70C45E}.Release|x64.ActiveCfg = Release|Any CPU + {E929E163-52A0-4AAC-917B-6D7FAF70C45E}.Release|x64.Build.0 = Release|Any CPU + {E929E163-52A0-4AAC-917B-6D7FAF70C45E}.Release|x86.ActiveCfg = Release|x86 + {E929E163-52A0-4AAC-917B-6D7FAF70C45E}.Release|x86.Build.0 = Release|x86 + {E0B163B0-5AC6-4304-B932-BFC1F6A2A4EB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E0B163B0-5AC6-4304-B932-BFC1F6A2A4EB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E0B163B0-5AC6-4304-B932-BFC1F6A2A4EB}.Debug|ARM.ActiveCfg = Debug|Any CPU + {E0B163B0-5AC6-4304-B932-BFC1F6A2A4EB}.Debug|ARM.Build.0 = Debug|Any CPU + {E0B163B0-5AC6-4304-B932-BFC1F6A2A4EB}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {E0B163B0-5AC6-4304-B932-BFC1F6A2A4EB}.Debug|ARM64.Build.0 = Debug|Any CPU + {E0B163B0-5AC6-4304-B932-BFC1F6A2A4EB}.Debug|x64.ActiveCfg = Debug|Any CPU + {E0B163B0-5AC6-4304-B932-BFC1F6A2A4EB}.Debug|x64.Build.0 = Debug|Any CPU + {E0B163B0-5AC6-4304-B932-BFC1F6A2A4EB}.Debug|x86.ActiveCfg = Debug|Any CPU + {E0B163B0-5AC6-4304-B932-BFC1F6A2A4EB}.Debug|x86.Build.0 = Debug|Any CPU + {E0B163B0-5AC6-4304-B932-BFC1F6A2A4EB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E0B163B0-5AC6-4304-B932-BFC1F6A2A4EB}.Release|Any CPU.Build.0 = Release|Any CPU + {E0B163B0-5AC6-4304-B932-BFC1F6A2A4EB}.Release|ARM.ActiveCfg = Release|Any CPU + {E0B163B0-5AC6-4304-B932-BFC1F6A2A4EB}.Release|ARM.Build.0 = Release|Any CPU + {E0B163B0-5AC6-4304-B932-BFC1F6A2A4EB}.Release|ARM64.ActiveCfg = Release|Any CPU + {E0B163B0-5AC6-4304-B932-BFC1F6A2A4EB}.Release|ARM64.Build.0 = Release|Any CPU + {E0B163B0-5AC6-4304-B932-BFC1F6A2A4EB}.Release|x64.ActiveCfg = Release|Any CPU + {E0B163B0-5AC6-4304-B932-BFC1F6A2A4EB}.Release|x64.Build.0 = Release|Any CPU + {E0B163B0-5AC6-4304-B932-BFC1F6A2A4EB}.Release|x86.ActiveCfg = Release|x86 + {E0B163B0-5AC6-4304-B932-BFC1F6A2A4EB}.Release|x86.Build.0 = Release|x86 + {21CC632C-B09A-4DB7-BD6E-7F7D2716F58F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {21CC632C-B09A-4DB7-BD6E-7F7D2716F58F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {21CC632C-B09A-4DB7-BD6E-7F7D2716F58F}.Debug|ARM.ActiveCfg = Debug|Any CPU + {21CC632C-B09A-4DB7-BD6E-7F7D2716F58F}.Debug|ARM.Build.0 = Debug|Any CPU + {21CC632C-B09A-4DB7-BD6E-7F7D2716F58F}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {21CC632C-B09A-4DB7-BD6E-7F7D2716F58F}.Debug|ARM64.Build.0 = Debug|Any CPU + {21CC632C-B09A-4DB7-BD6E-7F7D2716F58F}.Debug|x64.ActiveCfg = Debug|Any CPU + {21CC632C-B09A-4DB7-BD6E-7F7D2716F58F}.Debug|x64.Build.0 = Debug|Any CPU + {21CC632C-B09A-4DB7-BD6E-7F7D2716F58F}.Debug|x86.ActiveCfg = Debug|Any CPU + {21CC632C-B09A-4DB7-BD6E-7F7D2716F58F}.Debug|x86.Build.0 = Debug|Any CPU + {21CC632C-B09A-4DB7-BD6E-7F7D2716F58F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {21CC632C-B09A-4DB7-BD6E-7F7D2716F58F}.Release|Any CPU.Build.0 = Release|Any CPU + {21CC632C-B09A-4DB7-BD6E-7F7D2716F58F}.Release|ARM.ActiveCfg = Release|Any CPU + {21CC632C-B09A-4DB7-BD6E-7F7D2716F58F}.Release|ARM.Build.0 = Release|Any CPU + {21CC632C-B09A-4DB7-BD6E-7F7D2716F58F}.Release|ARM64.ActiveCfg = Release|Any CPU + {21CC632C-B09A-4DB7-BD6E-7F7D2716F58F}.Release|ARM64.Build.0 = Release|Any CPU + {21CC632C-B09A-4DB7-BD6E-7F7D2716F58F}.Release|x64.ActiveCfg = Release|Any CPU + {21CC632C-B09A-4DB7-BD6E-7F7D2716F58F}.Release|x64.Build.0 = Release|Any CPU + {21CC632C-B09A-4DB7-BD6E-7F7D2716F58F}.Release|x86.ActiveCfg = Release|x86 + {21CC632C-B09A-4DB7-BD6E-7F7D2716F58F}.Release|x86.Build.0 = Release|x86 + {B0E6D3AB-26F8-4A77-A7E1-D8024B8FFFCF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B0E6D3AB-26F8-4A77-A7E1-D8024B8FFFCF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B0E6D3AB-26F8-4A77-A7E1-D8024B8FFFCF}.Debug|ARM.ActiveCfg = Debug|Any CPU + {B0E6D3AB-26F8-4A77-A7E1-D8024B8FFFCF}.Debug|ARM.Build.0 = Debug|Any CPU + {B0E6D3AB-26F8-4A77-A7E1-D8024B8FFFCF}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {B0E6D3AB-26F8-4A77-A7E1-D8024B8FFFCF}.Debug|ARM64.Build.0 = Debug|Any CPU + {B0E6D3AB-26F8-4A77-A7E1-D8024B8FFFCF}.Debug|x64.ActiveCfg = Debug|Any CPU + {B0E6D3AB-26F8-4A77-A7E1-D8024B8FFFCF}.Debug|x64.Build.0 = Debug|Any CPU + {B0E6D3AB-26F8-4A77-A7E1-D8024B8FFFCF}.Debug|x86.ActiveCfg = Debug|Any CPU + {B0E6D3AB-26F8-4A77-A7E1-D8024B8FFFCF}.Debug|x86.Build.0 = Debug|Any CPU + {B0E6D3AB-26F8-4A77-A7E1-D8024B8FFFCF}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B0E6D3AB-26F8-4A77-A7E1-D8024B8FFFCF}.Release|Any CPU.Build.0 = Release|Any CPU + {B0E6D3AB-26F8-4A77-A7E1-D8024B8FFFCF}.Release|ARM.ActiveCfg = Release|Any CPU + {B0E6D3AB-26F8-4A77-A7E1-D8024B8FFFCF}.Release|ARM.Build.0 = Release|Any CPU + {B0E6D3AB-26F8-4A77-A7E1-D8024B8FFFCF}.Release|ARM64.ActiveCfg = Release|Any CPU + {B0E6D3AB-26F8-4A77-A7E1-D8024B8FFFCF}.Release|ARM64.Build.0 = Release|Any CPU + {B0E6D3AB-26F8-4A77-A7E1-D8024B8FFFCF}.Release|x64.ActiveCfg = Release|Any CPU + {B0E6D3AB-26F8-4A77-A7E1-D8024B8FFFCF}.Release|x64.Build.0 = Release|Any CPU + {B0E6D3AB-26F8-4A77-A7E1-D8024B8FFFCF}.Release|x86.ActiveCfg = Release|x86 + {B0E6D3AB-26F8-4A77-A7E1-D8024B8FFFCF}.Release|x86.Build.0 = Release|x86 + {CF2D4EE4-0D11-404D-B800-C4DCFEC42588}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {CF2D4EE4-0D11-404D-B800-C4DCFEC42588}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CF2D4EE4-0D11-404D-B800-C4DCFEC42588}.Debug|ARM.ActiveCfg = Debug|Any CPU + {CF2D4EE4-0D11-404D-B800-C4DCFEC42588}.Debug|ARM.Build.0 = Debug|Any CPU + {CF2D4EE4-0D11-404D-B800-C4DCFEC42588}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {CF2D4EE4-0D11-404D-B800-C4DCFEC42588}.Debug|ARM64.Build.0 = Debug|Any CPU + {CF2D4EE4-0D11-404D-B800-C4DCFEC42588}.Debug|x64.ActiveCfg = Debug|Any CPU + {CF2D4EE4-0D11-404D-B800-C4DCFEC42588}.Debug|x64.Build.0 = Debug|Any CPU + {CF2D4EE4-0D11-404D-B800-C4DCFEC42588}.Debug|x86.ActiveCfg = Debug|Any CPU + {CF2D4EE4-0D11-404D-B800-C4DCFEC42588}.Debug|x86.Build.0 = Debug|Any CPU + {CF2D4EE4-0D11-404D-B800-C4DCFEC42588}.Release|Any CPU.ActiveCfg = Release|Any CPU + {CF2D4EE4-0D11-404D-B800-C4DCFEC42588}.Release|Any CPU.Build.0 = Release|Any CPU + {CF2D4EE4-0D11-404D-B800-C4DCFEC42588}.Release|ARM.ActiveCfg = Release|Any CPU + {CF2D4EE4-0D11-404D-B800-C4DCFEC42588}.Release|ARM.Build.0 = Release|Any CPU + {CF2D4EE4-0D11-404D-B800-C4DCFEC42588}.Release|ARM64.ActiveCfg = Release|Any CPU + {CF2D4EE4-0D11-404D-B800-C4DCFEC42588}.Release|ARM64.Build.0 = Release|Any CPU + {CF2D4EE4-0D11-404D-B800-C4DCFEC42588}.Release|x64.ActiveCfg = Release|Any CPU + {CF2D4EE4-0D11-404D-B800-C4DCFEC42588}.Release|x64.Build.0 = Release|Any CPU + {CF2D4EE4-0D11-404D-B800-C4DCFEC42588}.Release|x86.ActiveCfg = Release|x86 + {CF2D4EE4-0D11-404D-B800-C4DCFEC42588}.Release|x86.Build.0 = Release|x86 + {8341DE8C-5BC7-461F-B42D-AA2B72586A5C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8341DE8C-5BC7-461F-B42D-AA2B72586A5C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8341DE8C-5BC7-461F-B42D-AA2B72586A5C}.Debug|ARM.ActiveCfg = Debug|Any CPU + {8341DE8C-5BC7-461F-B42D-AA2B72586A5C}.Debug|ARM.Build.0 = Debug|Any CPU + {8341DE8C-5BC7-461F-B42D-AA2B72586A5C}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {8341DE8C-5BC7-461F-B42D-AA2B72586A5C}.Debug|ARM64.Build.0 = Debug|Any CPU + {8341DE8C-5BC7-461F-B42D-AA2B72586A5C}.Debug|x64.ActiveCfg = Debug|Any CPU + {8341DE8C-5BC7-461F-B42D-AA2B72586A5C}.Debug|x64.Build.0 = Debug|Any CPU + {8341DE8C-5BC7-461F-B42D-AA2B72586A5C}.Debug|x86.ActiveCfg = Debug|Any CPU + {8341DE8C-5BC7-461F-B42D-AA2B72586A5C}.Debug|x86.Build.0 = Debug|Any CPU + {8341DE8C-5BC7-461F-B42D-AA2B72586A5C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8341DE8C-5BC7-461F-B42D-AA2B72586A5C}.Release|Any CPU.Build.0 = Release|Any CPU + {8341DE8C-5BC7-461F-B42D-AA2B72586A5C}.Release|ARM.ActiveCfg = Release|Any CPU + {8341DE8C-5BC7-461F-B42D-AA2B72586A5C}.Release|ARM.Build.0 = Release|Any CPU + {8341DE8C-5BC7-461F-B42D-AA2B72586A5C}.Release|ARM64.ActiveCfg = Release|Any CPU + {8341DE8C-5BC7-461F-B42D-AA2B72586A5C}.Release|ARM64.Build.0 = Release|Any CPU + {8341DE8C-5BC7-461F-B42D-AA2B72586A5C}.Release|x64.ActiveCfg = Release|Any CPU + {8341DE8C-5BC7-461F-B42D-AA2B72586A5C}.Release|x64.Build.0 = Release|Any CPU + {8341DE8C-5BC7-461F-B42D-AA2B72586A5C}.Release|x86.ActiveCfg = Release|x86 + {8341DE8C-5BC7-461F-B42D-AA2B72586A5C}.Release|x86.Build.0 = Release|x86 + {134FBC80-2E23-451B-A6B3-72B0AA2234F9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {134FBC80-2E23-451B-A6B3-72B0AA2234F9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {134FBC80-2E23-451B-A6B3-72B0AA2234F9}.Debug|ARM.ActiveCfg = Debug|Any CPU + {134FBC80-2E23-451B-A6B3-72B0AA2234F9}.Debug|ARM.Build.0 = Debug|Any CPU + {134FBC80-2E23-451B-A6B3-72B0AA2234F9}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {134FBC80-2E23-451B-A6B3-72B0AA2234F9}.Debug|ARM64.Build.0 = Debug|Any CPU + {134FBC80-2E23-451B-A6B3-72B0AA2234F9}.Debug|x64.ActiveCfg = Debug|Any CPU + {134FBC80-2E23-451B-A6B3-72B0AA2234F9}.Debug|x64.Build.0 = Debug|Any CPU + {134FBC80-2E23-451B-A6B3-72B0AA2234F9}.Debug|x86.ActiveCfg = Debug|Any CPU + {134FBC80-2E23-451B-A6B3-72B0AA2234F9}.Debug|x86.Build.0 = Debug|Any CPU + {134FBC80-2E23-451B-A6B3-72B0AA2234F9}.Release|Any CPU.ActiveCfg = Release|Any CPU + {134FBC80-2E23-451B-A6B3-72B0AA2234F9}.Release|Any CPU.Build.0 = Release|Any CPU + {134FBC80-2E23-451B-A6B3-72B0AA2234F9}.Release|ARM.ActiveCfg = Release|Any CPU + {134FBC80-2E23-451B-A6B3-72B0AA2234F9}.Release|ARM.Build.0 = Release|Any CPU + {134FBC80-2E23-451B-A6B3-72B0AA2234F9}.Release|ARM64.ActiveCfg = Release|Any CPU + {134FBC80-2E23-451B-A6B3-72B0AA2234F9}.Release|ARM64.Build.0 = Release|Any CPU + {134FBC80-2E23-451B-A6B3-72B0AA2234F9}.Release|x64.ActiveCfg = Release|Any CPU + {134FBC80-2E23-451B-A6B3-72B0AA2234F9}.Release|x64.Build.0 = Release|Any CPU + {134FBC80-2E23-451B-A6B3-72B0AA2234F9}.Release|x86.ActiveCfg = Release|x86 + {134FBC80-2E23-451B-A6B3-72B0AA2234F9}.Release|x86.Build.0 = Release|x86 + {85B2B7BB-BF95-42DF-8CBF-348AEF63BD1F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {85B2B7BB-BF95-42DF-8CBF-348AEF63BD1F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {85B2B7BB-BF95-42DF-8CBF-348AEF63BD1F}.Debug|ARM.ActiveCfg = Debug|Any CPU + {85B2B7BB-BF95-42DF-8CBF-348AEF63BD1F}.Debug|ARM.Build.0 = Debug|Any CPU + {85B2B7BB-BF95-42DF-8CBF-348AEF63BD1F}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {85B2B7BB-BF95-42DF-8CBF-348AEF63BD1F}.Debug|ARM64.Build.0 = Debug|Any CPU + {85B2B7BB-BF95-42DF-8CBF-348AEF63BD1F}.Debug|x64.ActiveCfg = Debug|Any CPU + {85B2B7BB-BF95-42DF-8CBF-348AEF63BD1F}.Debug|x64.Build.0 = Debug|Any CPU + {85B2B7BB-BF95-42DF-8CBF-348AEF63BD1F}.Debug|x86.ActiveCfg = Debug|Any CPU + {85B2B7BB-BF95-42DF-8CBF-348AEF63BD1F}.Debug|x86.Build.0 = Debug|Any CPU + {85B2B7BB-BF95-42DF-8CBF-348AEF63BD1F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {85B2B7BB-BF95-42DF-8CBF-348AEF63BD1F}.Release|Any CPU.Build.0 = Release|Any CPU + {85B2B7BB-BF95-42DF-8CBF-348AEF63BD1F}.Release|ARM.ActiveCfg = Release|Any CPU + {85B2B7BB-BF95-42DF-8CBF-348AEF63BD1F}.Release|ARM.Build.0 = Release|Any CPU + {85B2B7BB-BF95-42DF-8CBF-348AEF63BD1F}.Release|ARM64.ActiveCfg = Release|Any CPU + {85B2B7BB-BF95-42DF-8CBF-348AEF63BD1F}.Release|ARM64.Build.0 = Release|Any CPU + {85B2B7BB-BF95-42DF-8CBF-348AEF63BD1F}.Release|x64.ActiveCfg = Release|Any CPU + {85B2B7BB-BF95-42DF-8CBF-348AEF63BD1F}.Release|x64.Build.0 = Release|Any CPU + {85B2B7BB-BF95-42DF-8CBF-348AEF63BD1F}.Release|x86.ActiveCfg = Release|x86 + {85B2B7BB-BF95-42DF-8CBF-348AEF63BD1F}.Release|x86.Build.0 = Release|x86 + {D3A1C1C8-6119-4827-AC24-1FF49FACFD4D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D3A1C1C8-6119-4827-AC24-1FF49FACFD4D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D3A1C1C8-6119-4827-AC24-1FF49FACFD4D}.Debug|ARM.ActiveCfg = Debug|Any CPU + {D3A1C1C8-6119-4827-AC24-1FF49FACFD4D}.Debug|ARM.Build.0 = Debug|Any CPU + {D3A1C1C8-6119-4827-AC24-1FF49FACFD4D}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {D3A1C1C8-6119-4827-AC24-1FF49FACFD4D}.Debug|ARM64.Build.0 = Debug|Any CPU + {D3A1C1C8-6119-4827-AC24-1FF49FACFD4D}.Debug|x64.ActiveCfg = Debug|Any CPU + {D3A1C1C8-6119-4827-AC24-1FF49FACFD4D}.Debug|x64.Build.0 = Debug|Any CPU + {D3A1C1C8-6119-4827-AC24-1FF49FACFD4D}.Debug|x86.ActiveCfg = Debug|Any CPU + {D3A1C1C8-6119-4827-AC24-1FF49FACFD4D}.Debug|x86.Build.0 = Debug|Any CPU + {D3A1C1C8-6119-4827-AC24-1FF49FACFD4D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D3A1C1C8-6119-4827-AC24-1FF49FACFD4D}.Release|Any CPU.Build.0 = Release|Any CPU + {D3A1C1C8-6119-4827-AC24-1FF49FACFD4D}.Release|ARM.ActiveCfg = Release|Any CPU + {D3A1C1C8-6119-4827-AC24-1FF49FACFD4D}.Release|ARM.Build.0 = Release|Any CPU + {D3A1C1C8-6119-4827-AC24-1FF49FACFD4D}.Release|ARM64.ActiveCfg = Release|Any CPU + {D3A1C1C8-6119-4827-AC24-1FF49FACFD4D}.Release|ARM64.Build.0 = Release|Any CPU + {D3A1C1C8-6119-4827-AC24-1FF49FACFD4D}.Release|x64.ActiveCfg = Release|Any CPU + {D3A1C1C8-6119-4827-AC24-1FF49FACFD4D}.Release|x64.Build.0 = Release|Any CPU + {D3A1C1C8-6119-4827-AC24-1FF49FACFD4D}.Release|x86.ActiveCfg = Release|x86 + {D3A1C1C8-6119-4827-AC24-1FF49FACFD4D}.Release|x86.Build.0 = Release|x86 + {6AC9C0BE-6BCE-493F-BD80-6F2247CB669D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6AC9C0BE-6BCE-493F-BD80-6F2247CB669D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6AC9C0BE-6BCE-493F-BD80-6F2247CB669D}.Debug|ARM.ActiveCfg = Debug|Any CPU + {6AC9C0BE-6BCE-493F-BD80-6F2247CB669D}.Debug|ARM.Build.0 = Debug|Any CPU + {6AC9C0BE-6BCE-493F-BD80-6F2247CB669D}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {6AC9C0BE-6BCE-493F-BD80-6F2247CB669D}.Debug|ARM64.Build.0 = Debug|Any CPU + {6AC9C0BE-6BCE-493F-BD80-6F2247CB669D}.Debug|x64.ActiveCfg = Debug|Any CPU + {6AC9C0BE-6BCE-493F-BD80-6F2247CB669D}.Debug|x64.Build.0 = Debug|Any CPU + {6AC9C0BE-6BCE-493F-BD80-6F2247CB669D}.Debug|x86.ActiveCfg = Debug|Any CPU + {6AC9C0BE-6BCE-493F-BD80-6F2247CB669D}.Debug|x86.Build.0 = Debug|Any CPU + {6AC9C0BE-6BCE-493F-BD80-6F2247CB669D}.Release|Any CPU.ActiveCfg = Debug|Any CPU + {6AC9C0BE-6BCE-493F-BD80-6F2247CB669D}.Release|Any CPU.Build.0 = Debug|Any CPU + {6AC9C0BE-6BCE-493F-BD80-6F2247CB669D}.Release|ARM.ActiveCfg = Release|Any CPU + {6AC9C0BE-6BCE-493F-BD80-6F2247CB669D}.Release|ARM.Build.0 = Release|Any CPU + {6AC9C0BE-6BCE-493F-BD80-6F2247CB669D}.Release|ARM64.ActiveCfg = Release|Any CPU + {6AC9C0BE-6BCE-493F-BD80-6F2247CB669D}.Release|ARM64.Build.0 = Release|Any CPU + {6AC9C0BE-6BCE-493F-BD80-6F2247CB669D}.Release|x64.ActiveCfg = Release|Any CPU + {6AC9C0BE-6BCE-493F-BD80-6F2247CB669D}.Release|x64.Build.0 = Release|Any CPU + {6AC9C0BE-6BCE-493F-BD80-6F2247CB669D}.Release|x86.ActiveCfg = Release|x86 + {6AC9C0BE-6BCE-493F-BD80-6F2247CB669D}.Release|x86.Build.0 = Release|x86 + {C9B82A4F-8306-41A9-91DA-1BA5080F1DB0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C9B82A4F-8306-41A9-91DA-1BA5080F1DB0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C9B82A4F-8306-41A9-91DA-1BA5080F1DB0}.Debug|ARM.ActiveCfg = Debug|Any CPU + {C9B82A4F-8306-41A9-91DA-1BA5080F1DB0}.Debug|ARM.Build.0 = Debug|Any CPU + {C9B82A4F-8306-41A9-91DA-1BA5080F1DB0}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {C9B82A4F-8306-41A9-91DA-1BA5080F1DB0}.Debug|ARM64.Build.0 = Debug|Any CPU + {C9B82A4F-8306-41A9-91DA-1BA5080F1DB0}.Debug|x64.ActiveCfg = Debug|Any CPU + {C9B82A4F-8306-41A9-91DA-1BA5080F1DB0}.Debug|x64.Build.0 = Debug|Any CPU + {C9B82A4F-8306-41A9-91DA-1BA5080F1DB0}.Debug|x86.ActiveCfg = Debug|Any CPU + {C9B82A4F-8306-41A9-91DA-1BA5080F1DB0}.Debug|x86.Build.0 = Debug|Any CPU + {C9B82A4F-8306-41A9-91DA-1BA5080F1DB0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C9B82A4F-8306-41A9-91DA-1BA5080F1DB0}.Release|Any CPU.Build.0 = Release|Any CPU + {C9B82A4F-8306-41A9-91DA-1BA5080F1DB0}.Release|ARM.ActiveCfg = Release|Any CPU + {C9B82A4F-8306-41A9-91DA-1BA5080F1DB0}.Release|ARM.Build.0 = Release|Any CPU + {C9B82A4F-8306-41A9-91DA-1BA5080F1DB0}.Release|ARM64.ActiveCfg = Release|Any CPU + {C9B82A4F-8306-41A9-91DA-1BA5080F1DB0}.Release|ARM64.Build.0 = Release|Any CPU + {C9B82A4F-8306-41A9-91DA-1BA5080F1DB0}.Release|x64.ActiveCfg = Release|Any CPU + {C9B82A4F-8306-41A9-91DA-1BA5080F1DB0}.Release|x64.Build.0 = Release|Any CPU + {C9B82A4F-8306-41A9-91DA-1BA5080F1DB0}.Release|x86.ActiveCfg = Release|x86 + {C9B82A4F-8306-41A9-91DA-1BA5080F1DB0}.Release|x86.Build.0 = Release|x86 + {44D46916-891F-435F-B914-AE8AC80613FD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {44D46916-891F-435F-B914-AE8AC80613FD}.Debug|Any CPU.Build.0 = Debug|Any CPU + {44D46916-891F-435F-B914-AE8AC80613FD}.Debug|ARM.ActiveCfg = Debug|Any CPU + {44D46916-891F-435F-B914-AE8AC80613FD}.Debug|ARM.Build.0 = Debug|Any CPU + {44D46916-891F-435F-B914-AE8AC80613FD}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {44D46916-891F-435F-B914-AE8AC80613FD}.Debug|ARM64.Build.0 = Debug|Any CPU + {44D46916-891F-435F-B914-AE8AC80613FD}.Debug|x64.ActiveCfg = Debug|Any CPU + {44D46916-891F-435F-B914-AE8AC80613FD}.Debug|x64.Build.0 = Debug|Any CPU + {44D46916-891F-435F-B914-AE8AC80613FD}.Debug|x86.ActiveCfg = Debug|Any CPU + {44D46916-891F-435F-B914-AE8AC80613FD}.Debug|x86.Build.0 = Debug|Any CPU + {44D46916-891F-435F-B914-AE8AC80613FD}.Release|Any CPU.ActiveCfg = Release|Any CPU + {44D46916-891F-435F-B914-AE8AC80613FD}.Release|Any CPU.Build.0 = Release|Any CPU + {44D46916-891F-435F-B914-AE8AC80613FD}.Release|ARM.ActiveCfg = Release|Any CPU + {44D46916-891F-435F-B914-AE8AC80613FD}.Release|ARM.Build.0 = Release|Any CPU + {44D46916-891F-435F-B914-AE8AC80613FD}.Release|ARM64.ActiveCfg = Release|Any CPU + {44D46916-891F-435F-B914-AE8AC80613FD}.Release|ARM64.Build.0 = Release|Any CPU + {44D46916-891F-435F-B914-AE8AC80613FD}.Release|x64.ActiveCfg = Release|Any CPU + {44D46916-891F-435F-B914-AE8AC80613FD}.Release|x64.Build.0 = Release|Any CPU + {44D46916-891F-435F-B914-AE8AC80613FD}.Release|x86.ActiveCfg = Release|x86 + {44D46916-891F-435F-B914-AE8AC80613FD}.Release|x86.Build.0 = Release|x86 + {08819B49-02B8-4F93-A143-F9B0461CEA64}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {08819B49-02B8-4F93-A143-F9B0461CEA64}.Debug|Any CPU.Build.0 = Debug|Any CPU + {08819B49-02B8-4F93-A143-F9B0461CEA64}.Debug|ARM.ActiveCfg = Debug|Any CPU + {08819B49-02B8-4F93-A143-F9B0461CEA64}.Debug|ARM.Build.0 = Debug|Any CPU + {08819B49-02B8-4F93-A143-F9B0461CEA64}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {08819B49-02B8-4F93-A143-F9B0461CEA64}.Debug|ARM64.Build.0 = Debug|Any CPU + {08819B49-02B8-4F93-A143-F9B0461CEA64}.Debug|x64.ActiveCfg = Debug|Any CPU + {08819B49-02B8-4F93-A143-F9B0461CEA64}.Debug|x64.Build.0 = Debug|Any CPU + {08819B49-02B8-4F93-A143-F9B0461CEA64}.Debug|x86.ActiveCfg = Debug|Any CPU + {08819B49-02B8-4F93-A143-F9B0461CEA64}.Debug|x86.Build.0 = Debug|Any CPU + {08819B49-02B8-4F93-A143-F9B0461CEA64}.Release|Any CPU.ActiveCfg = Release|Any CPU + {08819B49-02B8-4F93-A143-F9B0461CEA64}.Release|Any CPU.Build.0 = Release|Any CPU + {08819B49-02B8-4F93-A143-F9B0461CEA64}.Release|ARM.ActiveCfg = Release|Any CPU + {08819B49-02B8-4F93-A143-F9B0461CEA64}.Release|ARM.Build.0 = Release|Any CPU + {08819B49-02B8-4F93-A143-F9B0461CEA64}.Release|ARM64.ActiveCfg = Release|Any CPU + {08819B49-02B8-4F93-A143-F9B0461CEA64}.Release|ARM64.Build.0 = Release|Any CPU + {08819B49-02B8-4F93-A143-F9B0461CEA64}.Release|x64.ActiveCfg = Release|Any CPU + {08819B49-02B8-4F93-A143-F9B0461CEA64}.Release|x64.Build.0 = Release|Any CPU + {08819B49-02B8-4F93-A143-F9B0461CEA64}.Release|x86.ActiveCfg = Release|x86 + {08819B49-02B8-4F93-A143-F9B0461CEA64}.Release|x86.Build.0 = Release|x86 + {B1427E8D-9175-42BE-8B90-A5A9CB4AAD51}.Debug|Any CPU.ActiveCfg = Debug|x86 + {B1427E8D-9175-42BE-8B90-A5A9CB4AAD51}.Debug|ARM.ActiveCfg = Debug|ARM + {B1427E8D-9175-42BE-8B90-A5A9CB4AAD51}.Debug|ARM.Build.0 = Debug|ARM + {B1427E8D-9175-42BE-8B90-A5A9CB4AAD51}.Debug|ARM.Deploy.0 = Debug|ARM + {B1427E8D-9175-42BE-8B90-A5A9CB4AAD51}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {B1427E8D-9175-42BE-8B90-A5A9CB4AAD51}.Debug|ARM64.Build.0 = Debug|ARM64 + {B1427E8D-9175-42BE-8B90-A5A9CB4AAD51}.Debug|ARM64.Deploy.0 = Debug|ARM64 + {B1427E8D-9175-42BE-8B90-A5A9CB4AAD51}.Debug|x64.ActiveCfg = Debug|x64 + {B1427E8D-9175-42BE-8B90-A5A9CB4AAD51}.Debug|x64.Build.0 = Debug|x64 + {B1427E8D-9175-42BE-8B90-A5A9CB4AAD51}.Debug|x64.Deploy.0 = Debug|x64 + {B1427E8D-9175-42BE-8B90-A5A9CB4AAD51}.Debug|x86.ActiveCfg = Debug|x86 + {B1427E8D-9175-42BE-8B90-A5A9CB4AAD51}.Debug|x86.Build.0 = Debug|x86 + {B1427E8D-9175-42BE-8B90-A5A9CB4AAD51}.Debug|x86.Deploy.0 = Debug|x86 + {B1427E8D-9175-42BE-8B90-A5A9CB4AAD51}.Release|Any CPU.ActiveCfg = Release|x86 + {B1427E8D-9175-42BE-8B90-A5A9CB4AAD51}.Release|ARM.ActiveCfg = Release|ARM + {B1427E8D-9175-42BE-8B90-A5A9CB4AAD51}.Release|ARM.Build.0 = Release|ARM + {B1427E8D-9175-42BE-8B90-A5A9CB4AAD51}.Release|ARM.Deploy.0 = Release|ARM + {B1427E8D-9175-42BE-8B90-A5A9CB4AAD51}.Release|ARM64.ActiveCfg = Release|ARM64 + {B1427E8D-9175-42BE-8B90-A5A9CB4AAD51}.Release|ARM64.Build.0 = Release|ARM64 + {B1427E8D-9175-42BE-8B90-A5A9CB4AAD51}.Release|ARM64.Deploy.0 = Release|ARM64 + {B1427E8D-9175-42BE-8B90-A5A9CB4AAD51}.Release|x64.ActiveCfg = Release|x64 + {B1427E8D-9175-42BE-8B90-A5A9CB4AAD51}.Release|x64.Build.0 = Release|x64 + {B1427E8D-9175-42BE-8B90-A5A9CB4AAD51}.Release|x64.Deploy.0 = Release|x64 + {B1427E8D-9175-42BE-8B90-A5A9CB4AAD51}.Release|x86.ActiveCfg = Release|x86 + {B1427E8D-9175-42BE-8B90-A5A9CB4AAD51}.Release|x86.Build.0 = Release|x86 + {B1427E8D-9175-42BE-8B90-A5A9CB4AAD51}.Release|x86.Deploy.0 = Release|x86 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {6A6764EF-3A8F-46BF-8CC8-C07DE889160A} + EndGlobalSection + GlobalSection(TestCaseManagementSettings) = postSolution + CategoryFile = Esent.vsmdi + EndGlobalSection +EndGlobal diff --git a/WelsonJS.Toolkit/EsentInterop/Esent.vsmdi b/WelsonJS.Toolkit/EsentInterop/Esent.vsmdi new file mode 100644 index 0000000..d539232 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/Esent.vsmdi @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/Esent/..svnbridge/ManagedEseLogo128x128.png b/WelsonJS.Toolkit/EsentInterop/Esent/..svnbridge/ManagedEseLogo128x128.png new file mode 100644 index 0000000..81efb3c --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/Esent/..svnbridge/ManagedEseLogo128x128.png @@ -0,0 +1 @@ +svn:mime-typeapplication/octet-stream \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/Esent/AssemblyInfo.cs b/WelsonJS.Toolkit/EsentInterop/Esent/AssemblyInfo.cs new file mode 100644 index 0000000..9382e10 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/Esent/AssemblyInfo.cs @@ -0,0 +1,82 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +using System; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("EsentInterop")] +[assembly: AssemblyDescription("Managed interop code for esent.dll")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("Microsoft")] +[assembly: AssemblyProduct("EsentInterop")] +[assembly: AssemblyCopyright("Copyright (c) Microsoft")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +[assembly: CLSCompliant(true)] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +// +// Version history: +// 1.6.0.0 +// 1.7.0.0 +// 1.8.0.0 Support new Windows user interface (As of Win8 Beta build). +// 1.8.1.0 2012.11.18. Some minor updates, including some perf updates. +// 1.8.2.0 2012.11.19. Signed. +// 1.8.3.0 2013.03.25. Signed and Strong Named. Renamed 'Metro' to 'Wsa' (Windows Store App) +// 1.8.4.0 2013.12.23. Updated for Windows 8.1. +// 1.9.0.0 2013.12.23. Go back to targetting framework 4.0. +// 1.9.1.0 2014.07.18. PersistentDictionary gets binary blobs; added Isam layer. +// 1.9.2.0 2014.09.11. Isam is placed in the Microsoft.Database namespace. +// 1.9.3.0 2015.08.11. Dependence added from Collections to Isam dll for configsets. +// 1.9.3.2 2015.09.02. Some bug fixes; go back to Framework 4.0 +// 1.9.3.3 2016.03.01. Some bug and perf fixes. +// 1.9.4 2016.06.28. Some bug fixes. +// 1.9.4.1 2017.08.30. Adding JetGetIndexInfo that returns JET_INDEXCREATE. +[assembly: AssemblyVersion("1.9.4.1")] +[assembly: AssemblyFileVersion("1.9.4.1")] + +#if STRONG_NAMED +[assembly: InternalsVisibleTo("EsentInteropWsaTests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100B5FC90E7027F67871E773A8FDE8938C81DD402BA65B9201D60593E96C492651E889CC13F1415EBB53FAC1131AE0BD333C5EE6021672D9718EA31A8AEBD0DA0072F25D87DBA6FC90FFD598ED4DA35E44C398C454307E8E33B8426143DAEC9F596836F97C8F74750E5975C64E2189F45DEF46B2A2B1247ADC3652BF5C308055DA9")] +[assembly: InternalsVisibleTo("Esent.Isam, PublicKey=0024000004800000940000000602000000240000525341310004000001000100B5FC90E7027F67871E773A8FDE8938C81DD402BA65B9201D60593E96C492651E889CC13F1415EBB53FAC1131AE0BD333C5EE6021672D9718EA31A8AEBD0DA0072F25D87DBA6FC90FFD598ED4DA35E44C398C454307E8E33B8426143DAEC9F596836F97C8F74750E5975C64E2189F45DEF46B2A2B1247ADC3652BF5C308055DA9")] +[assembly: InternalsVisibleTo("InteropApiTests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100B5FC90E7027F67871E773A8FDE8938C81DD402BA65B9201D60593E96C492651E889CC13F1415EBB53FAC1131AE0BD333C5EE6021672D9718EA31A8AEBD0DA0072F25D87DBA6FC90FFD598ED4DA35E44C398C454307E8E33B8426143DAEC9F596836F97C8F74750E5975C64E2189F45DEF46B2A2B1247ADC3652BF5C308055DA9")] +[assembly: InternalsVisibleTo("IsamUnitTests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100B5FC90E7027F67871E773A8FDE8938C81DD402BA65B9201D60593E96C492651E889CC13F1415EBB53FAC1131AE0BD333C5EE6021672D9718EA31A8AEBD0DA0072F25D87DBA6FC90FFD598ED4DA35E44C398C454307E8E33B8426143DAEC9F596836F97C8F74750E5975C64E2189F45DEF46B2A2B1247ADC3652BF5C308055DA9")] +[assembly: InternalsVisibleTo("Pixie, PublicKey=0024000004800000940000000602000000240000525341310004000001000100B5FC90E7027F67871E773A8FDE8938C81DD402BA65B9201D60593E96C492651E889CC13F1415EBB53FAC1131AE0BD333C5EE6021672D9718EA31A8AEBD0DA0072F25D87DBA6FC90FFD598ED4DA35E44C398C454307E8E33B8426143DAEC9F596836F97C8F74750E5975C64E2189F45DEF46B2A2B1247ADC3652BF5C308055DA9")] +[assembly: InternalsVisibleTo("PixieTests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100B5FC90E7027F67871E773A8FDE8938C81DD402BA65B9201D60593E96C492651E889CC13F1415EBB53FAC1131AE0BD333C5EE6021672D9718EA31A8AEBD0DA0072F25D87DBA6FC90FFD598ED4DA35E44C398C454307E8E33B8426143DAEC9F596836F97C8F74750E5975C64E2189F45DEF46B2A2B1247ADC3652BF5C308055DA9")] + +// This assembly is generated by Rhino.Mocks +[assembly: InternalsVisibleTo("DynamicProxyGenAssembly2,PublicKey=0024000004800000940000000602000000240000525341310004000001000100c547cac37abd99c8db225ef2f6c8a3602f3b3606cc9891605d02baa56104f4cfc0734aa39b93bf7852f7d9266654753cc297e7d2edfe0bac1cdcf9f717241550e0a7b191195b7667bb4f64bcb8e2121380fd1d9d46ad2d92d2d15605093924cceaf74c4861eff62abf69b9291ed0a340e113be11e6a7d3113e92484cf7045cc7")] +#else +[assembly: InternalsVisibleTo("InteropApiTests")] +[assembly: InternalsVisibleTo("IsamUnitTests")] +[assembly: InternalsVisibleTo("EsentInteropTestsImmersive")] +[assembly: InternalsVisibleTo("EsentInteropWsaTests")] +[assembly: InternalsVisibleTo("Esent.Isam")] +[assembly: InternalsVisibleTo("Pixie")] +[assembly: InternalsVisibleTo("PixieTests")] + +// This assembly is generated by Rhino.Mocks +[assembly: InternalsVisibleTo("DynamicProxyGenAssembly2")] +#endif diff --git a/WelsonJS.Toolkit/EsentInterop/Esent/CallbackDataConverter.cs b/WelsonJS.Toolkit/EsentInterop/Esent/CallbackDataConverter.cs new file mode 100644 index 0000000..2b3e197 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/Esent/CallbackDataConverter.cs @@ -0,0 +1,37 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Runtime.InteropServices; + + /// + /// Methods to convert data objects used in callbacks. + /// + internal static class CallbackDataConverter + { + /// + /// Get the managed data object from the unmanaged data. + /// + /// The native data. + /// The SNP (used to determine the type of object). + /// The SNT (used to determine the type of object). + /// The managed data object. + public static object GetManagedData(IntPtr nativeData, JET_SNP snp, JET_SNT snt) + { + if (IntPtr.Zero != nativeData && JET_SNT.Progress == snt) + { + NATIVE_SNPROG native = (NATIVE_SNPROG)Marshal.PtrToStructure(nativeData, typeof(NATIVE_SNPROG)); + JET_SNPROG managed = new JET_SNPROG(); + managed.SetFromNative(native); + return managed; + } + + return null; + } + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/Esent/EsentImplementationStubs.cs b/WelsonJS.Toolkit/EsentInterop/Esent/EsentImplementationStubs.cs new file mode 100644 index 0000000..1b7d10d --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/Esent/EsentImplementationStubs.cs @@ -0,0 +1,263 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +// +// Class stubs to allow compiling on CoreClr. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop.Implementation +{ + using System; + using System.Diagnostics; + using System.Diagnostics.CodeAnalysis; + using System.Text; + + /// + /// A fake class to allow compilation on platforms that lack this functionality. + /// + [SuppressMessage("StyleCop.CSharp.MaintainabilityRules", "SA1402:FileMayOnlyContainASingleClass", + Justification = "Reviewed. Suppression is OK here because it's a collection of trivial classes.")] + public class Trace + { + /// + /// A fake function to allow compilation on platforms that lack this functionality. + /// + /// + /// The condition. + /// + /// + /// The message. + /// + [ConditionalAttribute("TRACE")] + public static void WriteLineIf(bool condition, string message) + { + } + + /// + /// A fake function to allow compilation on platforms that lack this functionality. + /// + /// + /// The condition. + /// + /// + /// The message. + /// + [ConditionalAttribute("TRACE")] + public static void WriteLineIf(bool condition, object message) + { + } + + /// + /// Prints out the object's contents. + /// + /// A string represenetation or the object. + public override string ToString() + { + return base.ToString(); + } + } + + /// + /// A fake class to allow compilation on platforms that lack this class. + /// + [SuppressMessage("StyleCop.CSharp.MaintainabilityRules", "SA1402:FileMayOnlyContainASingleClass", + Justification = "Reviewed. Suppression is OK here because it's a collection of trivial classes.")] + internal static class RuntimeHelpers + { + /// + /// A fake function to allow compilation on platforms that lack this functionality. + /// + public static void PrepareConstrainedRegions() + { + } + + /// + /// A fake function to allow compilation on platforms that lack this functionality. + /// + /// + /// The method. + /// + public static void PrepareMethod(RuntimeMethodHandle method) + { + } + } + + /// + /// Ascii encoding is not available on Core Clr. But UTF-8 is. + /// This class will reject any character that results in an + /// extended value. + /// + [SuppressMessage("StyleCop.CSharp.MaintainabilityRules", "SA1402:FileMayOnlyContainASingleClass", + Justification = "Reviewed. Suppression is OK here because it's a collection of trivial classes.")] + internal class SlowAsciiEncoding : UTF8Encoding + { + /// + /// The standard encoding object. + /// + private static SlowAsciiEncoding slowAsciiEncoding = new SlowAsciiEncoding(); + + /// + /// Gets an Encoding object. + /// + public static Encoding Encoding + { + get + { + return slowAsciiEncoding; + } + } + +#if !MANAGEDESENT_ON_WSA + /// + /// Converts a string to the byte representation. + /// + /// + /// The chars. + /// + /// + /// The char count. + /// + /// + /// The bytes. + /// + /// + /// The byte count. + /// + /// + /// A count of bytes stored. + /// + public override unsafe int GetBytes(char* chars, int charCount, byte* bytes, int byteCount) + { + IntPtr toFree; + char* charsToTranslate = this.SanitizeString(chars, charCount, out toFree); + + int toReturn = base.GetBytes(charsToTranslate, charCount, bytes, byteCount); + LibraryHelpers.MarshalFreeHGlobal(toFree); + + return toReturn; + } +#endif + + /// + /// Converts a string to the byte representation. + /// + /// + /// The input string. + /// + /// + /// The byte representation of the string. + /// + public override byte[] GetBytes(string inputString) + { + string stringToTranslate = this.SanitizeString(inputString); + return base.GetBytes(stringToTranslate); + } + + /// + /// Converts a string to the byte representation. + /// + /// + /// The input string. + /// + /// + /// The char index. + /// + /// + /// The char count. + /// + /// + /// The bytes. + /// + /// + /// The byte index. + /// + /// + /// The byte representation of the string. + /// + public override int GetBytes(string inputString, int charIndex, int charCount, byte[] bytes, int byteIndex) + { + string stringToTranslate = this.SanitizeString(inputString); + + return base.GetBytes(stringToTranslate, charIndex, charCount, bytes, byteIndex); + } + + /// + /// Scans the string looking for unmappable characters in the ASCII set, and replaces + /// them with '?'. + /// + /// A unicode string with unknown characters. + /// A string that has all legal ASCII characters. + private string SanitizeString(string inputString) + { + bool needToDuplicate = false; + string returnString = inputString; + + foreach (char ch in inputString) + { + if (ch > 127) + { + needToDuplicate = true; + break; + } + } + + if (needToDuplicate) + { + StringBuilder sb = new StringBuilder(inputString.Length); + foreach (char ch in inputString) + { + sb.Append(ch > 127 ? '?' : ch); + } + + returnString = sb.ToString(); + } + + return returnString; + } + +#if !MANAGEDESENT_ON_WSA + /// + /// Scans the string looking for unmappable characters in the ASCII set, and replaces + /// them with '?'. + /// + /// A unicode string with unknown characters. + /// The length of the string to sanitize. + /// On output, a value that needs to be freed. Only used + /// if there are any untranslaable characters. + /// A string that has all legal ASCII characters. + private unsafe char* SanitizeString(char* inputString, int charCount, out IntPtr allocedMemory) + { + allocedMemory = IntPtr.Zero; + + bool needToDuplicate = false; + char* returnString = inputString; + + for (int i = 0; i < charCount; ++i) + { + if (inputString[i] > 127) + { + needToDuplicate = true; + break; + } + } + + if (needToDuplicate) + { + allocedMemory = LibraryHelpers.MarshalAllocHGlobal(charCount); + returnString = (char*)allocedMemory; + + char* dest = returnString; + + for (int i = 0; i < charCount; ++i) + { + dest[i] = inputString[i] > 127 ? '?' : inputString[i]; + } + } + + return returnString; + } +#endif + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/Esent/EsentJetApi.cs b/WelsonJS.Toolkit/EsentInterop/Esent/EsentJetApi.cs new file mode 100644 index 0000000..4ff09d8 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/Esent/EsentJetApi.cs @@ -0,0 +1,157 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +// +// JetApi code that is specific to ESENT. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop.Implementation +{ + using System; + using System.Diagnostics; + using System.Globalization; + using System.Runtime.CompilerServices; + using System.Threading; + + /// + /// JetApi code that is specific to ESENT. + /// + internal sealed partial class JetApi + { + /// + /// Reports the exception to a central authority. + /// + /// An unhandled exception. + /// A string description of the scenario. + internal static void ReportUnhandledException( + Exception exception, + string description) + { + } + + /// + /// Calculates the capabilities of the current Esent version. + /// + private void DetermineCapabilities() + { + const int Server2003BuildNumber = 2700; + const int VistaBuildNumber = 6000; + const int Windows7BuildNumber = 7000; // includes beta as well as RTM (RTM is 7600) + const int Windows8BuildNumber = 8000; // includes beta as well as RTM (RTM is 9200) + const int Windows81BuildNumber = 9300; // includes beta as well as RTM (RTM is 9600) + const int Windows10BuildNumber = 9900; // includes beta as well as RTM (RTM is 10240) + + // Create new capabilities, set as all false. This will allow + // us to call into Esent. + this.Capabilities = new JetCapabilities { ColumnsKeyMost = 12 }; + + var version = this.versionOverride; + if (version == 0) + { + version = this.GetVersionFromEsent(); + } + + var buildNumber = (int)((version & 0xFFFFFF) >> 8); + + Trace.WriteLineIf( + TraceSwitch.TraceVerbose, + string.Format(CultureInfo.InvariantCulture, "Version = {0}, BuildNumber = {1}", version, buildNumber)); + + if (buildNumber >= Server2003BuildNumber) + { + Trace.WriteLineIf(TraceSwitch.TraceVerbose, "Supports Server 2003 features"); + this.Capabilities.SupportsServer2003Features = true; + } + + if (buildNumber >= VistaBuildNumber) + { + Trace.WriteLineIf(TraceSwitch.TraceVerbose, "Supports Vista features"); + this.Capabilities.SupportsVistaFeatures = true; + + Trace.WriteLineIf(TraceSwitch.TraceVerbose, "Supports Unicode paths"); + this.Capabilities.SupportsUnicodePaths = true; + + Trace.WriteLineIf(TraceSwitch.TraceVerbose, "Supports large keys"); + this.Capabilities.SupportsLargeKeys = true; + Trace.WriteLineIf(TraceSwitch.TraceVerbose, "Supports 16-column keys"); + this.Capabilities.ColumnsKeyMost = 16; + } + + if (buildNumber >= Windows7BuildNumber) + { + Trace.WriteLineIf(TraceSwitch.TraceVerbose, "Supports Windows 7 features"); + this.Capabilities.SupportsWindows7Features = true; + } + + if (buildNumber >= Windows8BuildNumber) + { + Trace.WriteLineIf(TraceSwitch.TraceVerbose, "Supports Windows 8 features"); + this.Capabilities.SupportsWindows8Features = true; + } + + if (buildNumber >= Windows81BuildNumber) + { + Trace.WriteLineIf(TraceSwitch.TraceVerbose, "Supports Windows 8.1 features"); + this.Capabilities.SupportsWindows81Features = true; + } + + if (buildNumber >= Windows10BuildNumber) + { + Trace.WriteLineIf(TraceSwitch.TraceVerbose, "Supports Windows 10 features"); + this.Capabilities.SupportsWindows10Features = true; + } + } + + /// + /// Create an instance and get the current version of Esent. + /// + /// The current version of Esent. + private uint GetVersionFromEsent() + { +#if MANAGEDESENT_ON_WSA + // JetGetVersion isn't available in new Windows user interface, so we'll pretend it's always Win8: + return 8250 << 8; +#else + // Create a unique name so that multiple threads can call this simultaneously. + // This can happen if there are multiple AppDomains. + string instanceName = string.Format(CultureInfo.InvariantCulture, "GettingEsentVersion{0}", LibraryHelpers.GetCurrentManagedThreadId()); + JET_INSTANCE instance = JET_INSTANCE.Nil; + RuntimeHelpers.PrepareConstrainedRegions(); + try + { + this.JetCreateInstance(out instance, instanceName); + this.JetSetSystemParameter(instance, JET_SESID.Nil, JET_param.Recovery, new IntPtr(0), "off"); + this.JetSetSystemParameter(instance, JET_SESID.Nil, JET_param.NoInformationEvent, new IntPtr(1), null); + this.JetSetSystemParameter(instance, JET_SESID.Nil, JET_param.MaxTemporaryTables, new IntPtr(0), null); + this.JetSetSystemParameter(instance, JET_SESID.Nil, JET_param.MaxCursors, new IntPtr(16), null); + this.JetSetSystemParameter(instance, JET_SESID.Nil, JET_param.MaxOpenTables, new IntPtr(16), null); + this.JetSetSystemParameter(instance, JET_SESID.Nil, JET_param.MaxVerPages, new IntPtr(4), null); + this.JetSetSystemParameter(instance, JET_SESID.Nil, JET_param.MaxSessions, new IntPtr(1), null); + this.JetInit(ref instance); + + JET_SESID sesid; + this.JetBeginSession(instance, out sesid, string.Empty, string.Empty); + try + { + uint version; + this.JetGetVersion(sesid, out version); + return version; + } + finally + { + this.JetEndSession(sesid, EndSessionGrbit.None); + } + } + finally + { + if (JET_INSTANCE.Nil != instance) + { + this.JetTerm(instance); + } + } +#endif + } + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/Esent/EsentNativeMethods.cs b/WelsonJS.Toolkit/EsentInterop/Esent/EsentNativeMethods.cs new file mode 100644 index 0000000..555b1d5 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/Esent/EsentNativeMethods.cs @@ -0,0 +1,22 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +// +// NativeMethods code that is specific to ESENT. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop.Implementation +{ + /// + /// Configuration for functions in esent.dll. + /// + internal static partial class NativeMethods + { + /// + /// The name of the DLL that the methods should be loaded from. + /// + private const string EsentDll = "esent.dll"; + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/Esent/EsentStubAttributes.cs b/WelsonJS.Toolkit/EsentInterop/Esent/EsentStubAttributes.cs new file mode 100644 index 0000000..611e639 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/Esent/EsentStubAttributes.cs @@ -0,0 +1,325 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +// +// Attribute stubs to allow compiling on CoreClr. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Diagnostics.CodeAnalysis; + +#if !MANAGEDESENT_ON_WSA +This file should only be compiled with MANAGEDESENT_ON_WSA +#endif + + /// + /// A fake enumeration to allow compilation on platforms that lack this enumeration. + /// + public enum SecurityAction + { + /// + /// A fake enumeration to allow compilation on platforms that lack this enumeration. + /// + LinkDemand + } + + /// + /// A fake attribute to allow compilation on platforms that lack this attribute. + /// + //// The real one inherits from System.Security.Permissions.CodeAccessSecurityAttribute. + [SerializableAttribute] + [ComVisibleAttribute(true)] + [AttributeUsageAttribute( + AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Constructor + | AttributeTargets.Method, AllowMultiple = true, Inherited = false)] + internal sealed class SecurityPermissionAttribute : Attribute + { + /// + /// Initializes a new instance of the class. + /// + /// + /// The action. + /// + public SecurityPermissionAttribute( + SecurityAction action) + { + } + + /// + /// Prints out the object's contents. + /// + /// A string represenetation or the object. + public override string ToString() + { + return base.ToString(); + } + } + + /// + /// A fake attribute to allow compilation on platforms that lack this attribute. + /// + [ComVisibleAttribute(true)] + [AttributeUsageAttribute(AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Interface, Inherited = false)] + [SuppressMessage("StyleCop.CSharp.MaintainabilityRules", "SA1402:FileMayOnlyContainASingleClass", + Justification = "Reviewed. Suppression is OK here because it's a collection of trivial classes.")] + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "These stub classes are compiled only on some platforms that do not contain the entire framework, e.g. new Windows user interface.")] + internal sealed class BestFitMappingAttribute : Attribute + { + /// + /// Initializes a new instance of the class. + /// + /// + /// The best fit mapping. + /// + public BestFitMappingAttribute( + bool bestFitMapping) + { + } + + /// + /// Gets or sets a value indicating whether ThrowOnUnmappableChar. + /// + public bool ThrowOnUnmappableChar + { + get; + set; + } + + /// + /// Prints out the object's contents. + /// + /// A string represenetation or the object. + public override string ToString() + { + return base.ToString(); + } + } + + /// + /// A fake attribute to allow compilation on platforms that lack this attribute. + /// + [ComVisibleAttribute(true)] + [AttributeUsageAttribute(AttributeTargets.Class | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = true, + Inherited = false)] + [SuppressMessage("StyleCop.CSharp.MaintainabilityRules", "SA1402:FileMayOnlyContainASingleClass", + Justification = "Reviewed. Suppression is OK here because it's a collection of trivial classes.")] + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "These stub classes are compiled only on some platforms that do not contain the entire framework, e.g. new Windows user interface.")] + internal sealed class SuppressUnmanagedCodeSecurityAttribute : Attribute + { + /// + /// Prints out the object's contents. + /// + /// A string represenetation or the object. + public override string ToString() + { + return base.ToString(); + } + } + + /// + /// A fake attribute to allow compilation on platforms that lack this attribute. + /// + [AttributeUsageAttribute(AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Enum | AttributeTargets.Method | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Interface | AttributeTargets.Delegate, Inherited = false)] + [ComVisibleAttribute(true)] + [SuppressMessage("StyleCop.CSharp.MaintainabilityRules", "SA1402:FileMayOnlyContainASingleClass", + Justification = "Reviewed. Suppression is OK here because it's a collection of trivial classes.")] + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "These stub classes are compiled only on some platforms that do not contain the entire framework, e.g. new Windows user interface.")] + internal sealed class ComVisibleAttribute : Attribute + { + /// + /// Initializes a new instance of the class. + /// + /// + /// The com visible. + /// + public ComVisibleAttribute(bool comVisible) + { + } + + /// + /// Prints out the object's contents. + /// + /// A string represenetation or the object. + public override string ToString() + { + return base.ToString(); + } + } + + /// + /// Indicates that a class can be serialized. This class cannot be inherited. + /// + /// 1 + [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Enum | AttributeTargets.Delegate, Inherited = false), ComVisible(true)] + [SuppressMessage("StyleCop.CSharp.MaintainabilityRules", "SA1402:FileMayOnlyContainASingleClass", + Justification = "Reviewed. Suppression is OK here because it's a collection of trivial classes.")] + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "These stub classes are compiled only on some platforms that do not contain the entire framework, e.g. new Windows user interface.")] + internal sealed class SerializableAttribute : Attribute + { + /// + /// Prints out the object's contents. + /// + /// A string represenetation or the object. + public override string ToString() + { + return base.ToString(); + } + } + + /// + /// Indicates that a field of a serializable class should not be serialized. This class cannot be inherited. + /// + /// 1 + [ComVisible(true), AttributeUsage(AttributeTargets.Field, Inherited = false)] + [SuppressMessage("StyleCop.CSharp.MaintainabilityRules", "SA1402:FileMayOnlyContainASingleClass", + Justification = "Reviewed. Suppression is OK here because it's a collection of trivial classes.")] + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "These stub classes are compiled only on some platforms that do not contain the entire framework, e.g. new Windows user interface.")] + internal sealed class NonSerializedAttribute : Attribute + { + /// + /// Prints out the object's contents. + /// + /// A string represenetation or the object. + public override string ToString() + { + return base.ToString(); + } + } +} + +namespace System.Runtime.ConstrainedExecution +{ +} + +namespace System.Security.Cryptography +{ +} + +namespace System.Security.Permissions +{ +} + +namespace Microsoft.Win32.SafeHandles +{ +} + +namespace System.Runtime.ConstrainedExecution +{ + using System; + using Microsoft.Isam.Esent.Interop; + + /// + /// The consistency model. A stub. + /// + internal enum Consistency + { + /// + /// Might corrupt the process. + /// + MayCorruptProcess, + + /// + /// Might corrupt the application domain. + /// + MayCorruptAppDomain, + + /// + /// Might corrupt the instance. + /// + MayCorruptInstance, + + /// + /// Will not corrupt the state. + /// + WillNotCorruptState, + } + + /// + /// The Crticial Execution Region description. A stub. + /// + internal enum Cer + { + /// + /// No options. + /// + None, + + /// + /// This might fail. + /// + MayFail, + + /// + /// A successful CER. + /// + Success, + } + + /// + /// The description of the reliability contract. A stub. + /// + internal sealed class ReliabilityContractAttribute : Attribute + { + /// + /// The consistency guarantee. A stub. + /// + private Consistency consistency; + + /// + /// The critical execution region. A stub. + /// + private Cer cer; + + /// + /// Initializes a new instance of the ReliabilityContractAttribute class. A stub. + /// + /// The guarantee of the consistency. + /// The critical execution region description. + public ReliabilityContractAttribute(Consistency consistencyGuarantee, Cer cer) + { + this.consistency = consistencyGuarantee; + this.cer = cer; + } + + /// + /// Gets the consistency guarantee. A stub. + /// + public Consistency ConsistencyGuarantee + { + get + { + return this.consistency; + } + } + + /// + /// Gets the critical execution region. A stub. + /// + public Cer Cer + { + get + { + return this.cer; + } + } + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/Esent/EsentStubs.cs b/WelsonJS.Toolkit/EsentInterop/Esent/EsentStubs.cs new file mode 100644 index 0000000..4afc746 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/Esent/EsentStubs.cs @@ -0,0 +1,273 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +// +// Class stubs to allow compiling on CoreClr. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Diagnostics; + using System.Diagnostics.CodeAnalysis; + + /// + /// Some useful functionality that was omitted from Core CLR classes. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "These stub classes are compiled only on some platforms that do not contain the entire framework, e.g. new Windows user interface.")] + public static class ExtensionsToCoreClr + { + /// Converts the value of this instance to the equivalent OLE Automation date. + /// A DateTime structure. + /// A double-precision floating-point number that contains an OLE Automation date equivalent to the value of this instance. + /// The value of this instance cannot be represented as an OLE Automation Date. + /// 2 + public static double ToOADate(this DateTime dateTime) + { + return LibraryHelpers.TicksToOADate(dateTime.Ticks); + } + } + + /// + /// JetApi code that is specific to ESENT. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "These stub classes are compiled only on some platforms that do not contain the entire framework, e.g. new Windows user interface.")] + public class SerializationInfo + { + /// + /// Prints out the object's contents. + /// + /// A string represenetation or the object. + public override string ToString() + { + return base.ToString(); + } + + /// + /// Deserializes an integer. + /// + /// The name of the field to retrieve. + /// An integer. + public int GetInt32(string propName) + { + return 0; + } + } + + /// + /// A fake class to allow compilation on platforms that lack this class. + /// + [SuppressMessage("StyleCop.CSharp.MaintainabilityRules", "SA1402:FileMayOnlyContainASingleClass", + Justification = "Reviewed. Suppression is OK here because it's a collection of trivial classes.")] + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1402:FileMayOnlyContainASingleClass", + Justification = "These stub classes are compiled only on some platforms that do not contain the entire framework, e.g. new Windows user interface.")] + internal static class RuntimeHelpers + { + /// + /// A fake function to allow compilation on platforms that lack this functionality. + /// + public static void PrepareConstrainedRegions() + { + } + + /// + /// A fake function to allow compilation on platforms that lack this functionality. + /// + /// + /// The method. + /// + public static void PrepareMethod(RuntimeMethodHandle method) + { + } + } + + /// + /// A fake class to allow compilation on platforms that lack this class. + /// + [SuppressMessage("StyleCop.CSharp.MaintainabilityRules", "SA1402:FileMayOnlyContainASingleClass", + Justification = "Reviewed. Suppression is OK here because it's a collection of trivial classes.")] + internal class TraceSwitch + { + /// + /// Initializes a new instance of the class. + /// + /// + /// The display name. + /// + /// + /// The description. + /// + public TraceSwitch(string displayName, string description) + { + } + + /// + /// Gets a value indicating whether TraceVerbose. + /// + public bool TraceVerbose { get; private set; } + + /// + /// Gets a value indicating whether TraceWarning. + /// + public bool TraceWarning { get; private set; } + + /// + /// Gets a value indicating whether TraceError. + /// + public bool TraceError { get; private set; } + + /// + /// Gets a value indicating whether TraceInfo. + /// + public bool TraceInfo { get; private set; } + + /// + /// Prints out the object's contents. + /// + /// A string represenetation or the object. + public override string ToString() + { + return base.ToString(); + } + } + + /// + /// A fake class to allow compilation on platforms that lack this class. + /// + [SuppressMessage("StyleCop.CSharp.MaintainabilityRules", "SA1402:FileMayOnlyContainASingleClass", + Justification = "Reviewed. Suppression is OK here because it's a collection of trivial classes.")] + internal class Trace + { + /// + /// A fake function to allow compilation on platforms that lack this functionality. + /// + /// + /// The condition. + /// + /// + /// The message. + /// + [ConditionalAttribute("TRACE")] + public static void WriteLineIf(bool condition, string message) + { + } + + /// + /// A fake function to allow compilation on platforms that lack this functionality. + /// + /// + /// The message. + /// + [ConditionalAttribute("TRACE")] + public static void TraceError(string message) + { + } + + /// + /// A fake function to allow compilation on platforms that lack this functionality. + /// + /// + /// The message. + /// + /// + /// The arguments. + /// + [ConditionalAttribute("TRACE")] + public static void TraceWarning(string message, params object[] args) + { + } + } +} + +#if MANAGEDESENT_ON_WSA +namespace System.ComponentModel +{ + using System; + using System.Diagnostics.CodeAnalysis; + using System.Runtime.InteropServices; + using System.Security; + + /// + /// An exception from a Win32 call. + /// + //// The original derives from System.Runtime.InteropServices.ExternalException. + internal class Win32Exception : Exception + { + /// + /// The error code from a Win32 call. + /// + private readonly int nativeErrorCode; + + /// + /// Initializes a new instance of the Win32Exception class. + /// + [SecuritySafeCritical] + public Win32Exception() : this(Marshal.GetLastWin32Error()) + { + } + + /// + /// Initializes a new instance of the Win32Exception class. + /// + /// A win32 error code. + [SecuritySafeCritical] + public Win32Exception(int error) : this(error, Win32Exception.GetErrorMessage(error)) + { + } + + /// + /// Initializes a new instance of the Win32Exception class. + /// + /// A win32 error code. + /// The string message. + public Win32Exception(int error, string message) + : base(message) + { + this.nativeErrorCode = error; + } + + /// + /// Initializes a new instance of the Win32Exception class. + /// + /// The string message. + [SecuritySafeCritical] + public Win32Exception(string message) : this(Marshal.GetLastWin32Error(), message) + { + } + + /// + /// Initializes a new instance of the Win32Exception class. + /// + /// The string message. + /// The nested exception. + [SecuritySafeCritical, SuppressMessage("Microsoft.Interoperability", "CA1404:CallGetLastErrorImmediatelyAfterPInvoke", Justification = "Retuning error codes.")] + public Win32Exception(string message, Exception innerException) : base(message, innerException) + { + this.nativeErrorCode = Marshal.GetLastWin32Error(); + } + + /// + /// Returns a string value of the Win32 error code. + /// + /// The Win32 error code. + /// A string representation. + [SecuritySafeCritical] + private static string GetErrorMessage(int error) + { + string result = string.Empty; + result = "Win32 error (0x" + Convert.ToString(error, 16) + ")"; + return result; + } + } +} +#endif // MANAGEDESENT_ON_WSA diff --git a/WelsonJS.Toolkit/EsentInterop/Esent/ManagedEseLogo128x128.png b/WelsonJS.Toolkit/EsentInterop/Esent/ManagedEseLogo128x128.png new file mode 100644 index 0000000..e5ca869 Binary files /dev/null and b/WelsonJS.Toolkit/EsentInterop/Esent/ManagedEseLogo128x128.png differ diff --git a/WelsonJS.Toolkit/EsentInterop/Esent/suppressions.cs b/WelsonJS.Toolkit/EsentInterop/Esent/suppressions.cs new file mode 100644 index 0000000..d50edce --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/Esent/suppressions.cs @@ -0,0 +1,2921 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// + +// Contains the SuppressMessage attributes to ensure a clean fxcop run. +using System.Diagnostics.CodeAnalysis; + +#region CA1008 +[module: SuppressMessage("Microsoft.Design", "CA1008:EnumsShouldHaveZeroValue", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.ConditionalColumnGrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1008:EnumsShouldHaveZeroValue", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.GetLockGrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1008:EnumsShouldHaveZeroValue", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.IndexKeyGrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1008:EnumsShouldHaveZeroValue", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.IndexRangeGrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1008:EnumsShouldHaveZeroValue", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_Move", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1008:EnumsShouldHaveZeroValue", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_SNP", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1008:EnumsShouldHaveZeroValue", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_cbtyp", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1008:EnumsShouldHaveZeroValue", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_dbstate", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1008:EnumsShouldHaveZeroValue", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.SetCurrentIndexGrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1008:EnumsShouldHaveZeroValue", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Vista.JET_InstanceMiscInfo", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1008:EnumsShouldHaveZeroValue", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Windows7.PrereadKeysGrbit", Justification = "Stylebot Generated FxCop Exclusion.")] // Zero is not a valid value for the API +[module: SuppressMessage("Microsoft.Design", "CA1008:EnumsShouldHaveZeroValue", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Windows8.JET_ErrorInfo", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1008:EnumsShouldHaveZeroValue", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Windows8.JET_sesparam", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1008:EnumsShouldHaveZeroValue", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Windows8.StopServiceGrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +#endregion + +[module: SuppressMessage("Microsoft.Design", "CA1027:MarkEnumsWithFlags", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.SetCurrentIndexGrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1045:DoNotPassTypesByReference", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetDefragment(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.String,System.Int32&,System.Int32&,Microsoft.Isam.Esent.Interop.DefragGrbit)", MessageId = "3#", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1045:DoNotPassTypesByReference", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetDefragment(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.String,System.Int32&,System.Int32&,Microsoft.Isam.Esent.Interop.DefragGrbit)", MessageId = "4#", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1045:DoNotPassTypesByReference", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetDefragment2(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.String,System.Int32&,System.Int32&,Microsoft.Isam.Esent.Interop.JET_CALLBACK,Microsoft.Isam.Esent.Interop.DefragGrbit)", MessageId = "3#", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1045:DoNotPassTypesByReference", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetDefragment2(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.String,System.Int32&,System.Int32&,Microsoft.Isam.Esent.Interop.JET_CALLBACK,Microsoft.Isam.Esent.Interop.DefragGrbit)", MessageId = "4#", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1045:DoNotPassTypesByReference", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetRecordSize(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_RECSIZE&,Microsoft.Isam.Esent.Interop.GetRecordSizeGrbit)", MessageId = "2#", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1045:DoNotPassTypesByReference", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetSystemParameter(Microsoft.Isam.Esent.Interop.JET_INSTANCE,Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_param,System.Int32&,System.String&,System.Int32)", MessageId = "3#", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1045:DoNotPassTypesByReference", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetSystemParameter(Microsoft.Isam.Esent.Interop.JET_INSTANCE,Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_param,System.IntPtr&,System.String&,System.Int32)", MessageId = "3#", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1045:DoNotPassTypesByReference", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetInit(Microsoft.Isam.Esent.Interop.JET_INSTANCE&)", MessageId = "0#", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1045:DoNotPassTypesByReference", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetInit2(Microsoft.Isam.Esent.Interop.JET_INSTANCE&,Microsoft.Isam.Esent.Interop.InitGrbit)", MessageId = "0#", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1045:DoNotPassTypesByReference", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.VistaApi.#JetInit3(Microsoft.Isam.Esent.Interop.JET_INSTANCE&,Microsoft.Isam.Esent.Interop.JET_RSTINFO,Microsoft.Isam.Esent.Interop.InitGrbit)", MessageId = "0#", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1045:DoNotPassTypesByReference", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.VistaApi.#JetGetRecordSize(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.Vista.JET_RECSIZE&,Microsoft.Isam.Esent.Interop.GetRecordSizeGrbit)", MessageId = "2#", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1700:DoNotNameEnumValuesReserved", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_err.#SLVPagesNotReserved", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1702:CompoundWordsShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetBeginSession(Microsoft.Isam.Esent.Interop.JET_INSTANCE,Microsoft.Isam.Esent.Interop.JET_SESID&,System.String,System.String)", MessageId = "username", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1702:CompoundWordsShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_DbInfo.#Filename", MessageId = "Filename", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1702:CompoundWordsShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_err.#InvalidFilename", MessageId = "Filename", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1702:CompoundWordsShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_err.#OSSnapshotTimeOut", MessageId = "TimeOut", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1702:CompoundWordsShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.JET_THREADSTATS.#cLogRecord", MessageId = "cLog", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1702:CompoundWordsShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.JET_THREADSTATS.#Create(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32)", MessageId = "cLog", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1702:CompoundWordsShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInvalidFilenameException", MessageId = "Filename", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1702:CompoundWordsShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentOSSnapshotTimeOutException", MessageId = "TimeOut", Justification = "Stylebot Generated FxCop Exclusion.")] + +#region CA1704 +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Isam", Justification = "Stylebot Generated FxCop Exclusion.")] + +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetObjectInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,Microsoft.Isam.Esent.Interop.JET_objtyp,System.String,Microsoft.Isam.Esent.Interop.JET_OBJECTINFO&)", MessageId = "objectinfo", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetObjectInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,Microsoft.Isam.Esent.Interop.JET_objtyp,System.String,Microsoft.Isam.Esent.Interop.JET_OBJECTINFO&)", MessageId = "sz", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetObjectInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,Microsoft.Isam.Esent.Interop.JET_objtyp,System.String,Microsoft.Isam.Esent.Interop.JET_OBJECTINFO&)", MessageId = "objtyp", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetObjectInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,Microsoft.Isam.Esent.Interop.JET_objtyp,System.String,Microsoft.Isam.Esent.Interop.JET_OBJECTINFO&)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetObjectInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,Microsoft.Isam.Esent.Interop.JET_objtyp,System.String,Microsoft.Isam.Esent.Interop.JET_OBJECTINFO&)", MessageId = "dbid", Justification = "Stylebot Generated FxCop Exclusion.")] + +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.VistaApi.#JetGetColumnInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.String,Microsoft.Isam.Esent.Interop.JET_COLUMNID,Microsoft.Isam.Esent.Interop.JET_COLUMNBASE&)", MessageId = "columnbase", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.VistaApi.#JetGetColumnInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.String,Microsoft.Isam.Esent.Interop.JET_COLUMNID,Microsoft.Isam.Esent.Interop.JET_COLUMNBASE&)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.VistaApi.#JetGetColumnInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.String,Microsoft.Isam.Esent.Interop.JET_COLUMNID,Microsoft.Isam.Esent.Interop.JET_COLUMNBASE&)", MessageId = "tablename", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.VistaApi.#JetGetColumnInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.String,Microsoft.Isam.Esent.Interop.JET_COLUMNID,Microsoft.Isam.Esent.Interop.JET_COLUMNBASE&)", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.VistaApi.#JetGetColumnInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.String,Microsoft.Isam.Esent.Interop.JET_COLUMNID,Microsoft.Isam.Esent.Interop.JET_COLUMNBASE&)", MessageId = "dbid", Justification = "Stylebot Generated FxCop Exclusion.")] + +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetBeginTransaction3(Microsoft.Isam.Esent.Interop.JET_SESID,System.Int64,Microsoft.Isam.Esent.Interop.BeginTransactionGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetBeginTransaction3(Microsoft.Isam.Esent.Interop.JET_SESID,System.Int64,Microsoft.Isam.Esent.Interop.BeginTransactionGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetDatabaseFileInfo(System.String,Microsoft.Isam.Esent.Interop.JET_DBINFOMISC&)", MessageId = "dbinfomisc", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetDatabaseFileInfo(System.String,Microsoft.Isam.Esent.Interop.JET_DBINFOMISC&,Microsoft.Isam.Esent.Interop.JET_DbInfo)", MessageId = "dbinfomisc", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetColumnInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.String,System.String,Microsoft.Isam.Esent.Interop.JET_COLUMNBASE&)", MessageId = "columnbase", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetColumnInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.String,System.String,Microsoft.Isam.Esent.Interop.JET_COLUMNBASE&)", MessageId = "tablename", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetColumnInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.String,System.String,Microsoft.Isam.Esent.Interop.JET_COLUMNBASE&)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetColumnInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.String,System.String,Microsoft.Isam.Esent.Interop.JET_COLUMNBASE&)", MessageId = "dbid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetDatabaseInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,Microsoft.Isam.Esent.Interop.JET_DBINFOMISC&)", MessageId = "dbinfomisc", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetDatabaseInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,Microsoft.Isam.Esent.Interop.JET_DBINFOMISC&)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetDatabaseInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,Microsoft.Isam.Esent.Interop.JET_DBINFOMISC&)", MessageId = "dbid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetDatabaseInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.Int32&,Microsoft.Isam.Esent.Interop.JET_DbInfo)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetDatabaseInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.Int32&,Microsoft.Isam.Esent.Interop.JET_DbInfo)", MessageId = "dbid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetDatabaseInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,Microsoft.Isam.Esent.Interop.JET_DBINFOMISC&,Microsoft.Isam.Esent.Interop.JET_DbInfo)", MessageId = "dbinfomisc", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetDatabaseInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,Microsoft.Isam.Esent.Interop.JET_DBINFOMISC&,Microsoft.Isam.Esent.Interop.JET_DbInfo)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetDatabaseInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,Microsoft.Isam.Esent.Interop.JET_DBINFOMISC&,Microsoft.Isam.Esent.Interop.JET_DbInfo)", MessageId = "dbid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetDatabaseInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.String&,Microsoft.Isam.Esent.Interop.JET_DbInfo)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetDatabaseInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.String&,Microsoft.Isam.Esent.Interop.JET_DbInfo)", MessageId = "dbid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#DeserializeObjectFromColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID)", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#DeserializeObjectFromColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#DeserializeObjectFromColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#DeserializeObjectFromColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,Microsoft.Isam.Esent.Interop.RetrieveColumnGrbit)", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#DeserializeObjectFromColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,Microsoft.Isam.Esent.Interop.RetrieveColumnGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#DeserializeObjectFromColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,Microsoft.Isam.Esent.Interop.RetrieveColumnGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#DeserializeObjectFromColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,Microsoft.Isam.Esent.Interop.RetrieveColumnGrbit)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#EscrowUpdate(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.Int32)", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#EscrowUpdate(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.Int32)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#EscrowUpdate(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.Int32)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#GetBookmark(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#GetBookmark(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#GetColumnDictionary(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#GetColumnDictionary(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#GetTableColumnid(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.String)", MessageId = "Columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#GetTableColumnid(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.String)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#GetTableColumnid(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.String)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#GetTableColumns(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.String)", MessageId = "dbid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#GetTableColumns(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.String)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#GetTableColumns(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.String)", MessageId = "tablename", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#GetTableColumns(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#GetTableColumns(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#GetTableIndexes(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.String)", MessageId = "dbid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#GetTableIndexes(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.String)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#GetTableIndexes(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.String)", MessageId = "tablename", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#GetTableIndexes(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#GetTableIndexes(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#GetTableNames(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID)", MessageId = "dbid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#GetTableNames(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#IntersectIndexes(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID[])", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#IntersectIndexes(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID[])", MessageId = "tableids", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetAddColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.String,Microsoft.Isam.Esent.Interop.JET_COLUMNDEF,System.Byte[],System.Int32,Microsoft.Isam.Esent.Interop.JET_COLUMNID&)", MessageId = "columndef", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetAddColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.String,Microsoft.Isam.Esent.Interop.JET_COLUMNDEF,System.Byte[],System.Int32,Microsoft.Isam.Esent.Interop.JET_COLUMNID&)", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetAddColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.String,Microsoft.Isam.Esent.Interop.JET_COLUMNDEF,System.Byte[],System.Int32,Microsoft.Isam.Esent.Interop.JET_COLUMNID&)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetAddColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.String,Microsoft.Isam.Esent.Interop.JET_COLUMNDEF,System.Byte[],System.Int32,Microsoft.Isam.Esent.Interop.JET_COLUMNID&)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetAttachDatabase(Microsoft.Isam.Esent.Interop.JET_SESID,System.String,Microsoft.Isam.Esent.Interop.AttachDatabaseGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetAttachDatabase(Microsoft.Isam.Esent.Interop.JET_SESID,System.String,Microsoft.Isam.Esent.Interop.AttachDatabaseGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetAttachDatabase2(Microsoft.Isam.Esent.Interop.JET_SESID,System.String,System.Int32,Microsoft.Isam.Esent.Interop.AttachDatabaseGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetAttachDatabase2(Microsoft.Isam.Esent.Interop.JET_SESID,System.String,System.Int32,Microsoft.Isam.Esent.Interop.AttachDatabaseGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetBackupInstance(Microsoft.Isam.Esent.Interop.JET_INSTANCE,System.String,Microsoft.Isam.Esent.Interop.BackupGrbit,Microsoft.Isam.Esent.Interop.JET_PFNSTATUS)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetBeginExternalBackupInstance(Microsoft.Isam.Esent.Interop.JET_INSTANCE,Microsoft.Isam.Esent.Interop.BeginExternalBackupGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetBeginSession(Microsoft.Isam.Esent.Interop.JET_INSTANCE,Microsoft.Isam.Esent.Interop.JET_SESID&,System.String,System.String)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetBeginTransaction(Microsoft.Isam.Esent.Interop.JET_SESID)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetBeginTransaction2(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.BeginTransactionGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetBeginTransaction2(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.BeginTransactionGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetCloseDatabase(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,Microsoft.Isam.Esent.Interop.CloseDatabaseGrbit)", MessageId = "dbid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetCloseDatabase(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,Microsoft.Isam.Esent.Interop.CloseDatabaseGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetCloseDatabase(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,Microsoft.Isam.Esent.Interop.CloseDatabaseGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetCloseTable(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetCloseTable(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetCommitTransaction(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.CommitTransactionGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetCommitTransaction(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.CommitTransactionGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetCompact(Microsoft.Isam.Esent.Interop.JET_SESID,System.String,System.String,Microsoft.Isam.Esent.Interop.JET_PFNSTATUS,Microsoft.Isam.Esent.Interop.JET_CONVERT,Microsoft.Isam.Esent.Interop.CompactGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetCompact(Microsoft.Isam.Esent.Interop.JET_SESID,System.String,System.String,Microsoft.Isam.Esent.Interop.JET_PFNSTATUS,Microsoft.Isam.Esent.Interop.JET_CONVERT,Microsoft.Isam.Esent.Interop.CompactGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetComputeStats(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetComputeStats(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetConfigureProcessForCrashDump(Microsoft.Isam.Esent.Interop.Windows7.CrashDumpGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetCreateDatabase(Microsoft.Isam.Esent.Interop.JET_SESID,System.String,System.String,Microsoft.Isam.Esent.Interop.JET_DBID&,Microsoft.Isam.Esent.Interop.CreateDatabaseGrbit)", MessageId = "dbid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetCreateDatabase(Microsoft.Isam.Esent.Interop.JET_SESID,System.String,System.String,Microsoft.Isam.Esent.Interop.JET_DBID&,Microsoft.Isam.Esent.Interop.CreateDatabaseGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetCreateDatabase(Microsoft.Isam.Esent.Interop.JET_SESID,System.String,System.String,Microsoft.Isam.Esent.Interop.JET_DBID&,Microsoft.Isam.Esent.Interop.CreateDatabaseGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetCreateDatabase2(Microsoft.Isam.Esent.Interop.JET_SESID,System.String,System.Int32,Microsoft.Isam.Esent.Interop.JET_DBID&,Microsoft.Isam.Esent.Interop.CreateDatabaseGrbit)", MessageId = "dbid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetCreateDatabase2(Microsoft.Isam.Esent.Interop.JET_SESID,System.String,System.Int32,Microsoft.Isam.Esent.Interop.JET_DBID&,Microsoft.Isam.Esent.Interop.CreateDatabaseGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetCreateDatabase2(Microsoft.Isam.Esent.Interop.JET_SESID,System.String,System.Int32,Microsoft.Isam.Esent.Interop.JET_DBID&,Microsoft.Isam.Esent.Interop.CreateDatabaseGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetCreateIndex(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.String,Microsoft.Isam.Esent.Interop.CreateIndexGrbit,System.String,System.Int32,System.Int32)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetCreateIndex(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.String,Microsoft.Isam.Esent.Interop.CreateIndexGrbit,System.String,System.Int32,System.Int32)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetCreateIndex(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.String,Microsoft.Isam.Esent.Interop.CreateIndexGrbit,System.String,System.Int32,System.Int32)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetCreateIndex2(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_INDEXCREATE[],System.Int32)", MessageId = "indexcreates", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetCreateIndex2(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_INDEXCREATE[],System.Int32)", MessageId = "num", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetCreateIndex2(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_INDEXCREATE[],System.Int32)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetCreateIndex2(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_INDEXCREATE[],System.Int32)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetCreateInstance2(Microsoft.Isam.Esent.Interop.JET_INSTANCE&,System.String,System.String,Microsoft.Isam.Esent.Interop.CreateInstanceGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetCreateTable(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.String,System.Int32,System.Int32,Microsoft.Isam.Esent.Interop.JET_TABLEID&)", MessageId = "dbid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetCreateTable(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.String,System.Int32,System.Int32,Microsoft.Isam.Esent.Interop.JET_TABLEID&)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetCreateTable(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.String,System.Int32,System.Int32,Microsoft.Isam.Esent.Interop.JET_TABLEID&)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetCreateTableColumnIndex3(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,Microsoft.Isam.Esent.Interop.JET_TABLECREATE)", MessageId = "dbid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetCreateTableColumnIndex3(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,Microsoft.Isam.Esent.Interop.JET_TABLECREATE)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetCreateTableColumnIndex3(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,Microsoft.Isam.Esent.Interop.JET_TABLECREATE)", MessageId = "tablecreate", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetDefragment(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.String,System.Int32&,System.Int32&,Microsoft.Isam.Esent.Interop.DefragGrbit)", MessageId = "dbid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetDefragment(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.String,System.Int32&,System.Int32&,Microsoft.Isam.Esent.Interop.DefragGrbit)", MessageId = "Defragment", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetDefragment(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.String,System.Int32&,System.Int32&,Microsoft.Isam.Esent.Interop.DefragGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetDefragment(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.String,System.Int32&,System.Int32&,Microsoft.Isam.Esent.Interop.DefragGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetDefragment2(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.String,System.Int32&,System.Int32&,Microsoft.Isam.Esent.Interop.JET_CALLBACK,Microsoft.Isam.Esent.Interop.DefragGrbit)", MessageId = "dbid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetDefragment2(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.String,System.Int32&,System.Int32&,Microsoft.Isam.Esent.Interop.JET_CALLBACK,Microsoft.Isam.Esent.Interop.DefragGrbit)", MessageId = "Defragment", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetDefragment2(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.String,System.Int32&,System.Int32&,Microsoft.Isam.Esent.Interop.JET_CALLBACK,Microsoft.Isam.Esent.Interop.DefragGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetDefragment2(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.String,System.Int32&,System.Int32&,Microsoft.Isam.Esent.Interop.JET_CALLBACK,Microsoft.Isam.Esent.Interop.DefragGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetDelete(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetDelete(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetDeleteColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.String)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetDeleteColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.String)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetDeleteColumn2(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.String,Microsoft.Isam.Esent.Interop.DeleteColumnGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetDeleteColumn2(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.String,Microsoft.Isam.Esent.Interop.DeleteColumnGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetDeleteColumn2(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.String,Microsoft.Isam.Esent.Interop.DeleteColumnGrbit)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetDeleteIndex(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.String)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetDeleteIndex(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.String)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetDeleteTable(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.String)", MessageId = "dbid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetDeleteTable(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.String)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetDetachDatabase(Microsoft.Isam.Esent.Interop.JET_SESID,System.String)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetDetachDatabase2(Microsoft.Isam.Esent.Interop.JET_SESID,System.String,Microsoft.Isam.Esent.Interop.DetachDatabaseGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetDetachDatabase2(Microsoft.Isam.Esent.Interop.JET_SESID,System.String,Microsoft.Isam.Esent.Interop.DetachDatabaseGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetDupCursor(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_TABLEID&,Microsoft.Isam.Esent.Interop.DupCursorGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetDupCursor(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_TABLEID&,Microsoft.Isam.Esent.Interop.DupCursorGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetDupCursor(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_TABLEID&,Microsoft.Isam.Esent.Interop.DupCursorGrbit)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetDupCursor(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_TABLEID&,Microsoft.Isam.Esent.Interop.DupCursorGrbit)", MessageId = "Tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetDupSession(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_SESID&)", MessageId = "Sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetDupSession(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_SESID&)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetEndExternalBackupInstance2(Microsoft.Isam.Esent.Interop.JET_INSTANCE,Microsoft.Isam.Esent.Interop.EndExternalBackupGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetEndSession(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.EndSessionGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetEndSession(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.EndSessionGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetEnumerateColumns(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.Int32,Microsoft.Isam.Esent.Interop.JET_ENUMCOLUMNID[],System.Int32&,Microsoft.Isam.Esent.Interop.JET_ENUMCOLUMN[]&,Microsoft.Isam.Esent.Interop.JET_PFNREALLOC,System.IntPtr,System.Int32,Microsoft.Isam.Esent.Interop.EnumerateColumnsGrbit)", MessageId = "allocator", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetEnumerateColumns(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.Int32,Microsoft.Isam.Esent.Interop.JET_ENUMCOLUMNID[],System.Int32&,Microsoft.Isam.Esent.Interop.JET_ENUMCOLUMN[]&,Microsoft.Isam.Esent.Interop.JET_PFNREALLOC,System.IntPtr,System.Int32,Microsoft.Isam.Esent.Interop.EnumerateColumnsGrbit)", MessageId = "Columnids", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetEnumerateColumns(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.Int32,Microsoft.Isam.Esent.Interop.JET_ENUMCOLUMNID[],System.Int32&,Microsoft.Isam.Esent.Interop.JET_ENUMCOLUMN[]&,Microsoft.Isam.Esent.Interop.JET_PFNREALLOC,System.IntPtr,System.Int32,Microsoft.Isam.Esent.Interop.EnumerateColumnsGrbit)", MessageId = "columnids", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetEnumerateColumns(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.Int32,Microsoft.Isam.Esent.Interop.JET_ENUMCOLUMNID[],System.Int32&,Microsoft.Isam.Esent.Interop.JET_ENUMCOLUMN[]&,Microsoft.Isam.Esent.Interop.JET_PFNREALLOC,System.IntPtr,System.Int32,Microsoft.Isam.Esent.Interop.EnumerateColumnsGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetEnumerateColumns(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.Int32,Microsoft.Isam.Esent.Interop.JET_ENUMCOLUMNID[],System.Int32&,Microsoft.Isam.Esent.Interop.JET_ENUMCOLUMN[]&,Microsoft.Isam.Esent.Interop.JET_PFNREALLOC,System.IntPtr,System.Int32,Microsoft.Isam.Esent.Interop.EnumerateColumnsGrbit)", MessageId = "num", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetEnumerateColumns(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.Int32,Microsoft.Isam.Esent.Interop.JET_ENUMCOLUMNID[],System.Int32&,Microsoft.Isam.Esent.Interop.JET_ENUMCOLUMN[]&,Microsoft.Isam.Esent.Interop.JET_PFNREALLOC,System.IntPtr,System.Int32,Microsoft.Isam.Esent.Interop.EnumerateColumnsGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetEnumerateColumns(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.Int32,Microsoft.Isam.Esent.Interop.JET_ENUMCOLUMNID[],System.Int32&,Microsoft.Isam.Esent.Interop.JET_ENUMCOLUMN[]&,Microsoft.Isam.Esent.Interop.JET_PFNREALLOC,System.IntPtr,System.Int32,Microsoft.Isam.Esent.Interop.EnumerateColumnsGrbit)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetEscrowUpdate(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.Byte[],System.Int32,System.Byte[],System.Int32,System.Int32&,Microsoft.Isam.Esent.Interop.EscrowUpdateGrbit)", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetEscrowUpdate(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.Byte[],System.Int32,System.Byte[],System.Int32,System.Int32&,Microsoft.Isam.Esent.Interop.EscrowUpdateGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetEscrowUpdate(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.Byte[],System.Int32,System.Byte[],System.Int32,System.Int32&,Microsoft.Isam.Esent.Interop.EscrowUpdateGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetEscrowUpdate(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.Byte[],System.Int32,System.Byte[],System.Int32,System.Int32&,Microsoft.Isam.Esent.Interop.EscrowUpdateGrbit)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetBookmark(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.Byte[],System.Int32,System.Int32&)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetBookmark(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.Byte[],System.Int32,System.Int32&)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetColumnInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.String,System.String,Microsoft.Isam.Esent.Interop.JET_COLUMNDEF&)", MessageId = "columndef", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetColumnInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.String,System.String,Microsoft.Isam.Esent.Interop.JET_COLUMNDEF&)", MessageId = "dbid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetColumnInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.String,System.String,Microsoft.Isam.Esent.Interop.JET_COLUMNDEF&)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetColumnInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.String,System.String,Microsoft.Isam.Esent.Interop.JET_COLUMNDEF&)", MessageId = "tablename", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetColumnInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.String,System.String,Microsoft.Isam.Esent.Interop.JET_COLUMNLIST&)", MessageId = "columnlist", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetColumnInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.String,System.String,Microsoft.Isam.Esent.Interop.JET_COLUMNLIST&)", MessageId = "dbid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetColumnInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.String,System.String,Microsoft.Isam.Esent.Interop.JET_COLUMNLIST&)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetColumnInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.String,System.String,Microsoft.Isam.Esent.Interop.JET_COLUMNLIST&)", MessageId = "tablename", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetCurrentIndex(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.String&,System.Int32)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetCurrentIndex(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.String&,System.Int32)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetCursorInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetCursorInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetIndexInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.String,System.String,Microsoft.Isam.Esent.Interop.JET_INDEXID&,Microsoft.Isam.Esent.Interop.JET_IdxInfo)", MessageId = "dbid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetIndexInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.String,System.String,Microsoft.Isam.Esent.Interop.JET_INDEXID&,Microsoft.Isam.Esent.Interop.JET_IdxInfo)", MessageId = "indexname", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetIndexInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.String,System.String,Microsoft.Isam.Esent.Interop.JET_INDEXID&,Microsoft.Isam.Esent.Interop.JET_IdxInfo)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetIndexInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.String,System.String,Microsoft.Isam.Esent.Interop.JET_INDEXID&,Microsoft.Isam.Esent.Interop.JET_IdxInfo)", MessageId = "tablename", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetIndexInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.String,System.String,Microsoft.Isam.Esent.Interop.JET_INDEXLIST&,Microsoft.Isam.Esent.Interop.JET_IdxInfo)", MessageId = "dbid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetIndexInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.String,System.String,Microsoft.Isam.Esent.Interop.JET_INDEXLIST&,Microsoft.Isam.Esent.Interop.JET_IdxInfo)", MessageId = "indexname", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetIndexInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.String,System.String,Microsoft.Isam.Esent.Interop.JET_INDEXLIST&,Microsoft.Isam.Esent.Interop.JET_IdxInfo)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetIndexInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.String,System.String,Microsoft.Isam.Esent.Interop.JET_INDEXLIST&,Microsoft.Isam.Esent.Interop.JET_IdxInfo)", MessageId = "tablename", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetIndexInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.String,System.String,System.String&,Microsoft.Isam.Esent.Interop.JET_IdxInfo)", MessageId = "dbid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetIndexInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.String,System.String,System.String&,Microsoft.Isam.Esent.Interop.JET_IdxInfo)", MessageId = "indexname", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetIndexInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.String,System.String,System.String&,Microsoft.Isam.Esent.Interop.JET_IdxInfo)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetIndexInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.String,System.String,System.String&,Microsoft.Isam.Esent.Interop.JET_IdxInfo)", MessageId = "tablename", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetIndexInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.String,System.String,System.Int32&,Microsoft.Isam.Esent.Interop.JET_IdxInfo)", MessageId = "dbid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetIndexInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.String,System.String,System.Int32&,Microsoft.Isam.Esent.Interop.JET_IdxInfo)", MessageId = "indexname", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetIndexInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.String,System.String,System.Int32&,Microsoft.Isam.Esent.Interop.JET_IdxInfo)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetIndexInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.String,System.String,System.Int32&,Microsoft.Isam.Esent.Interop.JET_IdxInfo)", MessageId = "tablename", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetIndexInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.String,System.String,System.UInt16&,Microsoft.Isam.Esent.Interop.JET_IdxInfo)", MessageId = "dbid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetIndexInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.String,System.String,System.UInt16&,Microsoft.Isam.Esent.Interop.JET_IdxInfo)", MessageId = "indexname", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetIndexInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.String,System.String,System.UInt16&,Microsoft.Isam.Esent.Interop.JET_IdxInfo)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetIndexInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.String,System.String,System.UInt16&,Microsoft.Isam.Esent.Interop.JET_IdxInfo)", MessageId = "tablename", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetInstanceInfo(System.Int32&,Microsoft.Isam.Esent.Interop.JET_INSTANCE_INFO[]&)", MessageId = "num", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetLock(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.GetLockGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetLock(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.GetLockGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetLock(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.GetLockGrbit)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetLS(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_LS&,Microsoft.Isam.Esent.Interop.LsGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetLS(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_LS&,Microsoft.Isam.Esent.Interop.LsGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetLS(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_LS&,Microsoft.Isam.Esent.Interop.LsGrbit)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetObjectInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,Microsoft.Isam.Esent.Interop.JET_OBJECTLIST&)", MessageId = "dbid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetObjectInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,Microsoft.Isam.Esent.Interop.JET_OBJECTLIST&)", MessageId = "objectlist", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetObjectInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,Microsoft.Isam.Esent.Interop.JET_OBJECTLIST&)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetRecordPosition(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_RECPOS&)", MessageId = "recpos", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetRecordPosition(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_RECPOS&)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetRecordPosition(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_RECPOS&)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetRecordSize(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_RECSIZE&,Microsoft.Isam.Esent.Interop.GetRecordSizeGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetRecordSize(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_RECSIZE&,Microsoft.Isam.Esent.Interop.GetRecordSizeGrbit)", MessageId = "recsize", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetRecordSize(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_RECSIZE&,Microsoft.Isam.Esent.Interop.GetRecordSizeGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetRecordSize(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_RECSIZE&,Microsoft.Isam.Esent.Interop.GetRecordSizeGrbit)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetSecondaryIndexBookmark(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.Byte[],System.Int32,System.Int32&,System.Byte[],System.Int32,System.Int32&,Microsoft.Isam.Esent.Interop.GetSecondaryIndexBookmarkGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetSecondaryIndexBookmark(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.Byte[],System.Int32,System.Int32&,System.Byte[],System.Int32,System.Int32&,Microsoft.Isam.Esent.Interop.GetSecondaryIndexBookmarkGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetSecondaryIndexBookmark(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.Byte[],System.Int32,System.Int32&,System.Byte[],System.Int32,System.Int32&,Microsoft.Isam.Esent.Interop.GetSecondaryIndexBookmarkGrbit)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetSystemParameter(Microsoft.Isam.Esent.Interop.JET_INSTANCE,Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_param,System.Int32&,System.String&,System.Int32)", MessageId = "Param", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetSystemParameter(Microsoft.Isam.Esent.Interop.JET_INSTANCE,Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_param,System.Int32&,System.String&,System.Int32)", MessageId = "param", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetSystemParameter(Microsoft.Isam.Esent.Interop.JET_INSTANCE,Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_param,System.Int32&,System.String&,System.Int32)", MessageId = "paramid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetSystemParameter(Microsoft.Isam.Esent.Interop.JET_INSTANCE,Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_param,System.Int32&,System.String&,System.Int32)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetTableColumnInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,Microsoft.Isam.Esent.Interop.JET_COLUMNDEF&)", MessageId = "columndef", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetTableColumnInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,Microsoft.Isam.Esent.Interop.JET_COLUMNDEF&)", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetTableColumnInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,Microsoft.Isam.Esent.Interop.JET_COLUMNDEF&)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetTableColumnInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,Microsoft.Isam.Esent.Interop.JET_COLUMNDEF&)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetTableColumnInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.String,Microsoft.Isam.Esent.Interop.JET_COLUMNDEF&)", MessageId = "columndef", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetTableColumnInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.String,Microsoft.Isam.Esent.Interop.JET_COLUMNDEF&)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetTableColumnInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.String,Microsoft.Isam.Esent.Interop.JET_COLUMNDEF&)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetTableColumnInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.String,Microsoft.Isam.Esent.Interop.JET_COLUMNLIST&)", MessageId = "columnlist", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetTableColumnInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.String,Microsoft.Isam.Esent.Interop.JET_COLUMNLIST&)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetTableColumnInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.String,Microsoft.Isam.Esent.Interop.JET_COLUMNLIST&)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetTableIndexInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.String,Microsoft.Isam.Esent.Interop.JET_INDEXID&,Microsoft.Isam.Esent.Interop.JET_IdxInfo)", MessageId = "indexname", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetTableIndexInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.String,Microsoft.Isam.Esent.Interop.JET_INDEXID&,Microsoft.Isam.Esent.Interop.JET_IdxInfo)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetTableIndexInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.String,Microsoft.Isam.Esent.Interop.JET_INDEXID&,Microsoft.Isam.Esent.Interop.JET_IdxInfo)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetTableIndexInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.String,Microsoft.Isam.Esent.Interop.JET_INDEXLIST&,Microsoft.Isam.Esent.Interop.JET_IdxInfo)", MessageId = "indexname", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetTableIndexInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.String,Microsoft.Isam.Esent.Interop.JET_INDEXLIST&,Microsoft.Isam.Esent.Interop.JET_IdxInfo)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetTableIndexInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.String,Microsoft.Isam.Esent.Interop.JET_INDEXLIST&,Microsoft.Isam.Esent.Interop.JET_IdxInfo)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetTableIndexInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.String,System.String&,Microsoft.Isam.Esent.Interop.JET_IdxInfo)", MessageId = "indexname", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetTableIndexInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.String,System.String&,Microsoft.Isam.Esent.Interop.JET_IdxInfo)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetTableIndexInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.String,System.String&,Microsoft.Isam.Esent.Interop.JET_IdxInfo)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetTableIndexInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.String,System.Int32&,Microsoft.Isam.Esent.Interop.JET_IdxInfo)", MessageId = "indexname", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetTableIndexInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.String,System.Int32&,Microsoft.Isam.Esent.Interop.JET_IdxInfo)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetTableIndexInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.String,System.Int32&,Microsoft.Isam.Esent.Interop.JET_IdxInfo)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetTableIndexInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.String,System.UInt16&,Microsoft.Isam.Esent.Interop.JET_IdxInfo)", MessageId = "indexname", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetTableIndexInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.String,System.UInt16&,Microsoft.Isam.Esent.Interop.JET_IdxInfo)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetTableIndexInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.String,System.UInt16&,Microsoft.Isam.Esent.Interop.JET_IdxInfo)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetTableInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_DBID&,Microsoft.Isam.Esent.Interop.JET_TblInfo)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetTableInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_DBID&,Microsoft.Isam.Esent.Interop.JET_TblInfo)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetTableInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_OBJECTINFO&,Microsoft.Isam.Esent.Interop.JET_TblInfo)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetTableInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_OBJECTINFO&,Microsoft.Isam.Esent.Interop.JET_TblInfo)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetTableInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.Int32&,Microsoft.Isam.Esent.Interop.JET_TblInfo)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetTableInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.Int32&,Microsoft.Isam.Esent.Interop.JET_TblInfo)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetTableInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.Int32[],Microsoft.Isam.Esent.Interop.JET_TblInfo)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetTableInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.Int32[],Microsoft.Isam.Esent.Interop.JET_TblInfo)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetTableInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.String&,Microsoft.Isam.Esent.Interop.JET_TblInfo)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetTableInfo(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.String&,Microsoft.Isam.Esent.Interop.JET_TblInfo)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetVersion(Microsoft.Isam.Esent.Interop.JET_SESID,System.UInt32&)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGotoBookmark(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.Byte[],System.Int32)", MessageId = "Goto", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGotoBookmark(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.Byte[],System.Int32)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGotoBookmark(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.Byte[],System.Int32)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGotoPosition(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_RECPOS)", MessageId = "Goto", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGotoPosition(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_RECPOS)", MessageId = "recpos", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGotoPosition(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_RECPOS)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGotoPosition(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_RECPOS)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGotoSecondaryIndexBookmark(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.Byte[],System.Int32,System.Byte[],System.Int32,Microsoft.Isam.Esent.Interop.GotoSecondaryIndexBookmarkGrbit)", MessageId = "Goto", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGotoSecondaryIndexBookmark(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.Byte[],System.Int32,System.Byte[],System.Int32,Microsoft.Isam.Esent.Interop.GotoSecondaryIndexBookmarkGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGotoSecondaryIndexBookmark(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.Byte[],System.Int32,System.Byte[],System.Int32,Microsoft.Isam.Esent.Interop.GotoSecondaryIndexBookmarkGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGotoSecondaryIndexBookmark(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.Byte[],System.Int32,System.Byte[],System.Int32,Microsoft.Isam.Esent.Interop.GotoSecondaryIndexBookmarkGrbit)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGrowDatabase(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.Int32,System.Int32&)", MessageId = "dbid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGrowDatabase(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.Int32,System.Int32&)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetIdle(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.IdleGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetIdle(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.IdleGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetIndexRecordCount(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.Int32&,System.Int32)", MessageId = "num", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetIndexRecordCount(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.Int32&,System.Int32)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetIndexRecordCount(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.Int32&,System.Int32)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetInit2(Microsoft.Isam.Esent.Interop.JET_INSTANCE&,Microsoft.Isam.Esent.Interop.InitGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetIntersectIndexes(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_INDEXRANGE[],System.Int32,Microsoft.Isam.Esent.Interop.JET_RECORDLIST&,Microsoft.Isam.Esent.Interop.IntersectIndexesGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetIntersectIndexes(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_INDEXRANGE[],System.Int32,Microsoft.Isam.Esent.Interop.JET_RECORDLIST&,Microsoft.Isam.Esent.Interop.IntersectIndexesGrbit)", MessageId = "num", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetIntersectIndexes(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_INDEXRANGE[],System.Int32,Microsoft.Isam.Esent.Interop.JET_RECORDLIST&,Microsoft.Isam.Esent.Interop.IntersectIndexesGrbit)", MessageId = "recordlist", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetIntersectIndexes(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_INDEXRANGE[],System.Int32,Microsoft.Isam.Esent.Interop.JET_RECORDLIST&,Microsoft.Isam.Esent.Interop.IntersectIndexesGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetMakeKey(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.Byte[],System.Int32,Microsoft.Isam.Esent.Interop.MakeKeyGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetMakeKey(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.Byte[],System.Int32,Microsoft.Isam.Esent.Interop.MakeKeyGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetMakeKey(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.Byte[],System.Int32,Microsoft.Isam.Esent.Interop.MakeKeyGrbit)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetMove(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_Move,Microsoft.Isam.Esent.Interop.MoveGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetMove(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_Move,Microsoft.Isam.Esent.Interop.MoveGrbit)", MessageId = "num", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetMove(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_Move,Microsoft.Isam.Esent.Interop.MoveGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetMove(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_Move,Microsoft.Isam.Esent.Interop.MoveGrbit)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetMove(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.Int32,Microsoft.Isam.Esent.Interop.MoveGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetMove(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.Int32,Microsoft.Isam.Esent.Interop.MoveGrbit)", MessageId = "num", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetMove(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.Int32,Microsoft.Isam.Esent.Interop.MoveGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetMove(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.Int32,Microsoft.Isam.Esent.Interop.MoveGrbit)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetOpenDatabase(Microsoft.Isam.Esent.Interop.JET_SESID,System.String,System.String,Microsoft.Isam.Esent.Interop.JET_DBID&,Microsoft.Isam.Esent.Interop.OpenDatabaseGrbit)", MessageId = "dbid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetOpenDatabase(Microsoft.Isam.Esent.Interop.JET_SESID,System.String,System.String,Microsoft.Isam.Esent.Interop.JET_DBID&,Microsoft.Isam.Esent.Interop.OpenDatabaseGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetOpenDatabase(Microsoft.Isam.Esent.Interop.JET_SESID,System.String,System.String,Microsoft.Isam.Esent.Interop.JET_DBID&,Microsoft.Isam.Esent.Interop.OpenDatabaseGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetOpenTable(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.String,System.Byte[],System.Int32,Microsoft.Isam.Esent.Interop.OpenTableGrbit,Microsoft.Isam.Esent.Interop.JET_TABLEID&)", MessageId = "dbid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetOpenTable(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.String,System.Byte[],System.Int32,Microsoft.Isam.Esent.Interop.OpenTableGrbit,Microsoft.Isam.Esent.Interop.JET_TABLEID&)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetOpenTable(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.String,System.Byte[],System.Int32,Microsoft.Isam.Esent.Interop.OpenTableGrbit,Microsoft.Isam.Esent.Interop.JET_TABLEID&)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetOpenTable(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.String,System.Byte[],System.Int32,Microsoft.Isam.Esent.Interop.OpenTableGrbit,Microsoft.Isam.Esent.Interop.JET_TABLEID&)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetOpenTable(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.String,System.Byte[],System.Int32,Microsoft.Isam.Esent.Interop.OpenTableGrbit,Microsoft.Isam.Esent.Interop.JET_TABLEID&)", MessageId = "tablename", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetOpenTempTable(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_COLUMNDEF[],System.Int32,Microsoft.Isam.Esent.Interop.TempTableGrbit,Microsoft.Isam.Esent.Interop.JET_TABLEID&,Microsoft.Isam.Esent.Interop.JET_COLUMNID[])", MessageId = "columnids", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetOpenTempTable(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_COLUMNDEF[],System.Int32,Microsoft.Isam.Esent.Interop.TempTableGrbit,Microsoft.Isam.Esent.Interop.JET_TABLEID&,Microsoft.Isam.Esent.Interop.JET_COLUMNID[])", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetOpenTempTable(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_COLUMNDEF[],System.Int32,Microsoft.Isam.Esent.Interop.TempTableGrbit,Microsoft.Isam.Esent.Interop.JET_TABLEID&,Microsoft.Isam.Esent.Interop.JET_COLUMNID[])", MessageId = "num", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetOpenTempTable(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_COLUMNDEF[],System.Int32,Microsoft.Isam.Esent.Interop.TempTableGrbit,Microsoft.Isam.Esent.Interop.JET_TABLEID&,Microsoft.Isam.Esent.Interop.JET_COLUMNID[])", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetOpenTempTable(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_COLUMNDEF[],System.Int32,Microsoft.Isam.Esent.Interop.TempTableGrbit,Microsoft.Isam.Esent.Interop.JET_TABLEID&,Microsoft.Isam.Esent.Interop.JET_COLUMNID[])", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetOpenTempTable2(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_COLUMNDEF[],System.Int32,System.Int32,Microsoft.Isam.Esent.Interop.TempTableGrbit,Microsoft.Isam.Esent.Interop.JET_TABLEID&,Microsoft.Isam.Esent.Interop.JET_COLUMNID[])", MessageId = "columnids", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetOpenTempTable2(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_COLUMNDEF[],System.Int32,System.Int32,Microsoft.Isam.Esent.Interop.TempTableGrbit,Microsoft.Isam.Esent.Interop.JET_TABLEID&,Microsoft.Isam.Esent.Interop.JET_COLUMNID[])", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetOpenTempTable2(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_COLUMNDEF[],System.Int32,System.Int32,Microsoft.Isam.Esent.Interop.TempTableGrbit,Microsoft.Isam.Esent.Interop.JET_TABLEID&,Microsoft.Isam.Esent.Interop.JET_COLUMNID[])", MessageId = "lcid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetOpenTempTable2(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_COLUMNDEF[],System.Int32,System.Int32,Microsoft.Isam.Esent.Interop.TempTableGrbit,Microsoft.Isam.Esent.Interop.JET_TABLEID&,Microsoft.Isam.Esent.Interop.JET_COLUMNID[])", MessageId = "num", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetOpenTempTable2(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_COLUMNDEF[],System.Int32,System.Int32,Microsoft.Isam.Esent.Interop.TempTableGrbit,Microsoft.Isam.Esent.Interop.JET_TABLEID&,Microsoft.Isam.Esent.Interop.JET_COLUMNID[])", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetOpenTempTable2(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_COLUMNDEF[],System.Int32,System.Int32,Microsoft.Isam.Esent.Interop.TempTableGrbit,Microsoft.Isam.Esent.Interop.JET_TABLEID&,Microsoft.Isam.Esent.Interop.JET_COLUMNID[])", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetOpenTempTable3(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_COLUMNDEF[],System.Int32,Microsoft.Isam.Esent.Interop.JET_UNICODEINDEX,Microsoft.Isam.Esent.Interop.TempTableGrbit,Microsoft.Isam.Esent.Interop.JET_TABLEID&,Microsoft.Isam.Esent.Interop.JET_COLUMNID[])", MessageId = "columnids", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetOpenTempTable3(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_COLUMNDEF[],System.Int32,Microsoft.Isam.Esent.Interop.JET_UNICODEINDEX,Microsoft.Isam.Esent.Interop.TempTableGrbit,Microsoft.Isam.Esent.Interop.JET_TABLEID&,Microsoft.Isam.Esent.Interop.JET_COLUMNID[])", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetOpenTempTable3(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_COLUMNDEF[],System.Int32,Microsoft.Isam.Esent.Interop.JET_UNICODEINDEX,Microsoft.Isam.Esent.Interop.TempTableGrbit,Microsoft.Isam.Esent.Interop.JET_TABLEID&,Microsoft.Isam.Esent.Interop.JET_COLUMNID[])", MessageId = "num", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetOpenTempTable3(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_COLUMNDEF[],System.Int32,Microsoft.Isam.Esent.Interop.JET_UNICODEINDEX,Microsoft.Isam.Esent.Interop.TempTableGrbit,Microsoft.Isam.Esent.Interop.JET_TABLEID&,Microsoft.Isam.Esent.Interop.JET_COLUMNID[])", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetOpenTempTable3(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_COLUMNDEF[],System.Int32,Microsoft.Isam.Esent.Interop.JET_UNICODEINDEX,Microsoft.Isam.Esent.Interop.TempTableGrbit,Microsoft.Isam.Esent.Interop.JET_TABLEID&,Microsoft.Isam.Esent.Interop.JET_COLUMNID[])", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetOpenTempTable3(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_COLUMNDEF[],System.Int32,Microsoft.Isam.Esent.Interop.JET_UNICODEINDEX,Microsoft.Isam.Esent.Interop.TempTableGrbit,Microsoft.Isam.Esent.Interop.JET_TABLEID&,Microsoft.Isam.Esent.Interop.JET_COLUMNID[])", MessageId = "unicodeindex", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetOSSnapshotFreeze(Microsoft.Isam.Esent.Interop.JET_OSSNAPID,System.Int32&,Microsoft.Isam.Esent.Interop.JET_INSTANCE_INFO[]&,Microsoft.Isam.Esent.Interop.SnapshotFreezeGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetOSSnapshotFreeze(Microsoft.Isam.Esent.Interop.JET_OSSNAPID,System.Int32&,Microsoft.Isam.Esent.Interop.JET_INSTANCE_INFO[]&,Microsoft.Isam.Esent.Interop.SnapshotFreezeGrbit)", MessageId = "num", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetOSSnapshotPrepare(Microsoft.Isam.Esent.Interop.JET_OSSNAPID&,Microsoft.Isam.Esent.Interop.SnapshotPrepareGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetOSSnapshotThaw(Microsoft.Isam.Esent.Interop.JET_OSSNAPID,Microsoft.Isam.Esent.Interop.SnapshotThawGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetPrepareUpdate(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_prep)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetPrepareUpdate(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_prep)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetRegisterCallback(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_cbtyp,Microsoft.Isam.Esent.Interop.JET_CALLBACK,System.IntPtr,Microsoft.Isam.Esent.Interop.JET_HANDLE&)", MessageId = "cbtyp", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetRegisterCallback(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_cbtyp,Microsoft.Isam.Esent.Interop.JET_CALLBACK,System.IntPtr,Microsoft.Isam.Esent.Interop.JET_HANDLE&)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetRegisterCallback(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_cbtyp,Microsoft.Isam.Esent.Interop.JET_CALLBACK,System.IntPtr,Microsoft.Isam.Esent.Interop.JET_HANDLE&)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetRenameColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.String,System.String,Microsoft.Isam.Esent.Interop.RenameColumnGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetRenameColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.String,System.String,Microsoft.Isam.Esent.Interop.RenameColumnGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetRenameColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.String,System.String,Microsoft.Isam.Esent.Interop.RenameColumnGrbit)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetRenameTable(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.String,System.String)", MessageId = "dbid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetRenameTable(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.String,System.String)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetResetSessionContext(Microsoft.Isam.Esent.Interop.JET_SESID)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetResetTableSequential(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.ResetTableSequentialGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetResetTableSequential(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.ResetTableSequentialGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetResetTableSequential(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.ResetTableSequentialGrbit)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetRetrieveColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.Byte[],System.Int32,System.Int32&,Microsoft.Isam.Esent.Interop.RetrieveColumnGrbit,Microsoft.Isam.Esent.Interop.JET_RETINFO)", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetRetrieveColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.Byte[],System.Int32,System.Int32&,Microsoft.Isam.Esent.Interop.RetrieveColumnGrbit,Microsoft.Isam.Esent.Interop.JET_RETINFO)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetRetrieveColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.Byte[],System.Int32,System.Int32&,Microsoft.Isam.Esent.Interop.RetrieveColumnGrbit,Microsoft.Isam.Esent.Interop.JET_RETINFO)", MessageId = "retinfo", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetRetrieveColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.Byte[],System.Int32,System.Int32&,Microsoft.Isam.Esent.Interop.RetrieveColumnGrbit,Microsoft.Isam.Esent.Interop.JET_RETINFO)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetRetrieveColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.Byte[],System.Int32,System.Int32&,Microsoft.Isam.Esent.Interop.RetrieveColumnGrbit,Microsoft.Isam.Esent.Interop.JET_RETINFO)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetRetrieveColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.Byte[],System.Int32,System.Int32,System.Int32&,Microsoft.Isam.Esent.Interop.RetrieveColumnGrbit,Microsoft.Isam.Esent.Interop.JET_RETINFO)", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetRetrieveColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.Byte[],System.Int32,System.Int32,System.Int32&,Microsoft.Isam.Esent.Interop.RetrieveColumnGrbit,Microsoft.Isam.Esent.Interop.JET_RETINFO)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetRetrieveColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.Byte[],System.Int32,System.Int32,System.Int32&,Microsoft.Isam.Esent.Interop.RetrieveColumnGrbit,Microsoft.Isam.Esent.Interop.JET_RETINFO)", MessageId = "retinfo", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetRetrieveColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.Byte[],System.Int32,System.Int32,System.Int32&,Microsoft.Isam.Esent.Interop.RetrieveColumnGrbit,Microsoft.Isam.Esent.Interop.JET_RETINFO)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetRetrieveColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.Byte[],System.Int32,System.Int32,System.Int32&,Microsoft.Isam.Esent.Interop.RetrieveColumnGrbit,Microsoft.Isam.Esent.Interop.JET_RETINFO)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetRetrieveColumns(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_RETRIEVECOLUMN[],System.Int32)", MessageId = "num", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetRetrieveColumns(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_RETRIEVECOLUMN[],System.Int32)", MessageId = "retrievecolumns", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetRetrieveColumns(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_RETRIEVECOLUMN[],System.Int32)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetRetrieveColumns(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_RETRIEVECOLUMN[],System.Int32)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetRetrieveKey(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.Byte[],System.Int32,System.Int32&,Microsoft.Isam.Esent.Interop.RetrieveKeyGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetRetrieveKey(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.Byte[],System.Int32,System.Int32&,Microsoft.Isam.Esent.Interop.RetrieveKeyGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetRetrieveKey(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.Byte[],System.Int32,System.Int32&,Microsoft.Isam.Esent.Interop.RetrieveKeyGrbit)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetRollback(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.RollbackTransactionGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetRollback(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.RollbackTransactionGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetSeek(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.SeekGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetSeek(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.SeekGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetSeek(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.SeekGrbit)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetSetColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.Byte[],System.Int32,Microsoft.Isam.Esent.Interop.SetColumnGrbit,Microsoft.Isam.Esent.Interop.JET_SETINFO)", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetSetColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.Byte[],System.Int32,Microsoft.Isam.Esent.Interop.SetColumnGrbit,Microsoft.Isam.Esent.Interop.JET_SETINFO)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetSetColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.Byte[],System.Int32,Microsoft.Isam.Esent.Interop.SetColumnGrbit,Microsoft.Isam.Esent.Interop.JET_SETINFO)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetSetColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.Byte[],System.Int32,Microsoft.Isam.Esent.Interop.SetColumnGrbit,Microsoft.Isam.Esent.Interop.JET_SETINFO)", MessageId = "setinfo", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetSetColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.Byte[],System.Int32,Microsoft.Isam.Esent.Interop.SetColumnGrbit,Microsoft.Isam.Esent.Interop.JET_SETINFO)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetSetColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.Byte[],System.Int32,System.Int32,Microsoft.Isam.Esent.Interop.SetColumnGrbit,Microsoft.Isam.Esent.Interop.JET_SETINFO)", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetSetColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.Byte[],System.Int32,System.Int32,Microsoft.Isam.Esent.Interop.SetColumnGrbit,Microsoft.Isam.Esent.Interop.JET_SETINFO)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetSetColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.Byte[],System.Int32,System.Int32,Microsoft.Isam.Esent.Interop.SetColumnGrbit,Microsoft.Isam.Esent.Interop.JET_SETINFO)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetSetColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.Byte[],System.Int32,System.Int32,Microsoft.Isam.Esent.Interop.SetColumnGrbit,Microsoft.Isam.Esent.Interop.JET_SETINFO)", MessageId = "setinfo", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetSetColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.Byte[],System.Int32,System.Int32,Microsoft.Isam.Esent.Interop.SetColumnGrbit,Microsoft.Isam.Esent.Interop.JET_SETINFO)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetSetColumnDefaultValue(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.String,System.String,System.Byte[],System.Int32,Microsoft.Isam.Esent.Interop.SetColumnDefaultValueGrbit)", MessageId = "dbid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetSetColumnDefaultValue(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.String,System.String,System.Byte[],System.Int32,Microsoft.Isam.Esent.Interop.SetColumnDefaultValueGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetSetColumnDefaultValue(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.String,System.String,System.Byte[],System.Int32,Microsoft.Isam.Esent.Interop.SetColumnDefaultValueGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetSetColumns(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_SETCOLUMN[],System.Int32)", MessageId = "num", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetSetColumns(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_SETCOLUMN[],System.Int32)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetSetColumns(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_SETCOLUMN[],System.Int32)", MessageId = "setcolumns", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetSetColumns(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_SETCOLUMN[],System.Int32)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetSetCurrentIndex(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.String)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetSetCurrentIndex(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.String)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetSetCurrentIndex2(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.String,Microsoft.Isam.Esent.Interop.SetCurrentIndexGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetSetCurrentIndex2(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.String,Microsoft.Isam.Esent.Interop.SetCurrentIndexGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetSetCurrentIndex2(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.String,Microsoft.Isam.Esent.Interop.SetCurrentIndexGrbit)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetSetCurrentIndex3(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.String,Microsoft.Isam.Esent.Interop.SetCurrentIndexGrbit,System.Int32)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetSetCurrentIndex3(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.String,Microsoft.Isam.Esent.Interop.SetCurrentIndexGrbit,System.Int32)", MessageId = "itag", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetSetCurrentIndex3(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.String,Microsoft.Isam.Esent.Interop.SetCurrentIndexGrbit,System.Int32)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetSetCurrentIndex3(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.String,Microsoft.Isam.Esent.Interop.SetCurrentIndexGrbit,System.Int32)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetSetCurrentIndex4(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.String,Microsoft.Isam.Esent.Interop.JET_INDEXID,Microsoft.Isam.Esent.Interop.SetCurrentIndexGrbit,System.Int32)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetSetCurrentIndex4(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.String,Microsoft.Isam.Esent.Interop.JET_INDEXID,Microsoft.Isam.Esent.Interop.SetCurrentIndexGrbit,System.Int32)", MessageId = "indexid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetSetCurrentIndex4(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.String,Microsoft.Isam.Esent.Interop.JET_INDEXID,Microsoft.Isam.Esent.Interop.SetCurrentIndexGrbit,System.Int32)", MessageId = "itag", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetSetCurrentIndex4(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.String,Microsoft.Isam.Esent.Interop.JET_INDEXID,Microsoft.Isam.Esent.Interop.SetCurrentIndexGrbit,System.Int32)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetSetCurrentIndex4(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.String,Microsoft.Isam.Esent.Interop.JET_INDEXID,Microsoft.Isam.Esent.Interop.SetCurrentIndexGrbit,System.Int32)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetSetDatabaseSize(Microsoft.Isam.Esent.Interop.JET_SESID,System.String,System.Int32,System.Int32&)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetSetIndexRange(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.SetIndexRangeGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetSetIndexRange(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.SetIndexRangeGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetSetIndexRange(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.SetIndexRangeGrbit)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetSetLS(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_LS,Microsoft.Isam.Esent.Interop.LsGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetSetLS(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_LS,Microsoft.Isam.Esent.Interop.LsGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetSetLS(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_LS,Microsoft.Isam.Esent.Interop.LsGrbit)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetSetSessionContext(Microsoft.Isam.Esent.Interop.JET_SESID,System.IntPtr)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetSetSystemParameter(Microsoft.Isam.Esent.Interop.JET_INSTANCE,Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_param,Microsoft.Isam.Esent.Interop.JET_CALLBACK,System.String)", MessageId = "param", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetSetSystemParameter(Microsoft.Isam.Esent.Interop.JET_INSTANCE,Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_param,Microsoft.Isam.Esent.Interop.JET_CALLBACK,System.String)", MessageId = "paramid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetSetSystemParameter(Microsoft.Isam.Esent.Interop.JET_INSTANCE,Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_param,Microsoft.Isam.Esent.Interop.JET_CALLBACK,System.String)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetSetSystemParameter(Microsoft.Isam.Esent.Interop.JET_INSTANCE,Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_param,System.Int32,System.String)", MessageId = "param", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetSetSystemParameter(Microsoft.Isam.Esent.Interop.JET_INSTANCE,Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_param,System.Int32,System.String)", MessageId = "paramid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetSetSystemParameter(Microsoft.Isam.Esent.Interop.JET_INSTANCE,Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_param,System.Int32,System.String)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetSetTableSequential(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.SetTableSequentialGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetSetTableSequential(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.SetTableSequentialGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetSetTableSequential(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.SetTableSequentialGrbit)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetTerm2(Microsoft.Isam.Esent.Interop.JET_INSTANCE,Microsoft.Isam.Esent.Interop.TermGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetUnregisterCallback(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_cbtyp,Microsoft.Isam.Esent.Interop.JET_HANDLE)", MessageId = "cbtyp", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetUnregisterCallback(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_cbtyp,Microsoft.Isam.Esent.Interop.JET_HANDLE)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetUnregisterCallback(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_cbtyp,Microsoft.Isam.Esent.Interop.JET_HANDLE)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetUpdate(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetUpdate(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetUpdate(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.Byte[],System.Int32,System.Int32&)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetUpdate(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.Byte[],System.Int32,System.Int32&)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#MakeKey(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.Boolean,Microsoft.Isam.Esent.Interop.MakeKeyGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#MakeKey(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.Boolean,Microsoft.Isam.Esent.Interop.MakeKeyGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#MakeKey(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.Boolean,Microsoft.Isam.Esent.Interop.MakeKeyGrbit)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#MakeKey(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.Byte,Microsoft.Isam.Esent.Interop.MakeKeyGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#MakeKey(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.Byte,Microsoft.Isam.Esent.Interop.MakeKeyGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#MakeKey(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.Byte,Microsoft.Isam.Esent.Interop.MakeKeyGrbit)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#MakeKey(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.Byte[],Microsoft.Isam.Esent.Interop.MakeKeyGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#MakeKey(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.Byte[],Microsoft.Isam.Esent.Interop.MakeKeyGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#MakeKey(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.Byte[],Microsoft.Isam.Esent.Interop.MakeKeyGrbit)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#MakeKey(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.DateTime,Microsoft.Isam.Esent.Interop.MakeKeyGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#MakeKey(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.DateTime,Microsoft.Isam.Esent.Interop.MakeKeyGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#MakeKey(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.DateTime,Microsoft.Isam.Esent.Interop.MakeKeyGrbit)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#MakeKey(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.Double,Microsoft.Isam.Esent.Interop.MakeKeyGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#MakeKey(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.Double,Microsoft.Isam.Esent.Interop.MakeKeyGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#MakeKey(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.Double,Microsoft.Isam.Esent.Interop.MakeKeyGrbit)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#MakeKey(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.Guid,Microsoft.Isam.Esent.Interop.MakeKeyGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#MakeKey(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.Guid,Microsoft.Isam.Esent.Interop.MakeKeyGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#MakeKey(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.Guid,Microsoft.Isam.Esent.Interop.MakeKeyGrbit)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#MakeKey(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.Int16,Microsoft.Isam.Esent.Interop.MakeKeyGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#MakeKey(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.Int16,Microsoft.Isam.Esent.Interop.MakeKeyGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#MakeKey(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.Int16,Microsoft.Isam.Esent.Interop.MakeKeyGrbit)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#MakeKey(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.Int32,Microsoft.Isam.Esent.Interop.MakeKeyGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#MakeKey(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.Int32,Microsoft.Isam.Esent.Interop.MakeKeyGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#MakeKey(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.Int32,Microsoft.Isam.Esent.Interop.MakeKeyGrbit)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#MakeKey(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.Int64,Microsoft.Isam.Esent.Interop.MakeKeyGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#MakeKey(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.Int64,Microsoft.Isam.Esent.Interop.MakeKeyGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#MakeKey(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.Int64,Microsoft.Isam.Esent.Interop.MakeKeyGrbit)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#MakeKey(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.Single,Microsoft.Isam.Esent.Interop.MakeKeyGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#MakeKey(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.Single,Microsoft.Isam.Esent.Interop.MakeKeyGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#MakeKey(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.Single,Microsoft.Isam.Esent.Interop.MakeKeyGrbit)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#MakeKey(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.String,System.Text.Encoding,Microsoft.Isam.Esent.Interop.MakeKeyGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#MakeKey(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.String,System.Text.Encoding,Microsoft.Isam.Esent.Interop.MakeKeyGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#MakeKey(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.String,System.Text.Encoding,Microsoft.Isam.Esent.Interop.MakeKeyGrbit)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#MakeKey(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.UInt16,Microsoft.Isam.Esent.Interop.MakeKeyGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#MakeKey(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.UInt16,Microsoft.Isam.Esent.Interop.MakeKeyGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#MakeKey(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.UInt16,Microsoft.Isam.Esent.Interop.MakeKeyGrbit)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#MakeKey(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.UInt32,Microsoft.Isam.Esent.Interop.MakeKeyGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#MakeKey(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.UInt32,Microsoft.Isam.Esent.Interop.MakeKeyGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#MakeKey(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.UInt32,Microsoft.Isam.Esent.Interop.MakeKeyGrbit)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#MakeKey(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.UInt64,Microsoft.Isam.Esent.Interop.MakeKeyGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#MakeKey(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.UInt64,Microsoft.Isam.Esent.Interop.MakeKeyGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#MakeKey(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.UInt64,Microsoft.Isam.Esent.Interop.MakeKeyGrbit)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#MoveAfterLast(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#MoveAfterLast(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#MoveBeforeFirst(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#MoveBeforeFirst(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#ResetIndexRange(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#ResetIndexRange(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID)", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,Microsoft.Isam.Esent.Interop.RetrieveColumnGrbit,Microsoft.Isam.Esent.Interop.JET_RETINFO)", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,Microsoft.Isam.Esent.Interop.RetrieveColumnGrbit,Microsoft.Isam.Esent.Interop.JET_RETINFO)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,Microsoft.Isam.Esent.Interop.RetrieveColumnGrbit,Microsoft.Isam.Esent.Interop.JET_RETINFO)", MessageId = "retinfo", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,Microsoft.Isam.Esent.Interop.RetrieveColumnGrbit,Microsoft.Isam.Esent.Interop.JET_RETINFO)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,Microsoft.Isam.Esent.Interop.RetrieveColumnGrbit,Microsoft.Isam.Esent.Interop.JET_RETINFO)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsBoolean(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID)", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsBoolean(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsBoolean(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsBoolean(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,Microsoft.Isam.Esent.Interop.RetrieveColumnGrbit)", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsBoolean(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,Microsoft.Isam.Esent.Interop.RetrieveColumnGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsBoolean(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,Microsoft.Isam.Esent.Interop.RetrieveColumnGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsBoolean(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,Microsoft.Isam.Esent.Interop.RetrieveColumnGrbit)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsByte(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID)", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsByte(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsByte(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsByte(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,Microsoft.Isam.Esent.Interop.RetrieveColumnGrbit)", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsByte(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,Microsoft.Isam.Esent.Interop.RetrieveColumnGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsByte(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,Microsoft.Isam.Esent.Interop.RetrieveColumnGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsByte(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,Microsoft.Isam.Esent.Interop.RetrieveColumnGrbit)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsDateTime(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID)", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsDateTime(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsDateTime(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsDateTime(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,Microsoft.Isam.Esent.Interop.RetrieveColumnGrbit)", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsDateTime(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,Microsoft.Isam.Esent.Interop.RetrieveColumnGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsDateTime(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,Microsoft.Isam.Esent.Interop.RetrieveColumnGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsDateTime(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,Microsoft.Isam.Esent.Interop.RetrieveColumnGrbit)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsDouble(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID)", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsDouble(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsDouble(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsDouble(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,Microsoft.Isam.Esent.Interop.RetrieveColumnGrbit)", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsDouble(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,Microsoft.Isam.Esent.Interop.RetrieveColumnGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsDouble(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,Microsoft.Isam.Esent.Interop.RetrieveColumnGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsDouble(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,Microsoft.Isam.Esent.Interop.RetrieveColumnGrbit)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsFloat(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID)", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsFloat(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsFloat(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsFloat(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,Microsoft.Isam.Esent.Interop.RetrieveColumnGrbit)", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsFloat(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,Microsoft.Isam.Esent.Interop.RetrieveColumnGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsFloat(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,Microsoft.Isam.Esent.Interop.RetrieveColumnGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsFloat(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,Microsoft.Isam.Esent.Interop.RetrieveColumnGrbit)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsGuid(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID)", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsGuid(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsGuid(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsGuid(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,Microsoft.Isam.Esent.Interop.RetrieveColumnGrbit)", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsGuid(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,Microsoft.Isam.Esent.Interop.RetrieveColumnGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsGuid(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,Microsoft.Isam.Esent.Interop.RetrieveColumnGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsGuid(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,Microsoft.Isam.Esent.Interop.RetrieveColumnGrbit)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsInt16(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID)", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsInt16(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsInt16(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsInt16(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,Microsoft.Isam.Esent.Interop.RetrieveColumnGrbit)", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsInt16(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,Microsoft.Isam.Esent.Interop.RetrieveColumnGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsInt16(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,Microsoft.Isam.Esent.Interop.RetrieveColumnGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsInt16(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,Microsoft.Isam.Esent.Interop.RetrieveColumnGrbit)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsInt32(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID)", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsInt32(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsInt32(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsInt32(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,Microsoft.Isam.Esent.Interop.RetrieveColumnGrbit)", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsInt32(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,Microsoft.Isam.Esent.Interop.RetrieveColumnGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsInt32(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,Microsoft.Isam.Esent.Interop.RetrieveColumnGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsInt32(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,Microsoft.Isam.Esent.Interop.RetrieveColumnGrbit)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsInt64(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID)", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsInt64(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsInt64(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsInt64(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,Microsoft.Isam.Esent.Interop.RetrieveColumnGrbit)", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsInt64(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,Microsoft.Isam.Esent.Interop.RetrieveColumnGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsInt64(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,Microsoft.Isam.Esent.Interop.RetrieveColumnGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsInt64(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,Microsoft.Isam.Esent.Interop.RetrieveColumnGrbit)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsString(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID)", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsString(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsString(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsString(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.Text.Encoding)", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsString(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.Text.Encoding)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsString(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.Text.Encoding)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsString(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.Text.Encoding,Microsoft.Isam.Esent.Interop.RetrieveColumnGrbit)", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsString(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.Text.Encoding,Microsoft.Isam.Esent.Interop.RetrieveColumnGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsString(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.Text.Encoding,Microsoft.Isam.Esent.Interop.RetrieveColumnGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsString(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.Text.Encoding,Microsoft.Isam.Esent.Interop.RetrieveColumnGrbit)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsUInt16(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID)", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsUInt16(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsUInt16(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsUInt16(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,Microsoft.Isam.Esent.Interop.RetrieveColumnGrbit)", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsUInt16(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,Microsoft.Isam.Esent.Interop.RetrieveColumnGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsUInt16(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,Microsoft.Isam.Esent.Interop.RetrieveColumnGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsUInt16(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,Microsoft.Isam.Esent.Interop.RetrieveColumnGrbit)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsUInt32(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID)", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsUInt32(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsUInt32(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsUInt32(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,Microsoft.Isam.Esent.Interop.RetrieveColumnGrbit)", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsUInt32(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,Microsoft.Isam.Esent.Interop.RetrieveColumnGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsUInt32(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,Microsoft.Isam.Esent.Interop.RetrieveColumnGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsUInt32(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,Microsoft.Isam.Esent.Interop.RetrieveColumnGrbit)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsUInt64(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID)", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsUInt64(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsUInt64(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsUInt64(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,Microsoft.Isam.Esent.Interop.RetrieveColumnGrbit)", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsUInt64(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,Microsoft.Isam.Esent.Interop.RetrieveColumnGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsUInt64(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,Microsoft.Isam.Esent.Interop.RetrieveColumnGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnAsUInt64(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,Microsoft.Isam.Esent.Interop.RetrieveColumnGrbit)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumns(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.ColumnValue[])", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumns(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.ColumnValue[])", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnSize(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID)", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnSize(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnSize(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnSize(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.Int32,Microsoft.Isam.Esent.Interop.RetrieveColumnGrbit)", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnSize(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.Int32,Microsoft.Isam.Esent.Interop.RetrieveColumnGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnSize(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.Int32,Microsoft.Isam.Esent.Interop.RetrieveColumnGrbit)", MessageId = "itag", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnSize(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.Int32,Microsoft.Isam.Esent.Interop.RetrieveColumnGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveColumnSize(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.Int32,Microsoft.Isam.Esent.Interop.RetrieveColumnGrbit)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveKey(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.RetrieveKeyGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveKey(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.RetrieveKeyGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#RetrieveKey(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.RetrieveKeyGrbit)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#SerializeObjectToColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.Object)", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#SerializeObjectToColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.Object)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#SerializeObjectToColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.Object)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#SetColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.Boolean)", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#SetColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.Boolean)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#SetColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.Boolean)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#SetColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.Byte)", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#SetColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.Byte)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#SetColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.Byte)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#SetColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.Byte[])", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#SetColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.Byte[])", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#SetColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.Byte[])", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#SetColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.Byte[],Microsoft.Isam.Esent.Interop.SetColumnGrbit)", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#SetColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.Byte[],Microsoft.Isam.Esent.Interop.SetColumnGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#SetColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.Byte[],Microsoft.Isam.Esent.Interop.SetColumnGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#SetColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.Byte[],Microsoft.Isam.Esent.Interop.SetColumnGrbit)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#SetColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.DateTime)", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#SetColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.DateTime)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#SetColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.DateTime)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#SetColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.Double)", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#SetColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.Double)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#SetColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.Double)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#SetColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.Guid)", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#SetColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.Guid)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#SetColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.Guid)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#SetColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.Int16)", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#SetColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.Int16)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#SetColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.Int16)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#SetColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.Int32)", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#SetColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.Int32)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#SetColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.Int32)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#SetColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.Int64)", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#SetColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.Int64)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#SetColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.Int64)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#SetColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.Single)", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#SetColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.Single)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#SetColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.Single)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#SetColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.String,System.Text.Encoding)", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#SetColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.String,System.Text.Encoding)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#SetColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.String,System.Text.Encoding)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#SetColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.String,System.Text.Encoding,Microsoft.Isam.Esent.Interop.SetColumnGrbit)", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#SetColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.String,System.Text.Encoding,Microsoft.Isam.Esent.Interop.SetColumnGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#SetColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.String,System.Text.Encoding,Microsoft.Isam.Esent.Interop.SetColumnGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#SetColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.String,System.Text.Encoding,Microsoft.Isam.Esent.Interop.SetColumnGrbit)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#SetColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.UInt16)", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#SetColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.UInt16)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#SetColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.UInt16)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#SetColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.UInt32)", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#SetColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.UInt32)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#SetColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.UInt32)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#SetColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.UInt64)", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#SetColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.UInt64)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#SetColumn(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID,System.UInt64)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#SetColumns(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.ColumnValue[])", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#SetColumns(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.ColumnValue[])", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#TryGetLock(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.GetLockGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#TryGetLock(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.GetLockGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#TryGetLock(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.GetLockGrbit)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#TryMove(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_Move,Microsoft.Isam.Esent.Interop.MoveGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#TryMove(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_Move,Microsoft.Isam.Esent.Interop.MoveGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#TryMove(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_Move,Microsoft.Isam.Esent.Interop.MoveGrbit)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#TryMoveFirst(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#TryMoveFirst(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#TryMoveLast(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#TryMoveLast(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#TryMoveNext(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#TryMoveNext(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#TryMovePrevious(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#TryMovePrevious(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#TryOpenTable(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.String,Microsoft.Isam.Esent.Interop.OpenTableGrbit,Microsoft.Isam.Esent.Interop.JET_TABLEID&)", MessageId = "dbid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#TryOpenTable(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.String,Microsoft.Isam.Esent.Interop.OpenTableGrbit,Microsoft.Isam.Esent.Interop.JET_TABLEID&)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#TryOpenTable(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.String,Microsoft.Isam.Esent.Interop.OpenTableGrbit,Microsoft.Isam.Esent.Interop.JET_TABLEID&)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#TryOpenTable(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.String,Microsoft.Isam.Esent.Interop.OpenTableGrbit,Microsoft.Isam.Esent.Interop.JET_TABLEID&)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#TryOpenTable(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.String,Microsoft.Isam.Esent.Interop.OpenTableGrbit,Microsoft.Isam.Esent.Interop.JET_TABLEID&)", MessageId = "tablename", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#TrySeek(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.SeekGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#TrySeek(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.SeekGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#TrySeek(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.SeekGrbit)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#TrySetIndexRange(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.SetIndexRangeGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#TrySetIndexRange(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.SetIndexRangeGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#TrySetIndexRange(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.SetIndexRangeGrbit)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.ColumndefGrbit.#ColumnAutoincrement", MessageId = "Autoincrement", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.ColumndefGrbit.#ColumnMultiValued", MessageId = "Multi", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.ColumndefGrbit.#ColumnUnversioned", MessageId = "Unversioned", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.ColumnInfo.#Coltyp", MessageId = "Coltyp", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.ColumnInfo.#Columnid", MessageId = "Columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.ColumnInfo.#Grbit", MessageId = "Grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.ColumnStream.#.ctor(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID)", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.ColumnStream.#.ctor(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.ColumnStream.#.ctor(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_COLUMNID)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.ColumnStream.#Itag", MessageId = "Itag", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.ColumnValue.#Columnid", MessageId = "Columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.ColumnValue.#ItagSequence", MessageId = "Itag", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.ColumnValue.#RetrieveGrbit", MessageId = "Grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.ColumnValue.#SetGrbit", MessageId = "Grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Conversions.#CompareOptionsFromLCMapFlags(System.UInt32)", MessageId = "lcmap", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Conversions.#ConvertDoubleToDateTime(System.Double)", MessageId = "d", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.CreateIndexGrbit.#IndexUnversioned", MessageId = "Unversioned", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.IndexInfo.#Grbit", MessageId = "Grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.IndexSegment.#Coltyp", MessageId = "Coltyp", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Instance.#.ctor(System.String,System.String,Microsoft.Isam.Esent.Interop.TermGrbit)", MessageId = "Grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Instance.#TermGrbit", MessageId = "Grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Instance.#Init(Microsoft.Isam.Esent.Interop.InitGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Instance.#Init(Microsoft.Isam.Esent.Interop.JET_RSTINFO,Microsoft.Isam.Esent.Interop.InitGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.InstanceParameters.#MaxVerPages", MessageId = "Ver", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.InstanceParameters.#PreferredVerPages", MessageId = "Ver", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_BKINFO.#bklogtimeMark", MessageId = "bklogtime", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_BKINFO.#lgposMark", MessageId = "lgpos", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_BKINFO.#op_Equality(Microsoft.Isam.Esent.Interop.JET_BKINFO,Microsoft.Isam.Esent.Interop.JET_BKINFO)", MessageId = "rhs", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_BKINFO.#op_Inequality(Microsoft.Isam.Esent.Interop.JET_BKINFO,Microsoft.Isam.Esent.Interop.JET_BKINFO)", MessageId = "rhs", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_BKLOGTIME.#op_Equality(Microsoft.Isam.Esent.Interop.JET_BKLOGTIME,Microsoft.Isam.Esent.Interop.JET_BKLOGTIME)", MessageId = "rhs", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_BKLOGTIME.#op_Inequality(Microsoft.Isam.Esent.Interop.JET_BKLOGTIME,Microsoft.Isam.Esent.Interop.JET_BKLOGTIME)", MessageId = "rhs", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_COLUMNBASE.#cbMax", MessageId = "cb", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_COLUMNBASE.#coltyp", MessageId = "coltyp", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_COLUMNBASE.#columnid", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_COLUMNBASE.#grbit", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_COLUMNBASE.#szBaseColumnName", MessageId = "sz", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_COLUMNBASE.#szBaseTableName", MessageId = "sz", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_COLUMNCREATE.#cbDefault", MessageId = "cb", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_COLUMNCREATE.#cbMax", MessageId = "cb", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_COLUMNCREATE.#coltyp", MessageId = "coltyp", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_COLUMNCREATE.#columnid", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_COLUMNCREATE.#grbit", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_COLUMNCREATE.#szColumnName", MessageId = "sz", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_COLUMNDEF.#cbMax", MessageId = "cb", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_COLUMNDEF.#coltyp", MessageId = "coltyp", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_COLUMNDEF.#columnid", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_COLUMNDEF.#grbit", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_COLUMNID.#op_Equality(Microsoft.Isam.Esent.Interop.JET_COLUMNID,Microsoft.Isam.Esent.Interop.JET_COLUMNID)", MessageId = "rhs", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_COLUMNID.#op_GreaterThan(Microsoft.Isam.Esent.Interop.JET_COLUMNID,Microsoft.Isam.Esent.Interop.JET_COLUMNID)", MessageId = "rhs", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_COLUMNID.#op_GreaterThanOrEqual(Microsoft.Isam.Esent.Interop.JET_COLUMNID,Microsoft.Isam.Esent.Interop.JET_COLUMNID)", MessageId = "rhs", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_COLUMNID.#op_Inequality(Microsoft.Isam.Esent.Interop.JET_COLUMNID,Microsoft.Isam.Esent.Interop.JET_COLUMNID)", MessageId = "rhs", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_COLUMNID.#op_LessThan(Microsoft.Isam.Esent.Interop.JET_COLUMNID,Microsoft.Isam.Esent.Interop.JET_COLUMNID)", MessageId = "rhs", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_COLUMNID.#op_LessThanOrEqual(Microsoft.Isam.Esent.Interop.JET_COLUMNID,Microsoft.Isam.Esent.Interop.JET_COLUMNID)", MessageId = "rhs", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_COLUMNLIST.#columnidcbMax", MessageId = "columnidcb", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_COLUMNLIST.#columnidcoltyp", MessageId = "columnidcoltyp", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_COLUMNLIST.#columnidcolumnid", MessageId = "columnidcolumnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_COLUMNLIST.#columnidcolumnname", MessageId = "columnidcolumnname", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_COLUMNLIST.#columnidCp", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_COLUMNLIST.#columnidDefault", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_COLUMNLIST.#columnidgrbit", MessageId = "columnidgrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_COLUMNLIST.#tableid", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_CONDITIONALCOLUMN.#grbit", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_CONDITIONALCOLUMN.#szColumnName", MessageId = "sz", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_DBID.#op_Equality(Microsoft.Isam.Esent.Interop.JET_DBID,Microsoft.Isam.Esent.Interop.JET_DBID)", MessageId = "rhs", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_DBID.#op_Inequality(Microsoft.Isam.Esent.Interop.JET_DBID,Microsoft.Isam.Esent.Interop.JET_DBID)", MessageId = "rhs", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_DbInfo.#Filesize", MessageId = "Filesize", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_DBINFOMISC.#bkinfoCopyPrev", MessageId = "bkinfo", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_DBINFOMISC.#bkinfoCopyPrev", MessageId = "Prev", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_DBINFOMISC.#bkinfoDiffPrev", MessageId = "bkinfo", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_DBINFOMISC.#bkinfoDiffPrev", MessageId = "Prev", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_DBINFOMISC.#bkinfoFullCur", MessageId = "bkinfo", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_DBINFOMISC.#bkinfoFullPrev", MessageId = "bkinfo", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_DBINFOMISC.#bkinfoFullPrev", MessageId = "Prev", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_DBINFOMISC.#bkinfoIncPrev", MessageId = "bkinfo", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_DBINFOMISC.#bkinfoIncPrev", MessageId = "Prev", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_DBINFOMISC.#cbPageSize", MessageId = "cb", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_DBINFOMISC.#dbstate", MessageId = "dbstate", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_DBINFOMISC.#dwBuildNumber", MessageId = "dw", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_DBINFOMISC.#dwMajorVersion", MessageId = "dw", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_DBINFOMISC.#dwMinorVersion", MessageId = "dw", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_DBINFOMISC.#lgposAttach", MessageId = "lgpos", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_DBINFOMISC.#lgposConsistent", MessageId = "lgpos", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_DBINFOMISC.#lgposDetach", MessageId = "lgpos", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_DBINFOMISC.#logtimeAttach", MessageId = "logtime", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_DBINFOMISC.#logtimeBadChecksum", MessageId = "logtime", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_DBINFOMISC.#logtimeConsistent", MessageId = "logtime", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_DBINFOMISC.#logtimeDetach", MessageId = "logtime", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_DBINFOMISC.#logtimeECCFixFail", MessageId = "logtime", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_DBINFOMISC.#logtimeECCFixSuccess", MessageId = "logtime", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_DBINFOMISC.#logtimeGenMaxCreate", MessageId = "logtime", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_DBINFOMISC.#logtimeRepair", MessageId = "logtime", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_ENUMCOLUMN.#cbData", MessageId = "cb", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_ENUMCOLUMN.#columnid", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_ENUMCOLUMN.#rgEnumColumnValue", MessageId = "rg", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_ENUMCOLUMNID.#columnid", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_ENUMCOLUMNID.#ctagSequence", MessageId = "ctag", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_ENUMCOLUMNID.#rgtagSequence", MessageId = "rgtag", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_ENUMCOLUMNVALUE.#cbData", MessageId = "cb", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_ENUMCOLUMNVALUE.#itagSequence", MessageId = "itag", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_err.#BadItagSequence", MessageId = "Itag", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_err.#IndexTuplesVarSegMacNotAllowed", MessageId = "Seg", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_err.#InvalidGrbit", MessageId = "Grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_err.#InvalidSesid", MessageId = "Sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_err.#MultiValuedColumnMustBeTagged", MessageId = "Multi", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_err.#MultiValuedDuplicate", MessageId = "Multi", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_err.#MultiValuedDuplicateAfterTruncation", MessageId = "Multi", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_err.#MultiValuedIndexViolation", MessageId = "Multi", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_err.#OutOfAutoincrementValues", MessageId = "Autoincrement", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_err.#OutOfDbtimeValues", MessageId = "Dbtime", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_err.#ReadPgnoVerifyFailure", MessageId = "Pgno", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_err.#RfsFailure", MessageId = "Rfs", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_err.#RfsNotArmed", MessageId = "Rfs", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_err.#RunningInMultiInstanceMode", MessageId = "Multi", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_err.#SesidTableIdMismatch", MessageId = "Sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_err.#SystemParamsAlreadySet", MessageId = "Params", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_err.#TooManyMempoolEntries", MessageId = "Mempool", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_HANDLE.#op_Equality(Microsoft.Isam.Esent.Interop.JET_HANDLE,Microsoft.Isam.Esent.Interop.JET_HANDLE)", MessageId = "rhs", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_HANDLE.#op_Inequality(Microsoft.Isam.Esent.Interop.JET_HANDLE,Microsoft.Isam.Esent.Interop.JET_HANDLE)", MessageId = "rhs", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_IdxInfo.#SpaceAlloc", MessageId = "Alloc", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_IdxInfo.#VarSegMac", MessageId = "Seg", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_INDEXCREATE.#cbKey", MessageId = "cb", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_INDEXCREATE.#cbKeyMost", MessageId = "cb", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_INDEXCREATE.#cbVarSegMac", MessageId = "cb", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_INDEXCREATE.#cbVarSegMac", MessageId = "Seg", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_INDEXCREATE.#grbit", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_INDEXCREATE.#pidxUnicode", MessageId = "pidx", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_INDEXCREATE.#rgconditionalcolumn", MessageId = "rgconditionalcolumn", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_INDEXCREATE.#szIndexName", MessageId = "sz", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_INDEXCREATE.#szKey", MessageId = "sz", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_INDEXID.#op_Equality(Microsoft.Isam.Esent.Interop.JET_INDEXID,Microsoft.Isam.Esent.Interop.JET_INDEXID)", MessageId = "rhs", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_INDEXID.#op_Inequality(Microsoft.Isam.Esent.Interop.JET_INDEXID,Microsoft.Isam.Esent.Interop.JET_INDEXID)", MessageId = "rhs", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_INDEXLIST.#columnidcColumn", MessageId = "columnidc", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_INDEXLIST.#columnidcEntry", MessageId = "columnidc", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_INDEXLIST.#columnidcKey", MessageId = "columnidc", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_INDEXLIST.#columnidcoltyp", MessageId = "columnidcoltyp", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_INDEXLIST.#columnidcolumnid", MessageId = "columnidcolumnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_INDEXLIST.#columnidcolumnname", MessageId = "columnidcolumnname", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_INDEXLIST.#columnidCp", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_INDEXLIST.#columnidcPage", MessageId = "columnidc", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_INDEXLIST.#columnidgrbitColumn", MessageId = "columnidgrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_INDEXLIST.#columnidgrbitIndex", MessageId = "columnidgrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_INDEXLIST.#columnidiColumn", MessageId = "columnidi", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_INDEXLIST.#columnidindexname", MessageId = "columnidindexname", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_INDEXLIST.#columnidLangid", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_INDEXLIST.#columnidLangid", MessageId = "Langid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_INDEXLIST.#columnidLCMapFlags", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_INDEXLIST.#tableid", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_INDEXRANGE.#grbit", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_INDEXRANGE.#tableid", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_INSTANCE.#op_Equality(Microsoft.Isam.Esent.Interop.JET_INSTANCE,Microsoft.Isam.Esent.Interop.JET_INSTANCE)", MessageId = "rhs", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_INSTANCE.#op_Inequality(Microsoft.Isam.Esent.Interop.JET_INSTANCE,Microsoft.Isam.Esent.Interop.JET_INSTANCE)", MessageId = "rhs", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_INSTANCE_INFO.#szDatabaseFileName", MessageId = "sz", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_INSTANCE_INFO.#szInstanceName", MessageId = "sz", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_LGPOS.#ib", MessageId = "ib", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_LGPOS.#isec", MessageId = "isec", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_LGPOS.#op_Equality(Microsoft.Isam.Esent.Interop.JET_LGPOS,Microsoft.Isam.Esent.Interop.JET_LGPOS)", MessageId = "rhs", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_LGPOS.#op_GreaterThan(Microsoft.Isam.Esent.Interop.JET_LGPOS,Microsoft.Isam.Esent.Interop.JET_LGPOS)", MessageId = "rhs", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_LGPOS.#op_GreaterThanOrEqual(Microsoft.Isam.Esent.Interop.JET_LGPOS,Microsoft.Isam.Esent.Interop.JET_LGPOS)", MessageId = "rhs", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_LGPOS.#op_Inequality(Microsoft.Isam.Esent.Interop.JET_LGPOS,Microsoft.Isam.Esent.Interop.JET_LGPOS)", MessageId = "rhs", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_LGPOS.#op_LessThan(Microsoft.Isam.Esent.Interop.JET_LGPOS,Microsoft.Isam.Esent.Interop.JET_LGPOS)", MessageId = "rhs", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_LGPOS.#op_LessThanOrEqual(Microsoft.Isam.Esent.Interop.JET_LGPOS,Microsoft.Isam.Esent.Interop.JET_LGPOS)", MessageId = "rhs", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_LOGTIME.#op_Equality(Microsoft.Isam.Esent.Interop.JET_LOGTIME,Microsoft.Isam.Esent.Interop.JET_LOGTIME)", MessageId = "rhs", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_LOGTIME.#op_Inequality(Microsoft.Isam.Esent.Interop.JET_LOGTIME,Microsoft.Isam.Esent.Interop.JET_LOGTIME)", MessageId = "rhs", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_LS.#op_Equality(Microsoft.Isam.Esent.Interop.JET_LS,Microsoft.Isam.Esent.Interop.JET_LS)", MessageId = "rhs", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_LS.#op_Inequality(Microsoft.Isam.Esent.Interop.JET_LS,Microsoft.Isam.Esent.Interop.JET_LS)", MessageId = "rhs", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_OBJECTINFO.#grbit", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_OBJECTINFO.#objtyp", MessageId = "objtyp", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_OBJECTLIST.#columnidcPage", MessageId = "columnidc", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_OBJECTLIST.#columnidcRecord", MessageId = "columnidc", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_OBJECTLIST.#columnidflags", MessageId = "columnidflags", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_OBJECTLIST.#columnidgrbit", MessageId = "columnidgrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_OBJECTLIST.#columnidobjectname", MessageId = "columnidobjectname", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_OBJECTLIST.#columnidobjtyp", MessageId = "columnidobjtyp", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_OBJECTLIST.#tableid", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_OSSNAPID.#op_Equality(Microsoft.Isam.Esent.Interop.JET_OSSNAPID,Microsoft.Isam.Esent.Interop.JET_OSSNAPID)", MessageId = "rhs", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_OSSNAPID.#op_Inequality(Microsoft.Isam.Esent.Interop.JET_OSSNAPID,Microsoft.Isam.Esent.Interop.JET_OSSNAPID)", MessageId = "rhs", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_param.#MaxVerPages", MessageId = "Ver", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_param.#PreferredVerPages", MessageId = "Ver", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_RECORDLIST.#columnidBookmark", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_RECORDLIST.#tableid", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_RECPOS.#centriesLT", MessageId = "centries", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_RECPOS.#centriesTotal", MessageId = "centries", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_RECSIZE.#Add(Microsoft.Isam.Esent.Interop.JET_RECSIZE,Microsoft.Isam.Esent.Interop.JET_RECSIZE)", MessageId = "s", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_RECSIZE.#cbData", MessageId = "cb", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_RECSIZE.#cbDataCompressed", MessageId = "cb", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_RECSIZE.#cbLongValueData", MessageId = "cb", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_RECSIZE.#cbLongValueDataCompressed", MessageId = "cb", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_RECSIZE.#cbLongValueOverhead", MessageId = "cb", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_RECSIZE.#cbOverhead", MessageId = "cb", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_RECSIZE.#cMultiValues", MessageId = "Multi", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_RECSIZE.#op_Addition(Microsoft.Isam.Esent.Interop.JET_RECSIZE,Microsoft.Isam.Esent.Interop.JET_RECSIZE)", MessageId = "s", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_RECSIZE.#op_Equality(Microsoft.Isam.Esent.Interop.JET_RECSIZE,Microsoft.Isam.Esent.Interop.JET_RECSIZE)", MessageId = "rhs", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_RECSIZE.#op_Inequality(Microsoft.Isam.Esent.Interop.JET_RECSIZE,Microsoft.Isam.Esent.Interop.JET_RECSIZE)", MessageId = "rhs", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_RECSIZE.#op_Subtraction(Microsoft.Isam.Esent.Interop.JET_RECSIZE,Microsoft.Isam.Esent.Interop.JET_RECSIZE)", MessageId = "s", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_RECSIZE.#Subtract(Microsoft.Isam.Esent.Interop.JET_RECSIZE,Microsoft.Isam.Esent.Interop.JET_RECSIZE)", MessageId = "s", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_RETINFO.#columnidNextTagged", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_RETINFO.#ibLongValue", MessageId = "ib", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_RETINFO.#itagSequence", MessageId = "itag", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_RETRIEVECOLUMN.#cbActual", MessageId = "cb", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_RETRIEVECOLUMN.#cbData", MessageId = "cb", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_RETRIEVECOLUMN.#columnid", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_RETRIEVECOLUMN.#columnidNextTagged", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_RETRIEVECOLUMN.#grbit", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_RETRIEVECOLUMN.#ibData", MessageId = "ib", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_RETRIEVECOLUMN.#ibLongValue", MessageId = "ib", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_RETRIEVECOLUMN.#itagSequence", MessageId = "itag", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_RSTINFO.#crstmap", MessageId = "crstmap", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_RSTINFO.#lgposStop", MessageId = "lgpos", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_RSTINFO.#logtimeStop", MessageId = "logtime", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_RSTINFO.#pfnStatus", MessageId = "pfn", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_RSTINFO.#rgrstmap", MessageId = "rgrstmap", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_RSTMAP.#szDatabaseName", MessageId = "sz", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_RSTMAP.#szNewDatabaseName", MessageId = "sz", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_SESID.#op_Equality(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_SESID)", MessageId = "rhs", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_SESID.#op_Inequality(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_SESID)", MessageId = "rhs", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_SETCOLUMN.#cbData", MessageId = "cb", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_SETCOLUMN.#columnid", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_SETCOLUMN.#grbit", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_SETCOLUMN.#ibData", MessageId = "ib", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_SETCOLUMN.#ibLongValue", MessageId = "ib", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_SETCOLUMN.#itagSequence", MessageId = "itag", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_SETINFO.#ibLongValue", MessageId = "ib", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_SETINFO.#itagSequence", MessageId = "itag", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_SIGNATURE.#op_Equality(Microsoft.Isam.Esent.Interop.JET_SIGNATURE,Microsoft.Isam.Esent.Interop.JET_SIGNATURE)", MessageId = "rhs", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_SIGNATURE.#op_Inequality(Microsoft.Isam.Esent.Interop.JET_SIGNATURE,Microsoft.Isam.Esent.Interop.JET_SIGNATURE)", MessageId = "rhs", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_SNPROG.#cunitDone", MessageId = "cunit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_SNPROG.#cunitTotal", MessageId = "cunit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_SPACEHINTS.#cbInitial", MessageId = "cb", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_SPACEHINTS.#cbMaxExtent", MessageId = "cb", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_SPACEHINTS.#cbMinExtent", MessageId = "cb", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_SPACEHINTS.#grbit", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_SPACEHINTS.#ulMaintDensity", MessageId = "Maint", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_TABLECREATE.#cbSeparateLV", MessageId = "cb", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_TABLECREATE.#cbtyp", MessageId = "cbtyp", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_TABLECREATE.#grbit", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_TABLECREATE.#pLVSpacehints", MessageId = "Spacehints", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_TABLECREATE.#pSeqSpacehints", MessageId = "Spacehints", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_TABLECREATE.#rgcolumncreate", MessageId = "rgcolumncreate", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_TABLECREATE.#rgindexcreate", MessageId = "rgindexcreate", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_TABLECREATE.#szCallback", MessageId = "sz", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_TABLECREATE.#szTableName", MessageId = "sz", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_TABLECREATE.#szTemplateTableName", MessageId = "sz", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_TABLECREATE.#tableid", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_TABLEID.#op_Equality(Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_TABLEID)", MessageId = "rhs", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_TABLEID.#op_Inequality(Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_TABLEID)", MessageId = "rhs", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_TblInfo.#Dbid", MessageId = "Dbid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_TblInfo.#SpaceAlloc", MessageId = "Alloc", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_UNICODEINDEX.#dwMapFlags", MessageId = "dw", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_UNICODEINDEX.#lcid", MessageId = "lcid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_UNICODEINDEX.#szLocaleName", MessageId = "sz", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.MakeKeyGrbit.#StrLimit", MessageId = "Str", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.MakeKeyGrbit.#SubStrLimit", MessageId = "Str", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.OpenTableGrbit.#Preread", MessageId = "Preread", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Server2003.Server2003Api.#JetOSSnapshotAbort(Microsoft.Isam.Esent.Interop.JET_OSSNAPID,Microsoft.Isam.Esent.Interop.Server2003.SnapshotAbortGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Server2003.Server2003Api.#JetOSSnapshotAbort(Microsoft.Isam.Esent.Interop.JET_OSSNAPID,Microsoft.Isam.Esent.Interop.Server2003.SnapshotAbortGrbit)", MessageId = "snapid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Server2003.Server2003Api.#JetUpdate2(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.Byte[],System.Int32,System.Int32&,Microsoft.Isam.Esent.Interop.Server2003.UpdateGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Server2003.Server2003Api.#JetUpdate2(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.Byte[],System.Int32,System.Int32&,Microsoft.Isam.Esent.Interop.Server2003.UpdateGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Server2003.Server2003Api.#JetUpdate2(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.Byte[],System.Int32,System.Int32&,Microsoft.Isam.Esent.Interop.Server2003.UpdateGrbit)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Session.#JetSesid", MessageId = "Sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.SetColumnGrbit.#UniqueMultiValues", MessageId = "Multi", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.SetColumnGrbit.#UniqueNormalizedMultiValues", MessageId = "Multi", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Table.#.ctor(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.String,Microsoft.Isam.Esent.Interop.OpenTableGrbit)", MessageId = "dbid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Table.#.ctor(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.String,Microsoft.Isam.Esent.Interop.OpenTableGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Table.#.ctor(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.String,Microsoft.Isam.Esent.Interop.OpenTableGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Table.#JetTableid", MessageId = "Tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Transaction.#.ctor(Microsoft.Isam.Esent.Interop.JET_SESID)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Transaction.#Commit(Microsoft.Isam.Esent.Interop.CommitTransactionGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Update.#.ctor(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_prep)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Update.#.ctor(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_prep)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Update.#SaveAndGotoBookmark()", MessageId = "Goto", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.JET_OPENTEMPORARYTABLE.#cbKeyMost", MessageId = "cb", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.JET_OPENTEMPORARYTABLE.#cbVarSegMac", MessageId = "cb", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.JET_OPENTEMPORARYTABLE.#cbVarSegMac", MessageId = "Seg", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.JET_OPENTEMPORARYTABLE.#ccolumn", MessageId = "ccolumn", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.JET_OPENTEMPORARYTABLE.#grbit", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.JET_OPENTEMPORARYTABLE.#pidxunicode", MessageId = "pidxunicode", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.JET_OPENTEMPORARYTABLE.#prgcolumndef", MessageId = "prgcolumndef", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.JET_OPENTEMPORARYTABLE.#prgcolumnid", MessageId = "prgcolumnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.JET_OPENTEMPORARYTABLE.#tableid", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.JET_RECSIZE.#op_Equality(Microsoft.Isam.Esent.Interop.Vista.JET_RECSIZE,Microsoft.Isam.Esent.Interop.Vista.JET_RECSIZE)", MessageId = "rhs", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.JET_RECSIZE.#cbOverhead", MessageId = "cb", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.JET_RECSIZE.#cbLongValueData", MessageId = "cb", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.JET_RECSIZE.#cbData", MessageId = "cb", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.JET_RECSIZE.#cbLongValueDataCompressed", MessageId = "cb", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.JET_RECSIZE.#op_Inequality(Microsoft.Isam.Esent.Interop.Vista.JET_RECSIZE,Microsoft.Isam.Esent.Interop.Vista.JET_RECSIZE)", MessageId = "rhs", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.JET_RECSIZE.#cbDataCompressed", MessageId = "cb", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.JET_RECSIZE.#cMultiValues", MessageId = "Multi", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.JET_RECSIZE.#cbLongValueOverhead", MessageId = "cb", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.JET_RECSIZE.#Subtract(Microsoft.Isam.Esent.Interop.Vista.JET_RECSIZE,Microsoft.Isam.Esent.Interop.Vista.JET_RECSIZE)", MessageId = "s", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.JET_RECSIZE.#Add(Microsoft.Isam.Esent.Interop.Vista.JET_RECSIZE,Microsoft.Isam.Esent.Interop.Vista.JET_RECSIZE)", MessageId = "s", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.JET_THREADSTATS.#Add(Microsoft.Isam.Esent.Interop.Vista.JET_THREADSTATS,Microsoft.Isam.Esent.Interop.Vista.JET_THREADSTATS)", MessageId = "t", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.JET_THREADSTATS.#cbLogRecord", MessageId = "cb", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.JET_THREADSTATS.#cPagePreread", MessageId = "Preread", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.JET_THREADSTATS.#cPageRedirtied", MessageId = "Redirtied", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.JET_THREADSTATS.#Create(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32)", MessageId = "c", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.JET_THREADSTATS.#Create(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32)", MessageId = "cb", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.JET_THREADSTATS.#Create(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32)", MessageId = "Preread", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.JET_THREADSTATS.#Create(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32)", MessageId = "Redirtied", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.JET_THREADSTATS.#op_Addition(Microsoft.Isam.Esent.Interop.Vista.JET_THREADSTATS,Microsoft.Isam.Esent.Interop.Vista.JET_THREADSTATS)", MessageId = "t", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.JET_THREADSTATS.#op_Equality(Microsoft.Isam.Esent.Interop.Vista.JET_THREADSTATS,Microsoft.Isam.Esent.Interop.Vista.JET_THREADSTATS)", MessageId = "rhs", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.JET_THREADSTATS.#op_Inequality(Microsoft.Isam.Esent.Interop.Vista.JET_THREADSTATS,Microsoft.Isam.Esent.Interop.Vista.JET_THREADSTATS)", MessageId = "rhs", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.JET_THREADSTATS.#op_Subtraction(Microsoft.Isam.Esent.Interop.Vista.JET_THREADSTATS,Microsoft.Isam.Esent.Interop.Vista.JET_THREADSTATS)", MessageId = "t", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.JET_THREADSTATS.#Subtract(Microsoft.Isam.Esent.Interop.Vista.JET_THREADSTATS,Microsoft.Isam.Esent.Interop.Vista.JET_THREADSTATS)", MessageId = "t", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.VistaApi.#JetGetRecordSize(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.Vista.JET_RECSIZE&,Microsoft.Isam.Esent.Interop.GetRecordSizeGrbit)", MessageId = "recsize", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.VistaApi.#JetGetRecordSize(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.Vista.JET_RECSIZE&,Microsoft.Isam.Esent.Interop.GetRecordSizeGrbit)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.VistaApi.#JetGetRecordSize(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.Vista.JET_RECSIZE&,Microsoft.Isam.Esent.Interop.GetRecordSizeGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.VistaApi.#JetGetRecordSize(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.Vista.JET_RECSIZE&,Microsoft.Isam.Esent.Interop.GetRecordSizeGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.VistaApi.#JetGetThreadStats(Microsoft.Isam.Esent.Interop.Vista.JET_THREADSTATS&)", MessageId = "threadstats", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.VistaApi.#JetInit3(Microsoft.Isam.Esent.Interop.JET_INSTANCE&,Microsoft.Isam.Esent.Interop.JET_RSTINFO,Microsoft.Isam.Esent.Interop.InitGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.VistaApi.#JetOpenTemporaryTable(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.Vista.JET_OPENTEMPORARYTABLE)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.VistaApi.#JetOpenTemporaryTable(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.Vista.JET_OPENTEMPORARYTABLE)", MessageId = "temporarytable", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.VistaApi.#JetOSSnapshotEnd(Microsoft.Isam.Esent.Interop.JET_OSSNAPID,Microsoft.Isam.Esent.Interop.Vista.SnapshotEndGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.VistaApi.#JetOSSnapshotGetFreezeInfo(Microsoft.Isam.Esent.Interop.JET_OSSNAPID,System.Int32&,Microsoft.Isam.Esent.Interop.JET_INSTANCE_INFO[]&,Microsoft.Isam.Esent.Interop.Vista.SnapshotGetFreezeInfoGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.VistaApi.#JetOSSnapshotGetFreezeInfo(Microsoft.Isam.Esent.Interop.JET_OSSNAPID,System.Int32&,Microsoft.Isam.Esent.Interop.JET_INSTANCE_INFO[]&,Microsoft.Isam.Esent.Interop.Vista.SnapshotGetFreezeInfoGrbit)", MessageId = "num", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.VistaApi.#JetOSSnapshotPrepareInstance(Microsoft.Isam.Esent.Interop.JET_OSSNAPID,Microsoft.Isam.Esent.Interop.JET_INSTANCE,Microsoft.Isam.Esent.Interop.Vista.SnapshotPrepareInstanceGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.VistaApi.#JetOSSnapshotTruncateLog(Microsoft.Isam.Esent.Interop.JET_OSSNAPID,Microsoft.Isam.Esent.Interop.Vista.SnapshotTruncateLogGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.VistaApi.#JetOSSnapshotTruncateLogInstance(Microsoft.Isam.Esent.Interop.JET_OSSNAPID,Microsoft.Isam.Esent.Interop.JET_INSTANCE,Microsoft.Isam.Esent.Interop.Vista.SnapshotTruncateLogGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Windows7.Windows7Api.#JetConfigureProcessForCrashDump(Microsoft.Isam.Esent.Interop.Windows7.CrashDumpGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Windows7.Windows7Api.#JetPrereadKeys(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.Byte[][],System.Int32[],System.Int32,System.Int32&,Microsoft.Isam.Esent.Interop.Windows7.PrereadKeysGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Windows7.Windows7Api.#JetPrereadKeys(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.Byte[][],System.Int32[],System.Int32,System.Int32&,Microsoft.Isam.Esent.Interop.Windows7.PrereadKeysGrbit)", MessageId = "Preread", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Windows7.Windows7Api.#JetPrereadKeys(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.Byte[][],System.Int32[],System.Int32,System.Int32&,Microsoft.Isam.Esent.Interop.Windows7.PrereadKeysGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Windows7.Windows7Api.#JetPrereadKeys(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.Byte[][],System.Int32[],System.Int32,System.Int32&,Microsoft.Isam.Esent.Interop.Windows7.PrereadKeysGrbit)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Windows7.Windows7Api.#JetPrereadKeys(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.Byte[][],System.Int32[],System.Int32,System.Int32,System.Int32&,Microsoft.Isam.Esent.Interop.Windows7.PrereadKeysGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Windows7.Windows7Api.#JetPrereadKeys(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.Byte[][],System.Int32[],System.Int32,System.Int32,System.Int32&,Microsoft.Isam.Esent.Interop.Windows7.PrereadKeysGrbit)", MessageId = "Preread", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Windows7.Windows7Api.#JetPrereadKeys(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.Byte[][],System.Int32[],System.Int32,System.Int32,System.Int32&,Microsoft.Isam.Esent.Interop.Windows7.PrereadKeysGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Windows7.Windows7Api.#JetPrereadKeys(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.Byte[][],System.Int32[],System.Int32,System.Int32,System.Int32&,Microsoft.Isam.Esent.Interop.Windows7.PrereadKeysGrbit)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Windows7.Windows7Grbits.#IntrinsicLVsOnly", MessageId = "LVs", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "namespace", Target = "Microsoft.Isam.Esent", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "namespace", Target = "Microsoft.Isam.Esent", MessageId = "Isam", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "namespace", Target = "Microsoft.Isam.Esent.Interop", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "namespace", Target = "Microsoft.Isam.Esent.Interop", MessageId = "Isam", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "namespace", Target = "Microsoft.Isam.Esent.Interop.Server2003", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "namespace", Target = "Microsoft.Isam.Esent.Interop.Server2003", MessageId = "Isam", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "namespace", Target = "Microsoft.Isam.Esent.Interop.Vista", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "namespace", Target = "Microsoft.Isam.Esent.Interop.Vista", MessageId = "Isam", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "namespace", Target = "Microsoft.Isam.Esent.Interop.Windows7", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "namespace", Target = "Microsoft.Isam.Esent.Interop.Windows7", MessageId = "Isam", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.EsentException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.AttachDatabaseGrbit", MessageId = "Grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.BackupGrbit", MessageId = "Grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.BeginExternalBackupGrbit", MessageId = "Grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.BeginTransactionGrbit", MessageId = "Grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.CloseDatabaseGrbit", MessageId = "Grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.ColumndefGrbit", MessageId = "Columndef", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.ColumndefGrbit", MessageId = "Grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.CommitTransactionGrbit", MessageId = "Grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.CompactGrbit", MessageId = "Grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.ConditionalColumnGrbit", MessageId = "Grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.CreateDatabaseGrbit", MessageId = "Grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.CreateIndexGrbit", MessageId = "Grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.CreateInstanceGrbit", MessageId = "Grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.CreateTableColumnIndexGrbit", MessageId = "Grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.DefragGrbit", MessageId = "Grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.DeleteColumnGrbit", MessageId = "Grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.DetachDatabaseGrbit", MessageId = "Grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.DupCursorGrbit", MessageId = "Grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EndExternalBackupGrbit", MessageId = "Grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EndSessionGrbit", MessageId = "Grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EnumerateColumnsGrbit", MessageId = "Grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EscrowUpdateGrbit", MessageId = "Grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentAccessDeniedException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentAfterInitializationException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentAlreadyInitializedException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentAlreadyPreparedException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentApiException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentAttachedDatabaseMismatchException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentBackupAbortByServerException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentBackupDirectoryNotEmptyException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentBackupInProgressException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentBackupNotAllowedYetException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentBadBackupDatabaseSizeException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentBadBookmarkException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentBadCheckpointSignatureException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentBadColumnIdException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentBadDbSignatureException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentBadItagSequenceException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentBadItagSequenceException", MessageId = "Itag", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentBadLogSignatureException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentBadLogVersionException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentBadPageLinkException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentBadParentPageLinkException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentBadPatchPageException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentBadRestoreTargetInstanceException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentBadSLVSignatureException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentBufferTooSmallException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentCallbackFailedException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentCallbackNotResolvedException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentCannotAddFixedVarColumnToDerivedTableException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentCannotBeTaggedException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentCannotDeleteSystemTableException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentCannotDeleteTemplateTableException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentCannotDeleteTempTableException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentCannotDisableVersioningException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentCannotIndexException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentCannotLogDuringRecoveryRedoException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentCannotMaterializeForwardOnlySortException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentCannotNestDDLException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentCannotNestDistributedTransactionsException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentCannotSeparateIntrinsicLVException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentCatalogCorruptedException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentCheckpointCorruptException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentCheckpointDepthTooDeepException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentCheckpointFileNotFoundException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentClientRequestToStopJetServiceException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentColumnCannotBeCompressedException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentColumnDoesNotFitException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentColumnDuplicateException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentColumnIndexedException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentColumnInRelationshipException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentColumnInUseException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentColumnLongException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentColumnNoChunkException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentColumnNotFoundException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentColumnNotUpdatableException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentColumnRedundantException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentColumnTooBigException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentCommittedLogFileCorruptException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentCommittedLogFilesMissingException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentConsistentTimeMismatchException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentContainerNotEmptyException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentCorruptionException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentCurrencyStackOutOfMemoryException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDatabase200FormatException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDatabase400FormatException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDatabase500FormatException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDatabaseAlreadyRunningMaintenanceException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDatabaseAlreadyUpgradedException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDatabaseBufferDependenciesCorruptedException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDatabaseCorruptedException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDatabaseCorruptedNoRepairException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDatabaseDirtyShutdownException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDatabaseDuplicateException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDatabaseFailedIncrementalReseedException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDatabaseFileReadOnlyException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDatabaseIdInUseException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDatabaseIncompleteIncrementalReseedException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDatabaseIncompleteUpgradeException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDatabaseInUseException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDatabaseInvalidIncrementalReseedException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDatabaseInvalidNameException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDatabaseInvalidPagesException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDatabaseInvalidPathException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDatabaseLeakInSpaceException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDatabaseLockedException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDatabaseLogSetMismatchException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDatabaseNotFoundException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDatabasePatchFileMismatchException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDatabaseSharingViolationException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDatabaseSignInUseException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDatabasesNotFromSameSnapshotException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDatabaseStreamingFileMismatchException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDatabaseUnavailableException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDataException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDataHasChangedException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDbTimeCorruptedException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDbTimeTooNewException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDbTimeTooOldException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDDLNotInheritableException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDecompressionFailedException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDefaultValueTooBigException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDeleteBackupFileFailException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDensityInvalidException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDerivedColumnCorruptionException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDirtyShutdownException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDisabledFunctionalityException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDiskException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDiskFullException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDiskIOException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDiskReadVerificationFailureException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDistributedTransactionAlreadyPreparedToCommitException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDistributedTransactionNotYetPreparedToCommitException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDTCCallbackUnexpectedErrorException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDTCMissingCallbackException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDTCMissingCallbackOnRecoveryException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentEndingRestoreLogTooLowException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentEntryPointNotFoundException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentErrorException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentExclusiveTableLockRequiredException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentExistingLogFileHasBadSignatureException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentExistingLogFileIsNotContiguousException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentFatalException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentFeatureNotAvailableException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentFileAccessDeniedException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentFileCloseException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentFileCompressedException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentFileInvalidTypeException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentFileIOAbortException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentFileIOBeyondEOFException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentFileIOFailException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentFileIORetryException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentFileIOSparseException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentFileNotFoundException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentFileSystemCorruptionException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentFilteredMoveNotSupportedException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentFixedDDLException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentFixedInheritedDDLException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentForceDetachNotAllowedException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentFragmentationException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentGivenLogFileHasBadSignatureException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentGivenLogFileIsNotContiguousException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentIllegalOperationException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInconsistentException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentIndexBuildCorruptedException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentIndexCantBuildException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentIndexDuplicateException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentIndexHasPrimaryException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentIndexInUseException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentIndexInvalidDefException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentIndexMustStayException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentIndexNotFoundException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentIndexTuplesCannotRetrieveFromIndexException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentIndexTuplesInvalidLimitsException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentIndexTuplesKeyTooSmallException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentIndexTuplesNonUniqueOnlyException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentIndexTuplesSecondaryIndexOnlyException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentIndexTuplesTextBinaryColumnsOnlyException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentIndexTuplesTooManyColumnsException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentIndexTuplesVarSegMacNotAllowedException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentIndexTuplesVarSegMacNotAllowedException", MessageId = "Seg", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInitInProgressException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInstanceNameInUseException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInstanceUnavailableDueToFatalLogDiskFullException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInstanceUnavailableException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInternalErrorException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInTransactionException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInvalidBackupException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInvalidBackupSequenceException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInvalidBookmarkException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInvalidBufferSizeException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInvalidCodePageException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInvalidColumnException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInvalidColumnTypeException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInvalidCountryException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInvalidCreateDbVersionException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInvalidCreateIndexException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInvalidDatabaseException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInvalidDatabaseIdException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInvalidDatabaseVersionException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInvalidFilenameException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInvalidGrbitException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInvalidGrbitException", MessageId = "Grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInvalidIndexIdException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInvalidInstanceException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInvalidLanguageIdException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInvalidLCMapStringFlagsException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInvalidLogDataSequenceException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInvalidLogDirectoryException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInvalidLoggedOperationException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInvalidLogSequenceException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInvalidNameException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInvalidObjectException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInvalidOnSortException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInvalidOperationException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInvalidParameterException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInvalidPathException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInvalidPlaceholderColumnException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInvalidSesidException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInvalidSesidException", MessageId = "Sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInvalidSettingsException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInvalidSystemPathException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInvalidTableIdException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentIOException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentKeyBoundaryException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentKeyDuplicateException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentKeyIsMadeException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentKeyNotMadeException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentKeyTooBigException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentKeyTruncatedException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentLanguageNotSupportedException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentLinkNotSupportedException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentLogBufferTooSmallException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentLogCorruptDuringHardRecoveryException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentLogCorruptDuringHardRestoreException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentLogCorruptedException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentLogDisabledDueToRecoveryFailureException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentLogDiskFullException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentLogFileCorruptException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentLogFileNotCopiedException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentLogFilePathInUseException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentLogFileSizeMismatchDatabasesConsistentException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentLogFileSizeMismatchException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentLogGenerationMismatchException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentLoggingDisabledException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentLogReadVerifyFailureException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentLogSectorSizeMismatchDatabasesConsistentException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentLogSectorSizeMismatchException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentLogSequenceEndDatabasesConsistentException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentLogSequenceEndException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentLogTornWriteDuringHardRecoveryException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentLogTornWriteDuringHardRestoreException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentLogWriteFailException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentLSAlreadySetException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentLSCallbackNotSpecifiedException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentLSNotSetException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentLVCorruptedException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentMakeBackupDirectoryFailException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentMemoryException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentMishandlingException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentMissingCurrentLogFilesException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentMissingFileToBackupException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentMissingFullBackupException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentMissingLogFileException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentMissingPatchPageException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentMissingPreviousLogFileException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentMissingRestoreLogFilesException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentMultiValuedColumnMustBeTaggedException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentMultiValuedColumnMustBeTaggedException", MessageId = "Multi", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentMultiValuedDuplicateAfterTruncationException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentMultiValuedDuplicateAfterTruncationException", MessageId = "Multi", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentMultiValuedDuplicateException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentMultiValuedDuplicateException", MessageId = "Multi", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentMultiValuedIndexViolationException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentMultiValuedIndexViolationException", MessageId = "Multi", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentMustCommitDistributedTransactionToLevel0Exception", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentMustDisableLoggingForDbUpgradeException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentMustRollbackException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentNoAttachmentsFailedIncrementalReseedException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentNoBackupDirectoryException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentNoBackupException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentNoCurrentIndexException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentNoCurrentRecordException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentNotInDistributedTransactionException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentNotInitializedException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentNotInTransactionException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentNTSystemCallFailedException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentNullInvalidException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentNullKeyDisallowedException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentObjectDuplicateException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentObjectNotFoundException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentObsoleteException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentOneDatabasePerSessionException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentOperationException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentOSSnapshotInvalidSequenceException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentOSSnapshotInvalidSnapIdException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentOSSnapshotNotAllowedException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentOSSnapshotTimeOutException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentOutOfAutoincrementValuesException", MessageId = "Autoincrement", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentOutOfAutoincrementValuesException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentOutOfBuffersException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentOutOfCursorsException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentOutOfDatabaseSpaceException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentOutOfDbtimeValuesException", MessageId = "Dbtime", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentOutOfDbtimeValuesException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentOutOfFileHandlesException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentOutOfLongValueIDsException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentOutOfMemoryException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentOutOfObjectIDsException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentOutOfSequentialIndexValuesException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentOutOfSessionsException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentOutOfThreadsException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentPageBoundaryException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentPageNotInitializedException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentPageSizeMismatchException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentPartiallyAttachedDBException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentPatchFileMissingException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentPermissionDeniedException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentPreviousVersionException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentPrimaryIndexCorruptedException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentQueryNotSupportedException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentQuotaException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentReadLostFlushVerifyFailureException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentReadPgnoVerifyFailureException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentReadPgnoVerifyFailureException", MessageId = "Pgno", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentReadVerifyFailureException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentRecordDeletedException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentRecordFormatConversionFailedException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentRecordNoCopyException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentRecordNotDeletedException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentRecordNotFoundException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentRecordPrimaryChangedException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentRecordTooBigException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentRecordTooBigForBackwardCompatibilityException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentRecoveredWithErrorsException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentRecoveredWithoutUndoDatabasesConsistentException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentRecoveredWithoutUndoException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentRecoveryVerifyFailureException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentRedoAbruptEndedException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentRequiredLogFilesMissingException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentResource", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentResourceException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentRestoreInProgressException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentRestoreOfNonBackupDatabaseException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentRfsFailureException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentRfsFailureException", MessageId = "Rfs", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentRfsNotArmedException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentRfsNotArmedException", MessageId = "Rfs", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentRollbackErrorException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentRollbackRequiredException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentRunningInMultiInstanceModeException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentRunningInMultiInstanceModeException", MessageId = "Multi", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentRunningInOneInstanceModeException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSecondaryIndexCorruptedException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSectorSizeNotSupportedException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSeparatedLongValueException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSesidTableIdMismatchException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSesidTableIdMismatchException", MessageId = "Sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSessionContextAlreadySetException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSessionContextNotSetByThisThreadException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSessionInUseException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSessionSharingViolationException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSessionWriteConflictException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVBufferTooSmallException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVColumnCannotDeleteException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVColumnDefaultValueNotAllowedException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVCorruptedException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVDatabaseMissingException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVEAListCorruptException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVEAListTooBigException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVEAListZeroAllocationException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVFileAccessDeniedException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVFileInUseException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVFileInvalidPathException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVFileIOException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVFileNotFoundException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVFileStaleException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVFileUnknownException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVHeaderBadChecksumException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVHeaderCorruptedException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVInvalidPathException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVOwnerMapAlreadyExistsException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVOwnerMapCorruptedException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVOwnerMapPageNotFoundException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVPagesNotCommittedException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVPagesNotDeletedException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVPagesNotFreeException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVPagesNotReservedException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVProviderNotLoadedException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVProviderVersionMismatchException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVReadVerifyFailureException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVRootNotSpecifiedException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVRootPathInvalidException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVRootStillOpenException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVSpaceCorruptedException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVSpaceWriteConflictException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVStreamingFileAlreadyExistsException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVStreamingFileFullException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVStreamingFileInUseException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVStreamingFileMissingException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVStreamingFileNotCreatedException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVStreamingFileReadOnlyException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSoftRecoveryOnBackupDatabaseException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSoftRecoveryOnSnapshotException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSpaceHintsInvalidException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSPAvailExtCacheOutOfMemoryException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSPAvailExtCacheOutOfSyncException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSPAvailExtCorruptedException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSPOwnExtCorruptedException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSQLLinkNotSupportedException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentStartingRestoreLogTooHighException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentStateException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentStopwatch", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentStreamingDataNotLoggedException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSurrogateBackupInProgressException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSystemParamsAlreadySetException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSystemParamsAlreadySetException", MessageId = "Params", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSystemPathInUseException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentTableDuplicateException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentTableInUseException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentTableLockedException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentTableNotEmptyException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentTaggedNotNULLException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentTaskDroppedException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentTempFileOpenErrorException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentTempPathInUseException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentTermInProgressException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentTestInjectionNotSupportedException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentTooManyActiveUsersException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentTooManyAttachedDatabasesException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentTooManyColumnsException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentTooManyIndexesException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentTooManyInstancesException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentTooManyIOException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentTooManyKeysException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentTooManyMempoolEntriesException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentTooManyMempoolEntriesException", MessageId = "Mempool", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentTooManyOpenDatabasesException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentTooManyOpenIndexesException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentTooManyOpenTablesAndCleanupTimedOutException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentTooManyOpenTablesException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentTooManySortsException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentTooManySplitsException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentTooManyTestInjectionsException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentTransReadOnlyException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentTransTooDeepException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentUnicodeLanguageValidationFailureException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentUnicodeNormalizationNotSupportedException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentUnicodeTranslationBufferTooSmallException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentUnicodeTranslationFailException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentUpdateMustVersionException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentUpdateNotPreparedException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentUsageException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentVersion", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentVersionStoreEntryTooBigException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentVersionStoreOutOfMemoryAndCleanupTimedOutException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentVersionStoreOutOfMemoryException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentWriteConflictException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentWriteConflictPrimaryIndexException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentUnloadableOSFunctionalityException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.GetLockGrbit", MessageId = "Grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.GetRecordSizeGrbit", MessageId = "Grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.GetSecondaryIndexBookmarkGrbit", MessageId = "Grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.GotoSecondaryIndexBookmarkGrbit", MessageId = "Goto", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.GotoSecondaryIndexBookmarkGrbit", MessageId = "Grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.IContentEquatable`1", MessageId = "Equatable", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.IdleGrbit", MessageId = "Grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.IndexKeyGrbit", MessageId = "Grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.IndexRangeGrbit", MessageId = "Grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.InitGrbit", MessageId = "Grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.IntersectIndexesGrbit", MessageId = "Grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_CALLBACK", MessageId = "cbtyp", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_CALLBACK", MessageId = "dbid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_CALLBACK", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_CALLBACK", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_cbtyp", MessageId = "cbtyp", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_coltyp", MessageId = "coltyp", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_dbstate", MessageId = "dbstate", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_filetype", MessageId = "filetype", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_IdxInfo", MessageId = "Idx", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_objtyp", MessageId = "objtyp", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_param", MessageId = "param", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_PFNSTATUS", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_PFNSTATUS", MessageId = "snp", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_PFNSTATUS", MessageId = "snt", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_TblInfo", MessageId = "Tbl", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.LsGrbit", MessageId = "Grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.MakeKeyGrbit", MessageId = "Grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.MoveGrbit", MessageId = "Grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.ObjectInfoGrbit", MessageId = "Grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.OpenDatabaseGrbit", MessageId = "Grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.OpenTableGrbit", MessageId = "Grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.RenameColumnGrbit", MessageId = "Grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.ResetTableSequentialGrbit", MessageId = "Grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.RetrieveColumnGrbit", MessageId = "Grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.RetrieveKeyGrbit", MessageId = "Grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.RollbackTransactionGrbit", MessageId = "Grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.SeekGrbit", MessageId = "Grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Server2003.Server2003Grbits", MessageId = "Grbits", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Server2003.Server2003Param", MessageId = "Param", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Server2003.SnapshotAbortGrbit", MessageId = "Grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Server2003.UpdateGrbit", MessageId = "Grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.SetColumnDefaultValueGrbit", MessageId = "Grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.SetColumnGrbit", MessageId = "Grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.SetCurrentIndexGrbit", MessageId = "Grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.SetIndexRangeGrbit", MessageId = "Grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.SetTableSequentialGrbit", MessageId = "Grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.SnapshotFreezeGrbit", MessageId = "Grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.SnapshotPrepareGrbit", MessageId = "Grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.SnapshotThawGrbit", MessageId = "Grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.SpaceHintsGrbit", MessageId = "Grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.TempTableGrbit", MessageId = "Grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.TermGrbit", MessageId = "Grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Vista.SnapshotEndGrbit", MessageId = "Grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Vista.SnapshotGetFreezeInfoGrbit", MessageId = "Grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Vista.SnapshotPrepareInstanceGrbit", MessageId = "Grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Vista.SnapshotTruncateLogGrbit", MessageId = "Grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Vista.VistaColtyp", MessageId = "Coltyp", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Vista.VistaGrbits", MessageId = "Grbits", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Vista.VistaParam", MessageId = "Param", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Windows7.CrashDumpGrbit", MessageId = "Grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Windows7.PrereadKeysGrbit", MessageId = "Grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Windows7.PrereadKeysGrbit", MessageId = "Preread", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Windows7.Windows7Grbits", MessageId = "Grbits", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Windows7.Windows7Param", MessageId = "Param", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInvalidPrereadException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentMustBeSeparateLongValueException", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInvalidPrereadException", MessageId = "Preread", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Windows7.Windows7IdxInfo", MessageId = "Idx", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Windows8.StopServiceGrbit", MessageId = "Grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Windows8.Windows8IdxInfo", MessageId = "Idx", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_err.#InvalidPreread", MessageId = "Preread", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetSystemParameter(Microsoft.Isam.Esent.Interop.JET_INSTANCE,Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_param,System.IntPtr&,System.String&,System.Int32)", MessageId = "Param", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetSystemParameter(Microsoft.Isam.Esent.Interop.JET_INSTANCE,Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_param,System.IntPtr&,System.String&,System.Int32)", MessageId = "param", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetSystemParameter(Microsoft.Isam.Esent.Interop.JET_INSTANCE,Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_param,System.IntPtr&,System.String&,System.Int32)", MessageId = "paramid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetGetSystemParameter(Microsoft.Isam.Esent.Interop.JET_INSTANCE,Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_param,System.IntPtr&,System.String&,System.Int32)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetSetSystemParameter(Microsoft.Isam.Esent.Interop.JET_INSTANCE,Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_param,System.IntPtr,System.String)", MessageId = "param", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetSetSystemParameter(Microsoft.Isam.Esent.Interop.JET_INSTANCE,Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_param,System.IntPtr,System.String)", MessageId = "paramid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetSetSystemParameter(Microsoft.Isam.Esent.Interop.JET_INSTANCE,Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_param,System.IntPtr,System.String)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.InstanceParameters.#PrereadIOMax", MessageId = "Preread", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Transaction.#Commit(Microsoft.Isam.Esent.Interop.CommitTransactionGrbit,System.TimeSpan,Microsoft.Isam.Esent.Interop.Windows8.JET_COMMIT_ID&)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Windows8.JET_COMMIT_ID.#op_Equality(Microsoft.Isam.Esent.Interop.Windows8.JET_COMMIT_ID,Microsoft.Isam.Esent.Interop.Windows8.JET_COMMIT_ID)", MessageId = "rhs", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Windows8.JET_COMMIT_ID.#op_GreaterThan(Microsoft.Isam.Esent.Interop.Windows8.JET_COMMIT_ID,Microsoft.Isam.Esent.Interop.Windows8.JET_COMMIT_ID)", MessageId = "rhs", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Windows8.JET_COMMIT_ID.#op_GreaterThanOrEqual(Microsoft.Isam.Esent.Interop.Windows8.JET_COMMIT_ID,Microsoft.Isam.Esent.Interop.Windows8.JET_COMMIT_ID)", MessageId = "rhs", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Windows8.JET_COMMIT_ID.#op_Inequality(Microsoft.Isam.Esent.Interop.Windows8.JET_COMMIT_ID,Microsoft.Isam.Esent.Interop.Windows8.JET_COMMIT_ID)", MessageId = "rhs", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Windows8.JET_COMMIT_ID.#op_LessThan(Microsoft.Isam.Esent.Interop.Windows8.JET_COMMIT_ID,Microsoft.Isam.Esent.Interop.Windows8.JET_COMMIT_ID)", MessageId = "rhs", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Windows8.JET_COMMIT_ID.#op_LessThanOrEqual(Microsoft.Isam.Esent.Interop.Windows8.JET_COMMIT_ID,Microsoft.Isam.Esent.Interop.Windows8.JET_COMMIT_ID)", MessageId = "rhs", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Windows8.JET_ERRINFOBASIC.#errcat", MessageId = "errcat", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Windows8.JET_ERRINFOBASIC.#rgCategoricalHierarchy", MessageId = "rg", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Windows8.JET_ERRINFOBASIC.#rgszSourceFile", MessageId = "rgsz", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Windows8.JET_INDEX_COLUMN.#columnid", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Windows8.JET_INDEX_COLUMN.#grbit", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Windows8.JET_INDEX_COLUMN.#relop", MessageId = "relop", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Windows8.StopServiceGrbit.#QuiesceCaches", MessageId = "Quiesce", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Windows8.Windows8Api.#JetBeginTransaction3(Microsoft.Isam.Esent.Interop.JET_SESID,System.Int64,Microsoft.Isam.Esent.Interop.BeginTransactionGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Windows8.Windows8Api.#JetBeginTransaction3(Microsoft.Isam.Esent.Interop.JET_SESID,System.Int64,Microsoft.Isam.Esent.Interop.BeginTransactionGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Windows8.Windows8Api.#JetCommitTransaction2(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.CommitTransactionGrbit,System.TimeSpan,Microsoft.Isam.Esent.Interop.Windows8.JET_COMMIT_ID&)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Windows8.Windows8Api.#JetCommitTransaction2(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.CommitTransactionGrbit,System.TimeSpan,Microsoft.Isam.Esent.Interop.Windows8.JET_COMMIT_ID&)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Windows8.Windows8Api.#JetCreateIndex4(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_INDEXCREATE[],System.Int32)", MessageId = "indexcreates", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Windows8.Windows8Api.#JetCreateIndex4(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_INDEXCREATE[],System.Int32)", MessageId = "num", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Windows8.Windows8Api.#JetCreateIndex4(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_INDEXCREATE[],System.Int32)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Windows8.Windows8Api.#JetCreateIndex4(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.JET_INDEXCREATE[],System.Int32)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Windows8.Windows8Api.#JetCreateTableColumnIndex4(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,Microsoft.Isam.Esent.Interop.JET_TABLECREATE)", MessageId = "dbid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Windows8.Windows8Api.#JetCreateTableColumnIndex4(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,Microsoft.Isam.Esent.Interop.JET_TABLECREATE)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Windows8.Windows8Api.#JetCreateTableColumnIndex4(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,Microsoft.Isam.Esent.Interop.JET_TABLECREATE)", MessageId = "tablecreate", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Windows8.Windows8Api.#JetGetErrorInfo(Microsoft.Isam.Esent.Interop.JET_err,Microsoft.Isam.Esent.Interop.Windows8.JET_ERRINFOBASIC&)", MessageId = "errinfo", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Windows8.Windows8Api.#JetOpenTemporaryTable2(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.Vista.JET_OPENTEMPORARYTABLE)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Windows8.Windows8Api.#JetOpenTemporaryTable2(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.Vista.JET_OPENTEMPORARYTABLE)", MessageId = "temporarytable", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Windows8.Windows8Api.#JetPrereadIndexRanges(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.Windows8.JET_INDEX_RANGE[],System.Int32,System.Int32,System.Int32&,Microsoft.Isam.Esent.Interop.JET_COLUMNID[],Microsoft.Isam.Esent.Interop.Windows8.PrereadIndexRangesGrbit)", MessageId = "Preread", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Windows8.Windows8Api.#JetPrereadIndexRanges(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.Windows8.JET_INDEX_RANGE[],System.Int32,System.Int32,System.Int32&,Microsoft.Isam.Esent.Interop.JET_COLUMNID[],Microsoft.Isam.Esent.Interop.Windows8.PrereadIndexRangesGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Windows8.Windows8Api.#JetPrereadIndexRanges(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.Windows8.JET_INDEX_RANGE[],System.Int32,System.Int32,System.Int32&,Microsoft.Isam.Esent.Interop.JET_COLUMNID[],Microsoft.Isam.Esent.Interop.Windows8.PrereadIndexRangesGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Windows8.Windows8Api.#JetPrereadIndexRanges(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.Windows8.JET_INDEX_RANGE[],System.Int32,System.Int32,System.Int32&,Microsoft.Isam.Esent.Interop.JET_COLUMNID[],Microsoft.Isam.Esent.Interop.Windows8.PrereadIndexRangesGrbit)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Windows8.Windows8Api.#JetResizeDatabase(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.Int32,System.Int32&,Microsoft.Isam.Esent.Interop.Windows8.ResizeDatabaseGrbit)", MessageId = "dbid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Windows8.Windows8Api.#JetResizeDatabase(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.Int32,System.Int32&,Microsoft.Isam.Esent.Interop.Windows8.ResizeDatabaseGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Windows8.Windows8Api.#JetResizeDatabase(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.Int32,System.Int32&,Microsoft.Isam.Esent.Interop.Windows8.ResizeDatabaseGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Windows8.Windows8Api.#JetSetCursorFilter(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.Windows8.JET_INDEX_COLUMN[],Microsoft.Isam.Esent.Interop.Windows8.CursorFilterGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Windows8.Windows8Api.#JetSetCursorFilter(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.Windows8.JET_INDEX_COLUMN[],Microsoft.Isam.Esent.Interop.Windows8.CursorFilterGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Windows8.Windows8Api.#JetSetCursorFilter(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.Windows8.JET_INDEX_COLUMN[],Microsoft.Isam.Esent.Interop.Windows8.CursorFilterGrbit)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Windows8.Windows8Api.#JetSetSessionParameter(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.Windows8.JET_sesparam,System.Byte[],System.Int32)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Windows8.Windows8Api.#JetSetSessionParameter(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.Windows8.JET_sesparam,System.Byte[],System.Int32)", MessageId = "sesparamid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Windows8.Windows8Api.#JetTryPrereadIndexRanges(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.Windows8.JET_INDEX_RANGE[],System.Int32,System.Int32,System.Int32&,Microsoft.Isam.Esent.Interop.JET_COLUMNID[],Microsoft.Isam.Esent.Interop.Windows8.PrereadIndexRangesGrbit)", MessageId = "Preread", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Windows8.Windows8Api.#JetTryPrereadIndexRanges(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.Windows8.JET_INDEX_RANGE[],System.Int32,System.Int32,System.Int32&,Microsoft.Isam.Esent.Interop.JET_COLUMNID[],Microsoft.Isam.Esent.Interop.Windows8.PrereadIndexRangesGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Windows8.Windows8Api.#JetTryPrereadIndexRanges(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.Windows8.JET_INDEX_RANGE[],System.Int32,System.Int32,System.Int32&,Microsoft.Isam.Esent.Interop.JET_COLUMNID[],Microsoft.Isam.Esent.Interop.Windows8.PrereadIndexRangesGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Windows8.Windows8Api.#JetTryPrereadIndexRanges(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,Microsoft.Isam.Esent.Interop.Windows8.JET_INDEX_RANGE[],System.Int32,System.Int32,System.Int32&,Microsoft.Isam.Esent.Interop.JET_COLUMNID[],Microsoft.Isam.Esent.Interop.Windows8.PrereadIndexRangesGrbit)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Windows8.Windows8Api.#PrereadKeyRanges(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.Byte[][],System.Int32[],System.Byte[][],System.Int32[],System.Int32,System.Int32,System.Int32&,Microsoft.Isam.Esent.Interop.JET_COLUMNID[],Microsoft.Isam.Esent.Interop.Windows8.PrereadIndexRangesGrbit)", MessageId = "Preread", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Windows8.Windows8Api.#PrereadKeyRanges(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.Byte[][],System.Int32[],System.Byte[][],System.Int32[],System.Int32,System.Int32,System.Int32&,Microsoft.Isam.Esent.Interop.JET_COLUMNID[],Microsoft.Isam.Esent.Interop.Windows8.PrereadIndexRangesGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Windows8.Windows8Api.#PrereadKeyRanges(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.Byte[][],System.Int32[],System.Byte[][],System.Int32[],System.Int32,System.Int32,System.Int32&,Microsoft.Isam.Esent.Interop.JET_COLUMNID[],Microsoft.Isam.Esent.Interop.Windows8.PrereadIndexRangesGrbit)", MessageId = "sesid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Windows8.Windows8Api.#PrereadKeyRanges(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_TABLEID,System.Byte[][],System.Int32[],System.Byte[][],System.Int32[],System.Int32,System.Int32,System.Int32&,Microsoft.Isam.Esent.Interop.JET_COLUMNID[],Microsoft.Isam.Esent.Interop.Windows8.PrereadIndexRangesGrbit)", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Windows8.Windows8Param.#PrereadIOMax", MessageId = "Preread", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Windows8.Windows8Api.#JetStopServiceInstance2(Microsoft.Isam.Esent.Interop.JET_INSTANCE,Microsoft.Isam.Esent.Interop.Windows8.StopServiceGrbit)", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "namespace", Target = "Microsoft.Isam.Esent.Interop.Windows8", MessageId = "Esent", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "namespace", Target = "Microsoft.Isam.Esent.Interop.Windows8", MessageId = "Isam", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Windows8.CursorFilterGrbit", MessageId = "Grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Windows8.DurableCommitCallbackGrbit", MessageId = "Grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Windows8.ErrorInfoGrbit", MessageId = "Grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Windows8.JET_PFNDURABLECOMMITCALLBACK", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Windows8.JET_PFNDURABLECOMMITCALLBACK", MessageId = "p", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Windows8.JET_sesparam", MessageId = "sesparam", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Windows8.JetIndexColumnGrbit", MessageId = "Grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Windows8.JetRelop", MessageId = "Relop", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Windows8.PrereadIndexRangesGrbit", MessageId = "Grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Windows8.PrereadIndexRangesGrbit", MessageId = "Preread", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Windows8.ResizeDatabaseGrbit", MessageId = "Grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Windows8.Windows8Grbits", MessageId = "Grbits", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Windows8.Windows8Param", MessageId = "Param", Justification = "Stylebot Generated FxCop Exclusion.")] +#endregion + +[module: SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.IJET_LOGTIME", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_BKINFO", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_BKLOGTIME", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_CALLBACK", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_cbtyp", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_coltyp", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_COLUMNBASE", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_COLUMNCREATE", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_COLUMNDEF", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_COLUMNID", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_COLUMNLIST", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_CONDITIONALCOLUMN", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_CP", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_DBID", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_DbInfo", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_DBINFOMISC", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_dbstate", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_ENUMCOLUMN", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_ENUMCOLUMNID", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_ENUMCOLUMNVALUE", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_err", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_filetype", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_HANDLE", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_IdxInfo", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_INDEXCREATE", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_INDEXID", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_INDEXLIST", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_INDEXRANGE", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_INSTANCE", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_INSTANCE_INFO", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_LGPOS", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_LOGTIME", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_LS", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_Move", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_OBJECTINFO", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_OBJECTLIST", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_objtyp", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_OSSNAPID", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_param", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_PFNREALLOC", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_PFNSTATUS", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_prep", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_RECORDLIST", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_RECPOS", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_RECSIZE", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_RETINFO", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_RETRIEVECOLUMN", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_RSTINFO", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_RSTMAP", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_SESID", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_SETCOLUMN", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_SETINFO", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_SIGNATURE", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_SNP", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_SNPROG", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_SNT", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_SPACEHINTS", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_TABLECREATE", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_TABLEID", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_TblInfo", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_UNICODEINDEX", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_wrn", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Vista.JET_InstanceMiscInfo", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Vista.JET_OPENTEMPORARYTABLE", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Vista.JET_RECSIZE", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Vista.JET_THREADSTATS", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Windows8.JET_COMMIT_ID", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Windows8.JET_ERRCAT", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Windows8.JET_ERRINFOBASIC", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Windows8.JET_ErrorInfo", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Windows8.JET_INDEX_COLUMN", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Windows8.JET_INDEX_RANGE", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Windows8.JET_PFNDURABLECOMMITCALLBACK", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Windows8.JET_sesparam", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.ColumndefGrbit.#ColumnNotNULL", MessageId = "NULL", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.ColumnInfo.#Cp", MessageId = "Cp", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.CreateTableColumnIndexGrbit.#FixedDDL", MessageId = "DDL", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.IndexSegment.#IsASCII", MessageId = "ASCII", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.InstanceParameters.#DbExtensionSize", MessageId = "Db", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_BKINFO.#bklogtimeMark", MessageId = "bklogtime", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_BKINFO.#genHigh", MessageId = "gen", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_BKINFO.#genLow", MessageId = "gen", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_BKINFO.#lgposMark", MessageId = "lgpos", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_coltyp.#IEEEDouble", MessageId = "IEEE", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_coltyp.#IEEESingle", MessageId = "IEEE", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_COLUMNBASE.#cbMax", MessageId = "cb", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_COLUMNBASE.#coltyp", MessageId = "coltyp", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_COLUMNBASE.#columnid", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_COLUMNBASE.#cp", MessageId = "cp", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_COLUMNBASE.#grbit", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_COLUMNBASE.#szBaseColumnName", MessageId = "sz", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_COLUMNBASE.#szBaseTableName", MessageId = "sz", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_COLUMNCREATE.#cbDefault", MessageId = "cb", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_COLUMNCREATE.#cbMax", MessageId = "cb", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_COLUMNCREATE.#coltyp", MessageId = "coltyp", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_COLUMNCREATE.#columnid", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_COLUMNCREATE.#cp", MessageId = "cp", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_COLUMNCREATE.#err", MessageId = "err", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_COLUMNCREATE.#grbit", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_COLUMNCREATE.#pvDefault", MessageId = "pv", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_COLUMNCREATE.#szColumnName", MessageId = "sz", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_COLUMNDEF.#cbMax", MessageId = "cb", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_COLUMNDEF.#coltyp", MessageId = "coltyp", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_COLUMNDEF.#columnid", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_COLUMNDEF.#cp", MessageId = "cp", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_COLUMNDEF.#grbit", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_COLUMNLIST.#columnidcbMax", MessageId = "columnidcb", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_COLUMNLIST.#columnidcoltyp", MessageId = "columnidcoltyp", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_COLUMNLIST.#columnidcolumnid", MessageId = "columnidcolumnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_COLUMNLIST.#columnidcolumnname", MessageId = "columnidcolumnname", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_COLUMNLIST.#columnidCp", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_COLUMNLIST.#columnidCp", MessageId = "Cp", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_COLUMNLIST.#columnidDefault", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_COLUMNLIST.#columnidgrbit", MessageId = "columnidgrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_COLUMNLIST.#cRecord", MessageId = "c", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_COLUMNLIST.#tableid", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_CONDITIONALCOLUMN.#grbit", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_CONDITIONALCOLUMN.#szColumnName", MessageId = "sz", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_CP.#ASCII", MessageId = "ASCII", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_DbInfo.#LCID", MessageId = "LCID", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_DBINFOMISC.#bkinfoCopyPrev", MessageId = "bkinfo", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_DBINFOMISC.#bkinfoDiffPrev", MessageId = "bkinfo", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_DBINFOMISC.#bkinfoFullCur", MessageId = "bkinfo", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_DBINFOMISC.#bkinfoFullPrev", MessageId = "bkinfo", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_DBINFOMISC.#bkinfoIncPrev", MessageId = "bkinfo", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_DBINFOMISC.#cbPageSize", MessageId = "cb", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_DBINFOMISC.#dbstate", MessageId = "dbstate", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_DBINFOMISC.#dwBuildNumber", MessageId = "dw", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_DBINFOMISC.#dwMajorVersion", MessageId = "dw", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_DBINFOMISC.#dwMinorVersion", MessageId = "dw", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_DBINFOMISC.#fShadowingDisabled", MessageId = "f", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_DBINFOMISC.#fUpgradeDb", MessageId = "Db", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_DBINFOMISC.#fUpgradeDb", MessageId = "f", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_DBINFOMISC.#genCommitted", MessageId = "gen", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_DBINFOMISC.#genMaxRequired", MessageId = "gen", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_DBINFOMISC.#genMinRequired", MessageId = "gen", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_DBINFOMISC.#lgposAttach", MessageId = "lgpos", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_DBINFOMISC.#lgposConsistent", MessageId = "lgpos", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_DBINFOMISC.#lgposDetach", MessageId = "lgpos", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_DBINFOMISC.#logtimeAttach", MessageId = "logtime", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_DBINFOMISC.#logtimeBadChecksum", MessageId = "logtime", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_DBINFOMISC.#logtimeConsistent", MessageId = "logtime", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_DBINFOMISC.#logtimeDetach", MessageId = "logtime", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_DBINFOMISC.#logtimeECCFixFail", MessageId = "ECC", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_DBINFOMISC.#logtimeECCFixFail", MessageId = "logtime", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_DBINFOMISC.#logtimeECCFixSuccess", MessageId = "ECC", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_DBINFOMISC.#logtimeECCFixSuccess", MessageId = "logtime", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_DBINFOMISC.#logtimeGenMaxCreate", MessageId = "logtime", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_DBINFOMISC.#logtimeRepair", MessageId = "logtime", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_DBINFOMISC.#lSPNumber", MessageId = "l", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_DBINFOMISC.#signDb", MessageId = "Db", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_DBINFOMISC.#signDb", MessageId = "sign", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_DBINFOMISC.#signLog", MessageId = "sign", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_DBINFOMISC.#ulBadChecksum", MessageId = "ul", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_DBINFOMISC.#ulBadChecksumOld", MessageId = "ul", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_DBINFOMISC.#ulECCFixFail", MessageId = "ECC", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_DBINFOMISC.#ulECCFixFail", MessageId = "ul", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_DBINFOMISC.#ulECCFixFailOld", MessageId = "ECC", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_DBINFOMISC.#ulECCFixFailOld", MessageId = "ul", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_DBINFOMISC.#ulECCFixSuccess", MessageId = "ECC", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_DBINFOMISC.#ulECCFixSuccess", MessageId = "ul", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_DBINFOMISC.#ulECCFixSuccessOld", MessageId = "ECC", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_DBINFOMISC.#ulECCFixSuccessOld", MessageId = "ul", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_DBINFOMISC.#ulRepairCount", MessageId = "ul", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_DBINFOMISC.#ulRepairCountOld", MessageId = "ul", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_DBINFOMISC.#ulUpdate", MessageId = "ul", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_DBINFOMISC.#ulVersion", MessageId = "ul", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_ENUMCOLUMN.#cbData", MessageId = "cb", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_ENUMCOLUMN.#cEnumColumnValue", MessageId = "c", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_ENUMCOLUMN.#columnid", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_ENUMCOLUMN.#err", MessageId = "err", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_ENUMCOLUMN.#pvData", MessageId = "pv", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_ENUMCOLUMN.#rgEnumColumnValue", MessageId = "rg", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_ENUMCOLUMNID.#columnid", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_ENUMCOLUMNID.#ctagSequence", MessageId = "ctag", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_ENUMCOLUMNID.#rgtagSequence", MessageId = "rgtag", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_ENUMCOLUMNVALUE.#cbData", MessageId = "cb", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_ENUMCOLUMNVALUE.#err", MessageId = "err", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_ENUMCOLUMNVALUE.#itagSequence", MessageId = "itag", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_ENUMCOLUMNVALUE.#pvData", MessageId = "pv", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_err.#BadDbSignature", MessageId = "Db", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_err.#BadSLVSignature", MessageId = "SLV", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_err.#CannotNestDDL", MessageId = "DDL", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_err.#DbTimeCorrupted", MessageId = "Db", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_err.#DbTimeTooNew", MessageId = "Db", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_err.#DbTimeTooOld", MessageId = "Db", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_err.#DDLNotInheritable", MessageId = "DDL", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_err.#DTCCallbackUnexpectedError", MessageId = "DTC", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_err.#DTCMissingCallback", MessageId = "DTC", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_err.#DTCMissingCallbackOnRecovery", MessageId = "DTC", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_err.#FileIOBeyondEOF", MessageId = "EOF", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_err.#FixedDDL", MessageId = "DDL", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_err.#FixedInheritedDDL", MessageId = "DDL", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_err.#InvalidCreateDbVersion", MessageId = "Db", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_err.#MustDisableLoggingForDbUpgrade", MessageId = "Db", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_err.#OutOfLongValueIDs", MessageId = "IDs", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_err.#OutOfObjectIDs", MessageId = "IDs", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_err.#SLVBufferTooSmall", MessageId = "SLV", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_err.#SLVColumnCannotDelete", MessageId = "SLV", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_err.#SLVColumnDefaultValueNotAllowed", MessageId = "SLV", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_err.#SLVCorrupted", MessageId = "SLV", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_err.#SLVDatabaseMissing", MessageId = "SLV", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_err.#SLVEAListCorrupt", MessageId = "SLVEA", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_err.#SLVEAListTooBig", MessageId = "SLVEA", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_err.#SLVEAListZeroAllocation", MessageId = "SLVEA", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_err.#SLVFileAccessDenied", MessageId = "SLV", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_err.#SLVFileInUse", MessageId = "SLV", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_err.#SLVFileInvalidPath", MessageId = "SLV", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_err.#SLVFileIO", MessageId = "SLV", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_err.#SLVFileNotFound", MessageId = "SLV", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_err.#SLVFileStale", MessageId = "SLV", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_err.#SLVFileUnknown", MessageId = "SLV", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_err.#SLVHeaderBadChecksum", MessageId = "SLV", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_err.#SLVHeaderCorrupted", MessageId = "SLV", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_err.#SLVInvalidPath", MessageId = "SLV", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_err.#SLVOwnerMapAlreadyExists", MessageId = "SLV", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_err.#SLVOwnerMapCorrupted", MessageId = "SLV", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_err.#SLVOwnerMapPageNotFound", MessageId = "SLV", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_err.#SLVPagesNotCommitted", MessageId = "SLV", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_err.#SLVPagesNotDeleted", MessageId = "SLV", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_err.#SLVPagesNotFree", MessageId = "SLV", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_err.#SLVPagesNotReserved", MessageId = "SLV", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_err.#SLVProviderNotLoaded", MessageId = "SLV", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_err.#SLVProviderVersionMismatch", MessageId = "SLV", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_err.#SLVReadVerifyFailure", MessageId = "SLV", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_err.#SLVRootNotSpecified", MessageId = "SLV", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_err.#SLVRootPathInvalid", MessageId = "SLV", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_err.#SLVRootStillOpen", MessageId = "SLV", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_err.#SLVSpaceCorrupted", MessageId = "SLV", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_err.#SLVSpaceWriteConflict", MessageId = "SLV", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_err.#SLVStreamingFileAlreadyExists", MessageId = "SLV", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_err.#SLVStreamingFileFull", MessageId = "SLV", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_err.#SLVStreamingFileInUse", MessageId = "SLV", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_err.#SLVStreamingFileMissing", MessageId = "SLV", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_err.#SLVStreamingFileNotCreated", MessageId = "SLV", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_err.#SLVStreamingFileReadOnly", MessageId = "SLV", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_err.#SQLLinkNotSupported", MessageId = "SQL", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_err.#TaggedNotNULL", MessageId = "NULL", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_IdxInfo.#LCID", MessageId = "LCID", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_INDEXCREATE.#cbKey", MessageId = "cb", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_INDEXCREATE.#cbKeyMost", MessageId = "cb", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_INDEXCREATE.#cbVarSegMac", MessageId = "cb", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_INDEXCREATE.#cConditionalColumn", MessageId = "c", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_INDEXCREATE.#err", MessageId = "err", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_INDEXCREATE.#grbit", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_INDEXCREATE.#pidxUnicode", MessageId = "pidx", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_INDEXCREATE.#pSpaceHints", MessageId = "p", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_INDEXCREATE.#rgconditionalcolumn", MessageId = "rgconditionalcolumn", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_INDEXCREATE.#szIndexName", MessageId = "sz", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_INDEXCREATE.#szKey", MessageId = "sz", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_INDEXCREATE.#ulDensity", MessageId = "ul", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_INDEXLIST.#columnidcColumn", MessageId = "columnidc", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_INDEXLIST.#columnidcEntry", MessageId = "columnidc", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_INDEXLIST.#columnidcKey", MessageId = "columnidc", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_INDEXLIST.#columnidcoltyp", MessageId = "columnidcoltyp", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_INDEXLIST.#columnidcolumnid", MessageId = "columnidcolumnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_INDEXLIST.#columnidcolumnname", MessageId = "columnidcolumnname", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_INDEXLIST.#columnidCp", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_INDEXLIST.#columnidCp", MessageId = "Cp", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_INDEXLIST.#columnidcPage", MessageId = "columnidc", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_INDEXLIST.#columnidgrbitColumn", MessageId = "columnidgrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_INDEXLIST.#columnidgrbitIndex", MessageId = "columnidgrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_INDEXLIST.#columnidiColumn", MessageId = "columnidi", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_INDEXLIST.#columnidindexname", MessageId = "columnidindexname", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_INDEXLIST.#columnidLangid", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_INDEXLIST.#columnidLCMapFlags", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_INDEXLIST.#cRecord", MessageId = "c", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_INDEXLIST.#tableid", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_INDEXRANGE.#grbit", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_INDEXRANGE.#tableid", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_INSTANCE_INFO.#cDatabases", MessageId = "c", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_INSTANCE_INFO.#hInstanceId", MessageId = "h", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_INSTANCE_INFO.#szDatabaseFileName", MessageId = "sz", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_INSTANCE_INFO.#szInstanceName", MessageId = "sz", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_LGPOS.#ib", MessageId = "ib", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_LGPOS.#isec", MessageId = "isec", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_LGPOS.#lGeneration", MessageId = "l", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_OBJECTINFO.#cPage", MessageId = "c", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_OBJECTINFO.#cRecord", MessageId = "c", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_OBJECTINFO.#flags", MessageId = "flags", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_OBJECTINFO.#grbit", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_OBJECTINFO.#objtyp", MessageId = "objtyp", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_OBJECTLIST.#columnidcPage", MessageId = "columnidc", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_OBJECTLIST.#columnidcRecord", MessageId = "columnidc", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_OBJECTLIST.#columnidflags", MessageId = "columnidflags", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_OBJECTLIST.#columnidgrbit", MessageId = "columnidgrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_OBJECTLIST.#columnidobjectname", MessageId = "columnidobjectname", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_OBJECTLIST.#columnidobjtyp", MessageId = "columnidobjtyp", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_OBJECTLIST.#cRecord", MessageId = "c", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_OBJECTLIST.#tableid", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_param.#DbExtensionSize", MessageId = "Db", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_RECORDLIST.#columnidBookmark", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_RECORDLIST.#cRecords", MessageId = "c", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_RECORDLIST.#tableid", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_RECPOS.#centriesLT", MessageId = "centries", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_RECPOS.#centriesTotal", MessageId = "centries", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_RECSIZE.#cbData", MessageId = "cb", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_RECSIZE.#cbDataCompressed", MessageId = "cb", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_RECSIZE.#cbLongValueData", MessageId = "cb", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_RECSIZE.#cbLongValueDataCompressed", MessageId = "cb", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_RECSIZE.#cbLongValueOverhead", MessageId = "cb", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_RECSIZE.#cbOverhead", MessageId = "cb", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_RECSIZE.#cCompressedColumns", MessageId = "c", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_RECSIZE.#cLongValues", MessageId = "c", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_RECSIZE.#cMultiValues", MessageId = "c", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_RECSIZE.#cNonTaggedColumns", MessageId = "c", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_RECSIZE.#cTaggedColumns", MessageId = "c", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_RETINFO.#columnidNextTagged", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_RETINFO.#ibLongValue", MessageId = "ib", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_RETINFO.#itagSequence", MessageId = "itag", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_RETRIEVECOLUMN.#cbActual", MessageId = "cb", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_RETRIEVECOLUMN.#cbData", MessageId = "cb", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_RETRIEVECOLUMN.#columnid", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_RETRIEVECOLUMN.#columnidNextTagged", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_RETRIEVECOLUMN.#err", MessageId = "err", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_RETRIEVECOLUMN.#grbit", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_RETRIEVECOLUMN.#ibData", MessageId = "ib", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_RETRIEVECOLUMN.#ibLongValue", MessageId = "ib", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_RETRIEVECOLUMN.#itagSequence", MessageId = "itag", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_RETRIEVECOLUMN.#pvData", MessageId = "pv", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_RSTINFO.#crstmap", MessageId = "crstmap", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_RSTINFO.#lgposStop", MessageId = "lgpos", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_RSTINFO.#logtimeStop", MessageId = "logtime", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_RSTINFO.#pfnStatus", MessageId = "pfn", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_RSTINFO.#rgrstmap", MessageId = "rgrstmap", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_RSTMAP.#szDatabaseName", MessageId = "sz", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_RSTMAP.#szNewDatabaseName", MessageId = "sz", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_SETCOLUMN.#cbData", MessageId = "cb", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_SETCOLUMN.#columnid", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_SETCOLUMN.#err", MessageId = "err", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_SETCOLUMN.#grbit", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_SETCOLUMN.#ibData", MessageId = "ib", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_SETCOLUMN.#ibLongValue", MessageId = "ib", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_SETCOLUMN.#itagSequence", MessageId = "itag", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_SETCOLUMN.#pvData", MessageId = "pv", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_SETINFO.#ibLongValue", MessageId = "ib", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_SETINFO.#itagSequence", MessageId = "itag", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_SNPROG.#cunitDone", MessageId = "cunit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_SNPROG.#cunitTotal", MessageId = "cunit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_SPACEHINTS.#cbInitial", MessageId = "cb", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_SPACEHINTS.#cbMaxExtent", MessageId = "cb", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_SPACEHINTS.#cbMinExtent", MessageId = "cb", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_SPACEHINTS.#grbit", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_SPACEHINTS.#ulGrowth", MessageId = "ul", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_SPACEHINTS.#ulInitialDensity", MessageId = "ul", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_SPACEHINTS.#ulMaintDensity", MessageId = "ul", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_TABLECREATE.#cbSeparateLV", MessageId = "cb", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_TABLECREATE.#cbtyp", MessageId = "cbtyp", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_TABLECREATE.#cColumns", MessageId = "c", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_TABLECREATE.#cCreated", MessageId = "c", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_TABLECREATE.#cIndexes", MessageId = "c", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_TABLECREATE.#grbit", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_TABLECREATE.#pLVSpacehints", MessageId = "p", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_TABLECREATE.#pSeqSpacehints", MessageId = "p", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_TABLECREATE.#rgcolumncreate", MessageId = "rgcolumncreate", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_TABLECREATE.#rgindexcreate", MessageId = "rgindexcreate", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_TABLECREATE.#szCallback", MessageId = "sz", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_TABLECREATE.#szTableName", MessageId = "sz", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_TABLECREATE.#szTemplateTableName", MessageId = "sz", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_TABLECREATE.#tableid", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_TABLECREATE.#ulDensity", MessageId = "ul", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_TABLECREATE.#ulPages", MessageId = "ul", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_UNICODEINDEX.#dwMapFlags", MessageId = "dw", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_UNICODEINDEX.#lcid", MessageId = "lcid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_UNICODEINDEX.#szLocaleName", MessageId = "sz", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_wrn.#DTCCommitTransaction", MessageId = "DTC", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_wrn.#DTCRollbackTransaction", MessageId = "DTC", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.ObjectInfoFlags.#TableFixedDDL", MessageId = "DDL", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.OpenTableGrbit.#PermitDDL", MessageId = "DDL", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.JET_OPENTEMPORARYTABLE.#cbKeyMost", MessageId = "cb", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.JET_OPENTEMPORARYTABLE.#cbVarSegMac", MessageId = "cb", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.JET_OPENTEMPORARYTABLE.#ccolumn", MessageId = "ccolumn", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.JET_OPENTEMPORARYTABLE.#grbit", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.JET_OPENTEMPORARYTABLE.#pidxunicode", MessageId = "pidxunicode", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.JET_OPENTEMPORARYTABLE.#prgcolumndef", MessageId = "prgcolumndef", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.JET_OPENTEMPORARYTABLE.#prgcolumnid", MessageId = "prgcolumnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.JET_OPENTEMPORARYTABLE.#tableid", MessageId = "tableid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.JET_RECSIZE.#cbOverhead", MessageId = "cb", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.JET_RECSIZE.#cbLongValueData", MessageId = "cb", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.JET_RECSIZE.#cNonTaggedColumns", MessageId = "c", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.JET_RECSIZE.#cbData", MessageId = "cb", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.JET_RECSIZE.#cLongValues", MessageId = "c", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.JET_RECSIZE.#cbLongValueDataCompressed", MessageId = "cb", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.JET_RECSIZE.#cbDataCompressed", MessageId = "cb", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.JET_RECSIZE.#cTaggedColumns", MessageId = "c", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.JET_RECSIZE.#cMultiValues", MessageId = "c", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.JET_RECSIZE.#cbLongValueOverhead", MessageId = "cb", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.JET_RECSIZE.#cCompressedColumns", MessageId = "c", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.JET_THREADSTATS.#cbLogRecord", MessageId = "cb", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.JET_THREADSTATS.#cLogRecord", MessageId = "c", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.JET_THREADSTATS.#cPageDirtied", MessageId = "c", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.JET_THREADSTATS.#cPagePreread", MessageId = "c", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.JET_THREADSTATS.#cPageRead", MessageId = "c", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.JET_THREADSTATS.#cPageRedirtied", MessageId = "c", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.JET_THREADSTATS.#cPageReferenced", MessageId = "c", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.VistaColtyp.#GUID", MessageId = "GUID", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Windows7.Windows7Param.#DbScanIntervalMaxSec", MessageId = "Db", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Windows7.Windows7Param.#DbScanIntervalMinSec", MessageId = "Db", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Windows7.Windows7Param.#DbScanThrottle", MessageId = "Db", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Windows7.Windows7Param.#EnableDbScanInRecovery", MessageId = "Db", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Windows7.Windows7Grbits.#EnableCreateDbBackgroundMaintenance", MessageId = "Db", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Windows7.Windows7Grbits.#EnableAttachDbBackgroundMaintenance", MessageId = "Db", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.InstanceParameters.#DbScanIntervalMaxSec", MessageId = "Db", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.InstanceParameters.#DbScanIntervalMinSec", MessageId = "Db", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.InstanceParameters.#DbScanThrottle", MessageId = "Db", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.InstanceParameters.#EnableDbScanInRecovery", MessageId = "Db", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Windows8.JET_ERRINFOBASIC.#errValue", MessageId = "err", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Windows8.JET_ERRINFOBASIC.#errcat", MessageId = "errcat", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Windows8.JET_ERRINFOBASIC.#lSourceLine", MessageId = "l", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Windows8.JET_ERRINFOBASIC.#rgCategoricalHierarchy", MessageId = "rg", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Windows8.JET_ERRINFOBASIC.#rgszSourceFile", MessageId = "rgsz", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Windows8.JET_INDEX_COLUMN.#columnid", MessageId = "columnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Windows8.JET_INDEX_COLUMN.#grbit", MessageId = "grbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Windows8.JET_INDEX_COLUMN.#pvData", MessageId = "pv", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Windows8.JET_INDEX_COLUMN.#relop", MessageId = "relop", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Windows8.JET_INDEX_RANGE.#endColumns", MessageId = "end", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Windows8.JET_INDEX_RANGE.#startColumns", MessageId = "start", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Windows8.Windows8Grbits.#KeepDbAttachedAtEndOfRecovery", MessageId = "Db", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentBadDbSignatureException", MessageId = "Db", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentBadSLVSignatureException", MessageId = "SLV", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentCannotNestDDLException", MessageId = "DDL", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDbTimeCorruptedException", MessageId = "Db", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDbTimeTooNewException", MessageId = "Db", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDbTimeTooOldException", MessageId = "Db", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDDLNotInheritableException", MessageId = "DDL", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDTCCallbackUnexpectedErrorException", MessageId = "DTC", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDTCMissingCallbackException", MessageId = "DTC", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDTCMissingCallbackOnRecoveryException", MessageId = "DTC", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentFileIOBeyondEOFException", MessageId = "EOF", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentFixedDDLException", MessageId = "DDL", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentFixedInheritedDDLException", MessageId = "DDL", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInvalidCreateDbVersionException", MessageId = "Db", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentMustDisableLoggingForDbUpgradeException", MessageId = "Db", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentOutOfLongValueIDsException", MessageId = "IDs", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentOutOfObjectIDsException", MessageId = "IDs", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVBufferTooSmallException", MessageId = "SLV", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVColumnCannotDeleteException", MessageId = "SLV", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVColumnDefaultValueNotAllowedException", MessageId = "SLV", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVCorruptedException", MessageId = "SLV", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVDatabaseMissingException", MessageId = "SLV", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVEAListCorruptException", MessageId = "SLVEA", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVEAListTooBigException", MessageId = "SLVEA", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVEAListZeroAllocationException", MessageId = "SLVEA", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVFileAccessDeniedException", MessageId = "SLV", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVFileInUseException", MessageId = "SLV", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVFileInvalidPathException", MessageId = "SLV", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVFileIOException", MessageId = "SLV", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVFileNotFoundException", MessageId = "SLV", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVFileStaleException", MessageId = "SLV", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVFileUnknownException", MessageId = "SLV", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVHeaderBadChecksumException", MessageId = "SLV", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVHeaderCorruptedException", MessageId = "SLV", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVInvalidPathException", MessageId = "SLV", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVOwnerMapAlreadyExistsException", MessageId = "SLV", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVOwnerMapCorruptedException", MessageId = "SLV", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVOwnerMapPageNotFoundException", MessageId = "SLV", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVPagesNotCommittedException", MessageId = "SLV", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVPagesNotDeletedException", MessageId = "SLV", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVPagesNotFreeException", MessageId = "SLV", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVPagesNotReservedException", MessageId = "SLV", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVProviderNotLoadedException", MessageId = "SLV", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVProviderVersionMismatchException", MessageId = "SLV", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVReadVerifyFailureException", MessageId = "SLV", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVRootNotSpecifiedException", MessageId = "SLV", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVRootPathInvalidException", MessageId = "SLV", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVRootStillOpenException", MessageId = "SLV", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVSpaceCorruptedException", MessageId = "SLV", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVSpaceWriteConflictException", MessageId = "SLV", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVStreamingFileAlreadyExistsException", MessageId = "SLV", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVStreamingFileFullException", MessageId = "SLV", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVStreamingFileInUseException", MessageId = "SLV", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVStreamingFileMissingException", MessageId = "SLV", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVStreamingFileNotCreatedException", MessageId = "SLV", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVStreamingFileReadOnlyException", MessageId = "SLV", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSQLLinkNotSupportedException", MessageId = "SQL", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentTaggedNotNULLException", MessageId = "NULL", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.IJET_LOGTIME", MessageId = "JET", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.IJET_LOGTIME", MessageId = "LOGTIME", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_BKINFO", MessageId = "BKINFO", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_BKINFO", MessageId = "JET", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_BKLOGTIME", MessageId = "BKLOGTIME", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_BKLOGTIME", MessageId = "JET", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_CALLBACK", MessageId = "CALLBACK", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_CALLBACK", MessageId = "JET", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_cbtyp", MessageId = "cbtyp", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_cbtyp", MessageId = "JET", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_coltyp", MessageId = "coltyp", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_coltyp", MessageId = "JET", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_COLUMNBASE", MessageId = "COLUMNBASE", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_COLUMNBASE", MessageId = "JET", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_COLUMNCREATE", MessageId = "COLUMNCREATE", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_COLUMNCREATE", MessageId = "JET", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_COLUMNDEF", MessageId = "COLUMNDEF", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_COLUMNDEF", MessageId = "JET", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_COLUMNID", MessageId = "COLUMNID", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_COLUMNID", MessageId = "JET", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_COLUMNLIST", MessageId = "COLUMNLIST", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_COLUMNLIST", MessageId = "JET", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_CONDITIONALCOLUMN", MessageId = "CONDITIONALCOLUMN", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_CONDITIONALCOLUMN", MessageId = "JET", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_CP", MessageId = "JET", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_DBID", MessageId = "DBID", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_DBID", MessageId = "JET", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_DbInfo", MessageId = "Db", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_DbInfo", MessageId = "JET", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_DBINFOMISC", MessageId = "DBINFOMISC", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_DBINFOMISC", MessageId = "JET", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_dbstate", MessageId = "dbstate", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_dbstate", MessageId = "JET", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_ENUMCOLUMN", MessageId = "ENUMCOLUMN", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_ENUMCOLUMN", MessageId = "JET", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_ENUMCOLUMNID", MessageId = "ENUMCOLUMNID", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_ENUMCOLUMNID", MessageId = "JET", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_ENUMCOLUMNVALUE", MessageId = "ENUMCOLUMNVALUE", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_ENUMCOLUMNVALUE", MessageId = "JET", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_err", MessageId = "err", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_err", MessageId = "JET", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_filetype", MessageId = "filetype", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_filetype", MessageId = "JET", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_HANDLE", MessageId = "HANDLE", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_HANDLE", MessageId = "JET", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_IdxInfo", MessageId = "JET", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_INDEXCREATE", MessageId = "INDEXCREATE", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_INDEXCREATE", MessageId = "JET", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_INDEXID", MessageId = "INDEXID", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_INDEXID", MessageId = "JET", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_INDEXLIST", MessageId = "INDEXLIST", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_INDEXLIST", MessageId = "JET", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_INDEXRANGE", MessageId = "INDEXRANGE", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_INDEXRANGE", MessageId = "JET", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_INSTANCE", MessageId = "INSTANCE", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_INSTANCE", MessageId = "JET", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_INSTANCE_INFO", MessageId = "INFO", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_INSTANCE_INFO", MessageId = "INSTANCE", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_INSTANCE_INFO", MessageId = "JET", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_LGPOS", MessageId = "JET", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_LGPOS", MessageId = "LGPOS", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_LOGTIME", MessageId = "JET", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_LOGTIME", MessageId = "LOGTIME", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_LS", MessageId = "JET", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_Move", MessageId = "JET", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_OBJECTINFO", MessageId = "JET", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_OBJECTINFO", MessageId = "OBJECTINFO", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_OBJECTLIST", MessageId = "JET", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_OBJECTLIST", MessageId = "OBJECTLIST", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_objtyp", MessageId = "JET", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_objtyp", MessageId = "objtyp", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_OSSNAPID", MessageId = "JET", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_OSSNAPID", MessageId = "OSSNAPID", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_param", MessageId = "JET", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_param", MessageId = "param", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_PFNREALLOC", MessageId = "JET", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_PFNREALLOC", MessageId = "PFNREALLOC", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_PFNSTATUS", MessageId = "JET", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_PFNSTATUS", MessageId = "PFNSTATUS", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_prep", MessageId = "JET", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_prep", MessageId = "prep", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_RECORDLIST", MessageId = "JET", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_RECORDLIST", MessageId = "RECORDLIST", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_RECPOS", MessageId = "JET", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_RECPOS", MessageId = "RECPOS", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_RECSIZE", MessageId = "JET", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_RECSIZE", MessageId = "RECSIZE", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_RETINFO", MessageId = "JET", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_RETINFO", MessageId = "RETINFO", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_RETRIEVECOLUMN", MessageId = "JET", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_RETRIEVECOLUMN", MessageId = "RETRIEVECOLUMN", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_RSTINFO", MessageId = "JET", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_RSTINFO", MessageId = "RSTINFO", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_RSTMAP", MessageId = "JET", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_RSTMAP", MessageId = "RSTMAP", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_SESID", MessageId = "JET", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_SESID", MessageId = "SESID", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_SETCOLUMN", MessageId = "JET", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_SETCOLUMN", MessageId = "SETCOLUMN", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_SETINFO", MessageId = "JET", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_SETINFO", MessageId = "SETINFO", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_SIGNATURE", MessageId = "JET", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_SIGNATURE", MessageId = "SIGNATURE", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_SNP", MessageId = "JET", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_SNP", MessageId = "SNP", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_SNPROG", MessageId = "JET", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_SNPROG", MessageId = "SNPROG", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_SNT", MessageId = "JET", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_SNT", MessageId = "SNT", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_SPACEHINTS", MessageId = "JET", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_SPACEHINTS", MessageId = "SPACEHINTS", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_TABLECREATE", MessageId = "JET", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_TABLECREATE", MessageId = "TABLECREATE", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_TABLEID", MessageId = "JET", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_TABLEID", MessageId = "TABLEID", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_TblInfo", MessageId = "JET", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_UNICODEINDEX", MessageId = "JET", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_UNICODEINDEX", MessageId = "UNICODEINDEX", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_UNICODEINDEX", MessageId = "UNICODEINDEX", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_wrn", MessageId = "JET", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_wrn", MessageId = "wrn", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.LsGrbit", MessageId = "Ls", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Vista.JET_InstanceMiscInfo", MessageId = "JET", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Vista.JET_OPENTEMPORARYTABLE", MessageId = "JET", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Vista.JET_OPENTEMPORARYTABLE", MessageId = "OPENTEMPORARYTABLE", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Vista.JET_RECSIZE", MessageId = "RECSIZE", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Vista.JET_RECSIZE", MessageId = "JET", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Vista.JET_THREADSTATS", MessageId = "JET", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Vista.JET_THREADSTATS", MessageId = "THREADSTATS", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Windows8.JET_COMMIT_ID", MessageId = "COMMIT", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Windows8.JET_COMMIT_ID", MessageId = "ID", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Windows8.JET_COMMIT_ID", MessageId = "JET", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Windows8.JET_ERRCAT", MessageId = "ERRCAT", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Windows8.JET_ERRCAT", MessageId = "JET", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Windows8.JET_ERRINFOBASIC", MessageId = "ERRINFOBASIC", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Windows8.JET_ERRINFOBASIC", MessageId = "JET", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Windows8.JET_ErrorInfo", MessageId = "JET", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Windows8.JET_INDEX_COLUMN", MessageId = "COLUMN", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Windows8.JET_INDEX_COLUMN", MessageId = "INDEX", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Windows8.JET_INDEX_COLUMN", MessageId = "JET", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Windows8.JET_INDEX_RANGE", MessageId = "INDEX", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Windows8.JET_INDEX_RANGE", MessageId = "JET", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Windows8.JET_INDEX_RANGE", MessageId = "RANGE", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Windows8.JET_PFNDURABLECOMMITCALLBACK", MessageId = "JET", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Windows8.JET_PFNDURABLECOMMITCALLBACK", MessageId = "PFNDURABLECOMMITCALLBACK", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Windows8.JET_sesparam", MessageId = "JET", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Windows8.JET_sesparam", MessageId = "sesparam", Justification = "Stylebot Generated FxCop Exclusion.")] + +[module: SuppressMessage("Microsoft.Naming", "CA1711:IdentifiersShouldNotHaveIncorrectSuffix", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.EsentStopwatch.#StartNew()", Justification = "Stylebot Generated FxCop Exclusion.")] + +#region CA1714 +[module: SuppressMessage("Microsoft.Naming", "CA1714:FlagsEnumsShouldHavePluralNames", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.AttachDatabaseGrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1714:FlagsEnumsShouldHavePluralNames", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.BackupGrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1714:FlagsEnumsShouldHavePluralNames", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.BeginExternalBackupGrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1714:FlagsEnumsShouldHavePluralNames", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.BeginTransactionGrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1714:FlagsEnumsShouldHavePluralNames", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.CloseDatabaseGrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1714:FlagsEnumsShouldHavePluralNames", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.ColumndefGrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1714:FlagsEnumsShouldHavePluralNames", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.CommitTransactionGrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1714:FlagsEnumsShouldHavePluralNames", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.CompactGrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1714:FlagsEnumsShouldHavePluralNames", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.ConditionalColumnGrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1714:FlagsEnumsShouldHavePluralNames", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.CreateDatabaseGrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1714:FlagsEnumsShouldHavePluralNames", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.CreateIndexGrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1714:FlagsEnumsShouldHavePluralNames", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.CreateInstanceGrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1714:FlagsEnumsShouldHavePluralNames", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.CreateTableColumnIndexGrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1714:FlagsEnumsShouldHavePluralNames", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.DefragGrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1714:FlagsEnumsShouldHavePluralNames", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.DeleteColumnGrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1714:FlagsEnumsShouldHavePluralNames", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.DetachDatabaseGrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1714:FlagsEnumsShouldHavePluralNames", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.DupCursorGrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1714:FlagsEnumsShouldHavePluralNames", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EndExternalBackupGrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1714:FlagsEnumsShouldHavePluralNames", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EndSessionGrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1714:FlagsEnumsShouldHavePluralNames", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EnumerateColumnsGrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1714:FlagsEnumsShouldHavePluralNames", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EscrowUpdateGrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1714:FlagsEnumsShouldHavePluralNames", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.GetLockGrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1714:FlagsEnumsShouldHavePluralNames", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.GetRecordSizeGrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1714:FlagsEnumsShouldHavePluralNames", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.GetSecondaryIndexBookmarkGrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1714:FlagsEnumsShouldHavePluralNames", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.GotoSecondaryIndexBookmarkGrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1714:FlagsEnumsShouldHavePluralNames", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.IdleGrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1714:FlagsEnumsShouldHavePluralNames", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.IndexKeyGrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1714:FlagsEnumsShouldHavePluralNames", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.IndexRangeGrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1714:FlagsEnumsShouldHavePluralNames", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.InitGrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1714:FlagsEnumsShouldHavePluralNames", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.IntersectIndexesGrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1714:FlagsEnumsShouldHavePluralNames", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.JET_cbtyp", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1714:FlagsEnumsShouldHavePluralNames", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.LsGrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1714:FlagsEnumsShouldHavePluralNames", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.MakeKeyGrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1714:FlagsEnumsShouldHavePluralNames", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.MoveGrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1714:FlagsEnumsShouldHavePluralNames", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.ObjectInfoGrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1714:FlagsEnumsShouldHavePluralNames", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.OpenDatabaseGrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1714:FlagsEnumsShouldHavePluralNames", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.OpenTableGrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1714:FlagsEnumsShouldHavePluralNames", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.RenameColumnGrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1714:FlagsEnumsShouldHavePluralNames", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.ResetTableSequentialGrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1714:FlagsEnumsShouldHavePluralNames", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.RetrieveColumnGrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1714:FlagsEnumsShouldHavePluralNames", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.RetrieveKeyGrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1714:FlagsEnumsShouldHavePluralNames", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.RollbackTransactionGrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1714:FlagsEnumsShouldHavePluralNames", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.SeekGrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1714:FlagsEnumsShouldHavePluralNames", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Server2003.SnapshotAbortGrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1714:FlagsEnumsShouldHavePluralNames", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Server2003.UpdateGrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1714:FlagsEnumsShouldHavePluralNames", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.SetColumnDefaultValueGrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1714:FlagsEnumsShouldHavePluralNames", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.SetColumnGrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1714:FlagsEnumsShouldHavePluralNames", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.SetCurrentIndexGrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1714:FlagsEnumsShouldHavePluralNames", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.SetIndexRangeGrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1714:FlagsEnumsShouldHavePluralNames", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.SetTableSequentialGrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1714:FlagsEnumsShouldHavePluralNames", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.SnapshotFreezeGrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1714:FlagsEnumsShouldHavePluralNames", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.SnapshotPrepareGrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1714:FlagsEnumsShouldHavePluralNames", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.SnapshotThawGrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1714:FlagsEnumsShouldHavePluralNames", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.SpaceHintsGrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1714:FlagsEnumsShouldHavePluralNames", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.TempTableGrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1714:FlagsEnumsShouldHavePluralNames", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.TermGrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1714:FlagsEnumsShouldHavePluralNames", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Vista.JET_InstanceMiscInfo", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1714:FlagsEnumsShouldHavePluralNames", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Vista.SnapshotEndGrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1714:FlagsEnumsShouldHavePluralNames", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Vista.SnapshotGetFreezeInfoGrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1714:FlagsEnumsShouldHavePluralNames", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Vista.SnapshotPrepareInstanceGrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1714:FlagsEnumsShouldHavePluralNames", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Vista.SnapshotTruncateLogGrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1714:FlagsEnumsShouldHavePluralNames", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Windows7.CrashDumpGrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1714:FlagsEnumsShouldHavePluralNames", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Windows7.PrereadKeysGrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1714:FlagsEnumsShouldHavePluralNames", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Windows8.CursorFilterGrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1714:FlagsEnumsShouldHavePluralNames", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Windows8.DurableCommitCallbackGrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1714:FlagsEnumsShouldHavePluralNames", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Windows8.JetIndexColumnGrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1714:FlagsEnumsShouldHavePluralNames", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Windows8.PrereadIndexRangesGrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1714:FlagsEnumsShouldHavePluralNames", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Windows8.ResizeDatabaseGrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1714:FlagsEnumsShouldHavePluralNames", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Windows8.StopServiceGrbit", Justification = "Stylebot Generated FxCop Exclusion.")] +#endregion + +[module: SuppressMessage("Microsoft.Naming", "CA1720:IdentifiersShouldNotContainTypeNames", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetSetSystemParameter(Microsoft.Isam.Esent.Interop.JET_INSTANCE,Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_param,Microsoft.Isam.Esent.Interop.JET_CALLBACK,System.String)", MessageId = "string", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1720:IdentifiersShouldNotContainTypeNames", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetSetSystemParameter(Microsoft.Isam.Esent.Interop.JET_INSTANCE,Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_param,System.Int32,System.String)", MessageId = "string", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1720:IdentifiersShouldNotContainTypeNames", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Api.#JetSetSystemParameter(Microsoft.Isam.Esent.Interop.JET_INSTANCE,Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_param,System.IntPtr,System.String)", MessageId = "string", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1720:IdentifiersShouldNotContainTypeNames", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_RECSIZE.#cbLongValueData", MessageId = "long", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1720:IdentifiersShouldNotContainTypeNames", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_RECSIZE.#cbLongValueDataCompressed", MessageId = "long", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1720:IdentifiersShouldNotContainTypeNames", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_RECSIZE.#cbLongValueOverhead", MessageId = "long", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1720:IdentifiersShouldNotContainTypeNames", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_RECSIZE.#cLongValues", MessageId = "long", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1720:IdentifiersShouldNotContainTypeNames", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_RETINFO.#ibLongValue", MessageId = "long", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1720:IdentifiersShouldNotContainTypeNames", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_RETRIEVECOLUMN.#ibLongValue", MessageId = "long", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1720:IdentifiersShouldNotContainTypeNames", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_SETCOLUMN.#ibLongValue", MessageId = "long", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1720:IdentifiersShouldNotContainTypeNames", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_SETINFO.#ibLongValue", MessageId = "long", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1720:IdentifiersShouldNotContainTypeNames", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.JET_RECSIZE.#cLongValues", MessageId = "long", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1720:IdentifiersShouldNotContainTypeNames", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.JET_RECSIZE.#cbLongValueData", MessageId = "long", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1720:IdentifiersShouldNotContainTypeNames", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.JET_RECSIZE.#cbLongValueDataCompressed", MessageId = "long", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Naming", "CA1720:IdentifiersShouldNotContainTypeNames", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.JET_RECSIZE.#cbLongValueOverhead", MessageId = "long", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Performance", "CA1819:PropertiesShouldNotReturnArrays", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.BytesColumnValue.#Value", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Performance", "CA1819:PropertiesShouldNotReturnArrays", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_COLUMNCREATE.#pvDefault", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Performance", "CA1819:PropertiesShouldNotReturnArrays", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_ENUMCOLUMN.#rgEnumColumnValue", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Performance", "CA1819:PropertiesShouldNotReturnArrays", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_ENUMCOLUMNID.#rgtagSequence", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Performance", "CA1819:PropertiesShouldNotReturnArrays", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_INDEXCREATE.#rgconditionalcolumn", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Performance", "CA1819:PropertiesShouldNotReturnArrays", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_RETRIEVECOLUMN.#pvData", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Performance", "CA1819:PropertiesShouldNotReturnArrays", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_RSTINFO.#rgrstmap", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Performance", "CA1819:PropertiesShouldNotReturnArrays", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_SETCOLUMN.#pvData", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Performance", "CA1819:PropertiesShouldNotReturnArrays", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_TABLECREATE.#rgcolumncreate", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Performance", "CA1819:PropertiesShouldNotReturnArrays", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_TABLECREATE.#rgindexcreate", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Performance", "CA1819:PropertiesShouldNotReturnArrays", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.JET_OPENTEMPORARYTABLE.#prgcolumndef", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Performance", "CA1819:PropertiesShouldNotReturnArrays", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.JET_OPENTEMPORARYTABLE.#prgcolumnid", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Performance", "CA1819:PropertiesShouldNotReturnArrays", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Windows8.JET_ERRINFOBASIC.#rgCategoricalHierarchy", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Performance", "CA1819:PropertiesShouldNotReturnArrays", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Windows8.JET_INDEX_COLUMN.#pvData", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Performance", "CA1819:PropertiesShouldNotReturnArrays", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Windows8.JET_INDEX_RANGE.#endColumns", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Performance", "CA1819:PropertiesShouldNotReturnArrays", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Windows8.JET_INDEX_RANGE.#startColumns", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Reliability", "CA2006:UseSafeHandleToEncapsulateNativeResources", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_HANDLE.#Value", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Reliability", "CA2006:UseSafeHandleToEncapsulateNativeResources", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_INSTANCE.#Value", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Reliability", "CA2006:UseSafeHandleToEncapsulateNativeResources", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_OSSNAPID.#Value", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Reliability", "CA2006:UseSafeHandleToEncapsulateNativeResources", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_SESID.#Value", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Reliability", "CA2006:UseSafeHandleToEncapsulateNativeResources", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_TABLEID.#Value", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Reliability", "CA2006:UseSafeHandleToEncapsulateNativeResources", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.NATIVE_RSTMAP.#szDatabaseName", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Reliability", "CA2006:UseSafeHandleToEncapsulateNativeResources", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.NATIVE_RSTMAP.#szNewDatabaseName", Justification = "Stylebot Generated FxCop Exclusion.")] + +#region CA2208 +[module: SuppressMessage("Microsoft.Usage", "CA2208:InstantiateArgumentExceptionsCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_COLUMNCREATE.#CheckMembersAreValid()", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Usage", "CA2208:InstantiateArgumentExceptionsCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_ENUMCOLUMNID.#CheckDataSize()", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Usage", "CA2208:InstantiateArgumentExceptionsCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_INDEXCREATE.#CheckMembersAreValid()", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Usage", "CA2208:InstantiateArgumentExceptionsCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_RETRIEVECOLUMN.#CheckDataSize()", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Usage", "CA2208:InstantiateArgumentExceptionsCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_RSTINFO.#CheckMembersAreValid()", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Usage", "CA2208:InstantiateArgumentExceptionsCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_SETCOLUMN.#CheckDataSize()", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Usage", "CA2208:InstantiateArgumentExceptionsCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.JET_TABLECREATE.#CheckMembersAreValid()", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Usage", "CA2208:InstantiateArgumentExceptionsCorrectly", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Vista.JET_OPENTEMPORARYTABLE.#CheckDataSize()", Justification = "Stylebot Generated FxCop Exclusion.")] +#endregion + +#region CA2214 +[module: SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.EsentErrorException.#.ctor(System.String,Microsoft.Isam.Esent.Interop.JET_err)", Justification = "Stylebot Generated FxCop Exclusion.")] +#endregion + +#region CA2217 +[module: SuppressMessage("Microsoft.Usage", "CA2217:DoNotMarkEnumsWithFlags", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.ObjectInfoFlags", Justification = "Stylebot Generated FxCop Exclusion.")] // 0x80000000 causes some strangeness in the Flags enum. +[module: SuppressMessage("Microsoft.Usage", "CA2217:DoNotMarkEnumsWithFlags", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Windows8.StopServiceGrbit", Justification = "Stylebot Generated FxCop Exclusion.")] // 0x80000000 causes some strangeness in the Flags enum. +#endregion + +#region CA2101 +// The [BestFitMapping(false, ThrowOnUnmappableChar = true)] attribute is already +// on the containing class, so there is no need for it to also be on every API +// that takes a string. +[module: SuppressMessage("Microsoft.Globalization", "CA2101:SpecifyMarshalingForPInvokeStringArguments", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Implementation.NativeMethods.#JetAddColumn(System.IntPtr,System.IntPtr,System.String,Microsoft.Isam.Esent.Interop.NATIVE_COLUMNDEF&,System.Byte[],System.UInt32,System.UInt32&)", MessageId = "2", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Globalization", "CA2101:SpecifyMarshalingForPInvokeStringArguments", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Implementation.NativeMethods.#JetAttachDatabase(System.IntPtr,System.String,System.UInt32)", MessageId = "1", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Globalization", "CA2101:SpecifyMarshalingForPInvokeStringArguments", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Implementation.NativeMethods.#JetAttachDatabase2(System.IntPtr,System.String,System.UInt32,System.UInt32)", MessageId = "1", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Globalization", "CA2101:SpecifyMarshalingForPInvokeStringArguments", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Implementation.NativeMethods.#JetBackupInstance(System.IntPtr,System.String,System.UInt32,System.IntPtr)", MessageId = "1", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Globalization", "CA2101:SpecifyMarshalingForPInvokeStringArguments", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Implementation.NativeMethods.#JetBeginSession(System.IntPtr,System.IntPtr&,System.String,System.String)", MessageId = "2", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Globalization", "CA2101:SpecifyMarshalingForPInvokeStringArguments", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Implementation.NativeMethods.#JetBeginSession(System.IntPtr,System.IntPtr&,System.String,System.String)", MessageId = "3", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Globalization", "CA2101:SpecifyMarshalingForPInvokeStringArguments", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Implementation.NativeMethods.#JetCompact(System.IntPtr,System.String,System.String,System.IntPtr,System.IntPtr,System.UInt32)", MessageId = "1", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Globalization", "CA2101:SpecifyMarshalingForPInvokeStringArguments", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Implementation.NativeMethods.#JetCompact(System.IntPtr,System.String,System.String,System.IntPtr,System.IntPtr,System.UInt32)", MessageId = "2", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Globalization", "CA2101:SpecifyMarshalingForPInvokeStringArguments", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Implementation.NativeMethods.#JetCreateDatabase(System.IntPtr,System.String,System.String,System.UInt32&,System.UInt32)", MessageId = "1", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Globalization", "CA2101:SpecifyMarshalingForPInvokeStringArguments", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Implementation.NativeMethods.#JetCreateDatabase(System.IntPtr,System.String,System.String,System.UInt32&,System.UInt32)", MessageId = "2", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Globalization", "CA2101:SpecifyMarshalingForPInvokeStringArguments", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Implementation.NativeMethods.#JetCreateDatabase2(System.IntPtr,System.String,System.UInt32,System.UInt32&,System.UInt32)", MessageId = "1", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Globalization", "CA2101:SpecifyMarshalingForPInvokeStringArguments", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Implementation.NativeMethods.#JetCreateIndex(System.IntPtr,System.IntPtr,System.String,System.UInt32,System.String,System.UInt32,System.UInt32)", MessageId = "2", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Globalization", "CA2101:SpecifyMarshalingForPInvokeStringArguments", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Implementation.NativeMethods.#JetCreateIndex(System.IntPtr,System.IntPtr,System.String,System.UInt32,System.String,System.UInt32,System.UInt32)", MessageId = "4", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Globalization", "CA2101:SpecifyMarshalingForPInvokeStringArguments", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Implementation.NativeMethods.#JetCreateInstance(System.IntPtr&,System.String)", MessageId = "1", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Globalization", "CA2101:SpecifyMarshalingForPInvokeStringArguments", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Implementation.NativeMethods.#JetCreateInstance2(System.IntPtr&,System.String,System.String,System.UInt32)", MessageId = "1", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Globalization", "CA2101:SpecifyMarshalingForPInvokeStringArguments", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Implementation.NativeMethods.#JetCreateInstance2(System.IntPtr&,System.String,System.String,System.UInt32)", MessageId = "2", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Globalization", "CA2101:SpecifyMarshalingForPInvokeStringArguments", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Implementation.NativeMethods.#JetCreateTable(System.IntPtr,System.UInt32,System.String,System.Int32,System.Int32,System.IntPtr&)", MessageId = "2", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Globalization", "CA2101:SpecifyMarshalingForPInvokeStringArguments", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Implementation.NativeMethods.#JetDefragment(System.IntPtr,System.UInt32,System.String,System.UInt32&,System.UInt32&,System.UInt32)", MessageId = "2", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Globalization", "CA2101:SpecifyMarshalingForPInvokeStringArguments", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Implementation.NativeMethods.#JetDefragment2(System.IntPtr,System.UInt32,System.String,System.UInt32&,System.UInt32&,System.IntPtr,System.UInt32)", MessageId = "2", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Globalization", "CA2101:SpecifyMarshalingForPInvokeStringArguments", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Implementation.NativeMethods.#JetDeleteColumn(System.IntPtr,System.IntPtr,System.String)", MessageId = "2", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Globalization", "CA2101:SpecifyMarshalingForPInvokeStringArguments", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Implementation.NativeMethods.#JetDeleteColumn2(System.IntPtr,System.IntPtr,System.String,System.UInt32)", MessageId = "2", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Globalization", "CA2101:SpecifyMarshalingForPInvokeStringArguments", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Implementation.NativeMethods.#JetDeleteIndex(System.IntPtr,System.IntPtr,System.String)", MessageId = "2", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Globalization", "CA2101:SpecifyMarshalingForPInvokeStringArguments", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Implementation.NativeMethods.#JetDeleteTable(System.IntPtr,System.UInt32,System.String)", MessageId = "2", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Globalization", "CA2101:SpecifyMarshalingForPInvokeStringArguments", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Implementation.NativeMethods.#JetDetachDatabase(System.IntPtr,System.String)", MessageId = "1", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Globalization", "CA2101:SpecifyMarshalingForPInvokeStringArguments", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Implementation.NativeMethods.#JetDetachDatabase2(System.IntPtr,System.String,System.UInt32)", MessageId = "1", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Globalization", "CA2101:SpecifyMarshalingForPInvokeStringArguments", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Implementation.NativeMethods.#JetGetColumnInfo(System.IntPtr,System.UInt32,System.String,System.String,Microsoft.Isam.Esent.Interop.NATIVE_COLUMNBASE&,System.UInt32,System.UInt32)", MessageId = "2", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Globalization", "CA2101:SpecifyMarshalingForPInvokeStringArguments", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Implementation.NativeMethods.#JetGetColumnInfo(System.IntPtr,System.UInt32,System.String,System.String,Microsoft.Isam.Esent.Interop.NATIVE_COLUMNBASE&,System.UInt32,System.UInt32)", MessageId = "3", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Globalization", "CA2101:SpecifyMarshalingForPInvokeStringArguments", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Implementation.NativeMethods.#JetGetColumnInfo(System.IntPtr,System.UInt32,System.String,System.String,Microsoft.Isam.Esent.Interop.NATIVE_COLUMNDEF&,System.UInt32,System.UInt32)", MessageId = "2", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Globalization", "CA2101:SpecifyMarshalingForPInvokeStringArguments", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Implementation.NativeMethods.#JetGetColumnInfo(System.IntPtr,System.UInt32,System.String,System.String,Microsoft.Isam.Esent.Interop.NATIVE_COLUMNDEF&,System.UInt32,System.UInt32)", MessageId = "3", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Globalization", "CA2101:SpecifyMarshalingForPInvokeStringArguments", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Implementation.NativeMethods.#JetGetColumnInfo(System.IntPtr,System.UInt32,System.String,System.String,Microsoft.Isam.Esent.Interop.NATIVE_COLUMNLIST&,System.UInt32,System.UInt32)", MessageId = "2", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Globalization", "CA2101:SpecifyMarshalingForPInvokeStringArguments", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Implementation.NativeMethods.#JetGetColumnInfo(System.IntPtr,System.UInt32,System.String,System.String,Microsoft.Isam.Esent.Interop.NATIVE_COLUMNLIST&,System.UInt32,System.UInt32)", MessageId = "3", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Globalization", "CA2101:SpecifyMarshalingForPInvokeStringArguments", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Implementation.NativeMethods.#JetGetColumnInfo(System.IntPtr,System.UInt32,System.String,System.UInt32&,Microsoft.Isam.Esent.Interop.NATIVE_COLUMNBASE&,System.UInt32,System.UInt32)", MessageId = "2", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Globalization", "CA2101:SpecifyMarshalingForPInvokeStringArguments", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Implementation.NativeMethods.#JetGetCurrentIndex(System.IntPtr,System.IntPtr,System.Text.StringBuilder,System.UInt32)", MessageId = "2", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Globalization", "CA2101:SpecifyMarshalingForPInvokeStringArguments", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Implementation.NativeMethods.#JetGetDatabaseFileInfo(System.String,Microsoft.Isam.Esent.Interop.NATIVE_DBINFOMISC&,System.UInt32,System.UInt32)", MessageId = "0", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Globalization", "CA2101:SpecifyMarshalingForPInvokeStringArguments", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Implementation.NativeMethods.#JetGetDatabaseFileInfo(System.String,Microsoft.Isam.Esent.Interop.NATIVE_DBINFOMISC4&,System.UInt32,System.UInt32)", MessageId = "0", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Globalization", "CA2101:SpecifyMarshalingForPInvokeStringArguments", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Implementation.NativeMethods.#JetGetDatabaseFileInfo(System.String,System.Int32&,System.UInt32,System.UInt32)", MessageId = "0", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Globalization", "CA2101:SpecifyMarshalingForPInvokeStringArguments", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Implementation.NativeMethods.#JetGetDatabaseFileInfo(System.String,System.Int64&,System.UInt32,System.UInt32)", MessageId = "0", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Globalization", "CA2101:SpecifyMarshalingForPInvokeStringArguments", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Implementation.NativeMethods.#JetGetDatabaseInfo(System.IntPtr,System.UInt32,System.Text.StringBuilder,System.UInt32,System.UInt32)", MessageId = "2", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Globalization", "CA2101:SpecifyMarshalingForPInvokeStringArguments", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Implementation.NativeMethods.#JetGetIndexInfo(System.IntPtr,System.UInt32,System.String,System.String,Microsoft.Isam.Esent.Interop.JET_INDEXID&,System.UInt32,System.UInt32)", MessageId = "2", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Globalization", "CA2101:SpecifyMarshalingForPInvokeStringArguments", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Implementation.NativeMethods.#JetGetIndexInfo(System.IntPtr,System.UInt32,System.String,System.String,Microsoft.Isam.Esent.Interop.JET_INDEXID&,System.UInt32,System.UInt32)", MessageId = "3", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Globalization", "CA2101:SpecifyMarshalingForPInvokeStringArguments", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Implementation.NativeMethods.#JetGetIndexInfo(System.IntPtr,System.UInt32,System.String,System.String,Microsoft.Isam.Esent.Interop.NATIVE_INDEXLIST&,System.UInt32,System.UInt32)", MessageId = "2", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Globalization", "CA2101:SpecifyMarshalingForPInvokeStringArguments", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Implementation.NativeMethods.#JetGetIndexInfo(System.IntPtr,System.UInt32,System.String,System.String,Microsoft.Isam.Esent.Interop.NATIVE_INDEXLIST&,System.UInt32,System.UInt32)", MessageId = "3", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Globalization", "CA2101:SpecifyMarshalingForPInvokeStringArguments", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Implementation.NativeMethods.#JetGetIndexInfo(System.IntPtr,System.UInt32,System.String,System.String,System.UInt16&,System.UInt32,System.UInt32)", MessageId = "2", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Globalization", "CA2101:SpecifyMarshalingForPInvokeStringArguments", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Implementation.NativeMethods.#JetGetIndexInfo(System.IntPtr,System.UInt32,System.String,System.String,System.UInt16&,System.UInt32,System.UInt32)", MessageId = "3", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Globalization", "CA2101:SpecifyMarshalingForPInvokeStringArguments", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Implementation.NativeMethods.#JetGetIndexInfo(System.IntPtr,System.UInt32,System.String,System.String,System.UInt32&,System.UInt32,System.UInt32)", MessageId = "2", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Globalization", "CA2101:SpecifyMarshalingForPInvokeStringArguments", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Implementation.NativeMethods.#JetGetIndexInfo(System.IntPtr,System.UInt32,System.String,System.String,System.UInt32&,System.UInt32,System.UInt32)", MessageId = "3", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Globalization", "CA2101:SpecifyMarshalingForPInvokeStringArguments", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Implementation.NativeMethods.#JetGetObjectInfo(System.IntPtr,System.UInt32,System.UInt32,System.String,System.String,Microsoft.Isam.Esent.Interop.NATIVE_OBJECTINFO&,System.UInt32,System.UInt32)", MessageId = "3", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Globalization", "CA2101:SpecifyMarshalingForPInvokeStringArguments", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Implementation.NativeMethods.#JetGetObjectInfo(System.IntPtr,System.UInt32,System.UInt32,System.String,System.String,Microsoft.Isam.Esent.Interop.NATIVE_OBJECTINFO&,System.UInt32,System.UInt32)", MessageId = "4", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Globalization", "CA2101:SpecifyMarshalingForPInvokeStringArguments", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Implementation.NativeMethods.#JetGetObjectInfo(System.IntPtr,System.UInt32,System.UInt32,System.String,System.String,Microsoft.Isam.Esent.Interop.NATIVE_OBJECTLIST&,System.UInt32,System.UInt32)", MessageId = "3", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Globalization", "CA2101:SpecifyMarshalingForPInvokeStringArguments", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Implementation.NativeMethods.#JetGetObjectInfo(System.IntPtr,System.UInt32,System.UInt32,System.String,System.String,Microsoft.Isam.Esent.Interop.NATIVE_OBJECTLIST&,System.UInt32,System.UInt32)", MessageId = "4", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Globalization", "CA2101:SpecifyMarshalingForPInvokeStringArguments", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Implementation.NativeMethods.#JetGetSystemParameter(System.IntPtr,System.IntPtr,System.UInt32,System.IntPtr&,System.Text.StringBuilder,System.UInt32)", MessageId = "4", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Globalization", "CA2101:SpecifyMarshalingForPInvokeStringArguments", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Implementation.NativeMethods.#JetGetTableColumnInfo(System.IntPtr,System.IntPtr,System.String,Microsoft.Isam.Esent.Interop.NATIVE_COLUMNDEF&,System.UInt32,System.UInt32)", MessageId = "2", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Globalization", "CA2101:SpecifyMarshalingForPInvokeStringArguments", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Implementation.NativeMethods.#JetGetTableColumnInfo(System.IntPtr,System.IntPtr,System.String,Microsoft.Isam.Esent.Interop.NATIVE_COLUMNLIST&,System.UInt32,System.UInt32)", MessageId = "2", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Globalization", "CA2101:SpecifyMarshalingForPInvokeStringArguments", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Implementation.NativeMethods.#JetGetTableIndexInfo(System.IntPtr,System.IntPtr,System.String,Microsoft.Isam.Esent.Interop.JET_INDEXID&,System.UInt32,System.UInt32)", MessageId = "2", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Globalization", "CA2101:SpecifyMarshalingForPInvokeStringArguments", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Implementation.NativeMethods.#JetGetTableIndexInfo(System.IntPtr,System.IntPtr,System.String,Microsoft.Isam.Esent.Interop.NATIVE_INDEXLIST&,System.UInt32,System.UInt32)", MessageId = "2", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Globalization", "CA2101:SpecifyMarshalingForPInvokeStringArguments", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Implementation.NativeMethods.#JetGetTableIndexInfo(System.IntPtr,System.IntPtr,System.String,System.UInt16&,System.UInt32,System.UInt32)", MessageId = "2", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Globalization", "CA2101:SpecifyMarshalingForPInvokeStringArguments", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Implementation.NativeMethods.#JetGetTableIndexInfo(System.IntPtr,System.IntPtr,System.String,System.UInt32&,System.UInt32,System.UInt32)", MessageId = "2", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Globalization", "CA2101:SpecifyMarshalingForPInvokeStringArguments", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Implementation.NativeMethods.#JetGetTableInfo(System.IntPtr,System.IntPtr,System.Text.StringBuilder,System.UInt32,System.UInt32)", MessageId = "2", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Globalization", "CA2101:SpecifyMarshalingForPInvokeStringArguments", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Implementation.NativeMethods.#JetOpenDatabase(System.IntPtr,System.String,System.String,System.UInt32&,System.UInt32)", MessageId = "1", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Globalization", "CA2101:SpecifyMarshalingForPInvokeStringArguments", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Implementation.NativeMethods.#JetOpenDatabase(System.IntPtr,System.String,System.String,System.UInt32&,System.UInt32)", MessageId = "2", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Globalization", "CA2101:SpecifyMarshalingForPInvokeStringArguments", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Implementation.NativeMethods.#JetOpenFileInstance(System.IntPtr,System.String,System.IntPtr&,System.UInt32&,System.UInt32&)", MessageId = "1", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Globalization", "CA2101:SpecifyMarshalingForPInvokeStringArguments", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Implementation.NativeMethods.#JetOpenTable(System.IntPtr,System.UInt32,System.String,System.Byte[],System.UInt32,System.UInt32,System.IntPtr&)", MessageId = "2", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Globalization", "CA2101:SpecifyMarshalingForPInvokeStringArguments", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Implementation.NativeMethods.#JetRenameColumn(System.IntPtr,System.IntPtr,System.String,System.String,System.UInt32)", MessageId = "2", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Globalization", "CA2101:SpecifyMarshalingForPInvokeStringArguments", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Implementation.NativeMethods.#JetRenameColumn(System.IntPtr,System.IntPtr,System.String,System.String,System.UInt32)", MessageId = "3", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Globalization", "CA2101:SpecifyMarshalingForPInvokeStringArguments", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Implementation.NativeMethods.#JetRenameTable(System.IntPtr,System.UInt32,System.String,System.String)", MessageId = "2", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Globalization", "CA2101:SpecifyMarshalingForPInvokeStringArguments", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Implementation.NativeMethods.#JetRenameTable(System.IntPtr,System.UInt32,System.String,System.String)", MessageId = "3", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Globalization", "CA2101:SpecifyMarshalingForPInvokeStringArguments", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Implementation.NativeMethods.#JetRestoreInstance(System.IntPtr,System.String,System.String,System.IntPtr)", MessageId = "1", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Globalization", "CA2101:SpecifyMarshalingForPInvokeStringArguments", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Implementation.NativeMethods.#JetRestoreInstance(System.IntPtr,System.String,System.String,System.IntPtr)", MessageId = "2", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Globalization", "CA2101:SpecifyMarshalingForPInvokeStringArguments", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Implementation.NativeMethods.#JetSetColumnDefaultValue(System.IntPtr,System.UInt32,System.String,System.String,System.Byte[],System.UInt32,System.UInt32)", MessageId = "2", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Globalization", "CA2101:SpecifyMarshalingForPInvokeStringArguments", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Implementation.NativeMethods.#JetSetColumnDefaultValue(System.IntPtr,System.UInt32,System.String,System.String,System.Byte[],System.UInt32,System.UInt32)", MessageId = "3", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Globalization", "CA2101:SpecifyMarshalingForPInvokeStringArguments", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Implementation.NativeMethods.#JetSetCurrentIndex(System.IntPtr,System.IntPtr,System.String)", MessageId = "2", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Globalization", "CA2101:SpecifyMarshalingForPInvokeStringArguments", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Implementation.NativeMethods.#JetSetCurrentIndex2(System.IntPtr,System.IntPtr,System.String,System.UInt32)", MessageId = "2", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Globalization", "CA2101:SpecifyMarshalingForPInvokeStringArguments", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Implementation.NativeMethods.#JetSetCurrentIndex3(System.IntPtr,System.IntPtr,System.String,System.UInt32,System.UInt32)", MessageId = "2", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Globalization", "CA2101:SpecifyMarshalingForPInvokeStringArguments", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Implementation.NativeMethods.#JetSetCurrentIndex4(System.IntPtr,System.IntPtr,System.String,Microsoft.Isam.Esent.Interop.JET_INDEXID&,System.UInt32,System.UInt32)", MessageId = "2", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Globalization", "CA2101:SpecifyMarshalingForPInvokeStringArguments", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Implementation.NativeMethods.#JetSetDatabaseSize(System.IntPtr,System.String,System.UInt32,System.UInt32&)", MessageId = "1", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Globalization", "CA2101:SpecifyMarshalingForPInvokeStringArguments", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Implementation.NativeMethods.#JetSetSystemParameter(System.IntPtr*,System.IntPtr,System.UInt32,System.IntPtr,System.String)", MessageId = "4", Justification = "Stylebot Generated FxCop Exclusion.")] +#endregion + +#region Exception constructors +// It's not entirely clear why these specific overloads are needed. +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentErrorException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInvalidColumnException", Justification = "Stylebot Generated FxCop Exclusion.")] + +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentBackupDirectoryNotEmptyException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentFileInvalidTypeException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentRecoveredWithErrorsException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVOwnerMapCorruptedException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentFixedInheritedDDLException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentWriteConflictException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentPageSizeMismatchException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDistributedTransactionAlreadyPreparedToCommitException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInvalidPlaceholderColumnException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVFileNotFoundException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentPermissionDeniedException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentColumnInRelationshipException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentNoCurrentRecordException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVFileUnknownException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentIndexTuplesInvalidLimitsException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInvalidLogDataSequenceException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentColumnDuplicateException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentBadPatchPageException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentCannotDeleteTempTableException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDatabaseUnavailableException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDatabaseLogSetMismatchException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentOutOfMemoryException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentNullInvalidException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentKeyTooBigException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentOSSnapshotTimeOutException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVDatabaseMissingException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSoftRecoveryOnSnapshotException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSesidTableIdMismatchException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentBadBackupDatabaseSizeException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentTooManyInstancesException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentNoCurrentIndexException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDisabledFunctionalityException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentRfsNotArmedException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVOwnerMapAlreadyExistsException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInvalidDatabaseVersionException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentBadLogVersionException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentReadVerifyFailureException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDTCMissingCallbackException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentLogFilePathInUseException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentOneDatabasePerSessionException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentColumnNotUpdatableException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentBackupNotAllowedYetException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentFileNotFoundException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentFileAccessDeniedException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentLogDisabledDueToRecoveryFailureException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentLogTornWriteDuringHardRestoreException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInvalidNameException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentTooManyOpenTablesException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSoftRecoveryOnBackupDatabaseException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentTableLockedException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDerivedColumnCorruptionException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentTableNotEmptyException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentCatalogCorruptedException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentOutOfDbtimeValuesException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVColumnDefaultValueNotAllowedException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentCallbackNotResolvedException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentNoBackupException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentRecoveredWithoutUndoDatabasesConsistentException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentIndexTuplesVarSegMacNotAllowedException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentReadLostFlushVerifyFailureException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentOutOfDatabaseSpaceException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDatabaseFailedIncrementalReseedException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentMultiValuedDuplicateAfterTruncationException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentEndingRestoreLogTooLowException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDatabaseBufferDependenciesCorruptedException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInstanceNameInUseException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInvalidBookmarkException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentNotInitializedException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDensityInvalidException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSecondaryIndexCorruptedException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentMustDisableLoggingForDbUpgradeException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentAlreadyInitializedException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentRecordNotFoundException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDistributedTransactionNotYetPreparedToCommitException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentIndexCantBuildException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentRestoreOfNonBackupDatabaseException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentColumnDoesNotFitException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentTooManyIndexesException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentBadDbSignatureException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentCannotNestDistributedTransactionsException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentLogSequenceEndDatabasesConsistentException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentColumnCannotBeCompressedException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentOutOfObjectIDsException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentLogDiskFullException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInvalidBufferSizeException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentIndexTuplesTooManyColumnsException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentMultiValuedDuplicateException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInvalidSettingsException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentLoggingDisabledException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentMultiValuedIndexViolationException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInvalidLoggedOperationException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentLogFileNotCopiedException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVFileInvalidPathException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDatabaseAlreadyUpgradedException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSpaceHintsInvalidException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentTransTooDeepException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentBadColumnIdException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVEAListCorruptException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentTooManyAttachedDatabasesException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDDLNotInheritableException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInvalidGrbitException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentOutOfAutoincrementValuesException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentRollbackRequiredException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentAlreadyPreparedException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInvalidColumnTypeException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentWriteConflictPrimaryIndexException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentLogFileSizeMismatchException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentFileCloseException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInvalidOnSortException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVPagesNotCommittedException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSPOwnExtCorruptedException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentColumnRedundantException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVStreamingFileAlreadyExistsException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentRecordNoCopyException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentContainerNotEmptyException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDatabaseDirtyShutdownException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentKeyBoundaryException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVRootStillOpenException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentTooManyOpenIndexesException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentIndexTuplesSecondaryIndexOnlyException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentIndexDuplicateException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentColumnNoChunkException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentLVCorruptedException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentCannotDeleteTemplateTableException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentFileCompressedException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentIndexTuplesNonUniqueOnlyException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInTransactionException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentLogReadVerifyFailureException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentBadPageLinkException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentLogCorruptedException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVPagesNotReservedException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentMissingPatchPageException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDbTimeTooOldException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentFileIOAbortException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentFeatureNotAvailableException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentNotInTransactionException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSPAvailExtCacheOutOfMemoryException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentMissingLogFileException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentAfterInitializationException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVColumnCannotDeleteException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentRecordPrimaryChangedException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentLogCorruptDuringHardRecoveryException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVInvalidPathException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSessionWriteConflictException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVRootNotSpecifiedException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentUpdateNotPreparedException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInvalidLogSequenceException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentUnicodeTranslationFailException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentPartiallyAttachedDBException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDatabaseIncompleteIncrementalReseedException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSPAvailExtCorruptedException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentTooManyKeysException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDatabaseInvalidIncrementalReseedException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentLogTornWriteDuringHardRecoveryException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSessionContextAlreadySetException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentTooManyIOException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentEntryPointNotFoundException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentRunningInOneInstanceModeException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentBadItagSequenceException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentRollbackErrorException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentRecordTooBigForBackwardCompatibilityException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentCallbackFailedException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentOSSnapshotInvalidSequenceException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentVersionStoreOutOfMemoryException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSystemParamsAlreadySetException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVStreamingFileNotCreatedException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDatabase400FormatException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentTaskDroppedException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentLogSectorSizeMismatchException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentMissingFileToBackupException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSystemPathInUseException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentOutOfThreadsException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentTooManyTestInjectionsException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInitInProgressException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentRecordDeletedException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDatabasesNotFromSameSnapshotException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInvalidDatabaseException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentPageBoundaryException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVCorruptedException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVProviderVersionMismatchException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentTempPathInUseException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVRootPathInvalidException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentExclusiveTableLockRequiredException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentAttachedDatabaseMismatchException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentTooManyOpenDatabasesException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentExistingLogFileHasBadSignatureException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDirtyShutdownException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDatabase500FormatException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInvalidSesidException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentBadCheckpointSignatureException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVStreamingFileInUseException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentLogCorruptDuringHardRestoreException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentOutOfLongValueIDsException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentMissingFullBackupException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSessionContextNotSetByThisThreadException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentCannotIndexException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentMakeBackupDirectoryFailException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVEAListTooBigException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVStreamingFileFullException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentLogWriteFailException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentBadBookmarkException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInvalidIndexIdException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentOutOfSequentialIndexValuesException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDatabaseNotFoundException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentGivenLogFileIsNotContiguousException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInvalidCreateIndexException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInstanceUnavailableException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentRecoveredWithoutUndoException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDatabaseInvalidPathException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentOutOfSessionsException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentTooManyColumnsException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentNotInDistributedTransactionException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDbTimeTooNewException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVStreamingFileMissingException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentTableInUseException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentCheckpointFileNotFoundException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInvalidFilenameException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentOSSnapshotNotAllowedException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDatabaseIncompleteUpgradeException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentLSCallbackNotSpecifiedException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVFileAccessDeniedException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentNTSystemCallFailedException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSQLLinkNotSupportedException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentStreamingDataNotLoggedException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentColumnInUseException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentIndexTuplesTextBinaryColumnsOnlyException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentConsistentTimeMismatchException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentColumnTooBigException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentIndexInUseException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDbTimeCorruptedException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentRecordTooBigException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentNoBackupDirectoryException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentIndexInvalidDefException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDatabaseLockedException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentClientRequestToStopJetServiceException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentTaggedNotNULLException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInvalidLanguageIdException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInvalidCountryException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentKeyIsMadeException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentMissingRestoreLogFilesException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentIndexTuplesKeyTooSmallException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVFileIOException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentMissingPreviousLogFileException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentMustCommitDistributedTransactionToLevel0Exception", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentMustRollbackException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVHeaderCorruptedException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSectorSizeNotSupportedException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentOutOfFileHandlesException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDatabaseDuplicateException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentTooManyMempoolEntriesException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVSpaceWriteConflictException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentCannotAddFixedVarColumnToDerivedTableException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentColumnNotFoundException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentRedoAbruptEndedException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDiskIOException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentExistingLogFileIsNotContiguousException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentLSNotSetException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentCannotDisableVersioningException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentIndexMustStayException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentCheckpointCorruptException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentKeyDuplicateException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentLogGenerationMismatchException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentLanguageNotSupportedException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDefaultValueTooBigException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentCommittedLogFileCorruptException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentCannotDeleteSystemTableException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentPreviousVersionException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInvalidTableIdException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentTooManySortsException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentGivenLogFileHasBadSignatureException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentColumnLongException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentBadParentPageLinkException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVFileInUseException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentColumnIndexedException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentFileIOFailException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentCurrencyStackOutOfMemoryException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentLogBufferTooSmallException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVSpaceCorruptedException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentLogSequenceEndException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentUnicodeTranslationBufferTooSmallException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInvalidParameterException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentBackupAbortByServerException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVStreamingFileReadOnlyException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentRunningInMultiInstanceModeException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInvalidOperationException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentFileIOSparseException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDecompressionFailedException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentPrimaryIndexCorruptedException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentOutOfBuffersException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentStartingRestoreLogTooHighException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVOwnerMapPageNotFoundException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentKeyTruncatedException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentBadSLVSignatureException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentTooManyActiveUsersException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentCheckpointDepthTooDeepException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentIndexBuildCorruptedException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentCannotLogDuringRecoveryRedoException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentCannotSeparateIntrinsicLVException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentCannotNestDDLException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentLogSectorSizeMismatchDatabasesConsistentException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentTooManySplitsException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentQueryNotSupportedException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentRecordNotDeletedException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentBadLogSignatureException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentNullKeyDisallowedException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentBackupInProgressException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInvalidSystemPathException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInternalErrorException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentVersionStoreEntryTooBigException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentTermInProgressException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInvalidBackupException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDeleteBackupFileFailException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDTCMissingCallbackOnRecoveryException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentBufferTooSmallException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentFileIORetryException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentUnicodeNormalizationNotSupportedException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentRequiredLogFilesMissingException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVEAListZeroAllocationException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentIndexNotFoundException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentLogFileSizeMismatchDatabasesConsistentException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentIllegalOperationException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDatabaseInvalidPagesException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentTransReadOnlyException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentLinkNotSupportedException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDatabaseSignInUseException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentIndexTuplesCannotRetrieveFromIndexException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentForceDetachNotAllowedException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDatabaseFileReadOnlyException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentRfsFailureException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInvalidInstanceException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentCommittedLogFilesMissingException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVHeaderBadChecksumException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVReadVerifyFailureException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentMissingCurrentLogFilesException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSPAvailExtCacheOutOfSyncException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDatabaseLeakInSpaceException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentOutOfCursorsException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDatabaseCorruptedException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentPatchFileMissingException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentBadRestoreTargetInstanceException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVFileStaleException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInvalidCodePageException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentObjectDuplicateException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentLSAlreadySetException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInvalidCreateDbVersionException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentVersionStoreOutOfMemoryAndCleanupTimedOutException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentPageNotInitializedException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentTestInjectionNotSupportedException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentFixedDDLException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentMultiValuedColumnMustBeTaggedException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentRecordFormatConversionFailedException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDiskFullException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDatabaseAlreadyRunningMaintenanceException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDiskReadVerificationFailureException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentIndexHasPrimaryException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentTooManyOpenTablesAndCleanupTimedOutException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentNoAttachmentsFailedIncrementalReseedException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDataHasChangedException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDatabaseSharingViolationException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVPagesNotFreeException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentReadPgnoVerifyFailureException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentKeyNotMadeException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDatabaseIdInUseException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDatabaseStreamingFileMismatchException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSurrogateBackupInProgressException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInvalidBackupSequenceException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentCannotMaterializeForwardOnlySortException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInvalidDatabaseIdException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDatabaseCorruptedNoRepairException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentLogFileCorruptException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentTableDuplicateException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentFileIOBeyondEOFException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentUpdateMustVersionException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentCannotBeTaggedException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentTempFileOpenErrorException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInvalidPathException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVProviderNotLoadedException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentAccessDeniedException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDTCCallbackUnexpectedErrorException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDatabasePatchFileMismatchException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInvalidLCMapStringFlagsException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDatabaseInvalidNameException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSessionInUseException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentOSSnapshotInvalidSnapIdException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInstanceUnavailableDueToFatalLogDiskFullException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVBufferTooSmallException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSessionSharingViolationException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDatabase200FormatException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentObjectNotFoundException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSLVPagesNotDeletedException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInvalidLogDirectoryException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInvalidObjectException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentRestoreInProgressException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentDatabaseInUseException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentFileSystemCorruptionException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentSeparatedLongValueException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentUnicodeLanguageValidationFailureException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentRecoveryVerifyFailureException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentUnloadableOSFunctionalityException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentFilteredMoveNotSupportedException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentMustBeSeparateLongValueException", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.EsentInvalidPrereadException", Justification = "Stylebot Generated FxCop Exclusion.")] +#endregion + +#region CA2001 +#if DEBUG +[module: SuppressMessage("Microsoft.Reliability", "CA2001:AvoidCallingProblematicMethods", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Implementation.JetApi.#JetCompact(Microsoft.Isam.Esent.Interop.JET_SESID,System.String,System.String,Microsoft.Isam.Esent.Interop.JET_PFNSTATUS,System.Object,Microsoft.Isam.Esent.Interop.CompactGrbit)", MessageId = "System.GC.Collect", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Reliability", "CA2001:AvoidCallingProblematicMethods", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Implementation.JetApi.#JetSetSystemParameter(Microsoft.Isam.Esent.Interop.JET_INSTANCE,Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_param,Microsoft.Isam.Esent.Interop.JET_CALLBACK,System.String)", MessageId = "System.GC.Collect", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Reliability", "CA2001:AvoidCallingProblematicMethods", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Implementation.JetApi.#JetDefragment2(Microsoft.Isam.Esent.Interop.JET_SESID,Microsoft.Isam.Esent.Interop.JET_DBID,System.String,System.Int32&,System.Int32&,Microsoft.Isam.Esent.Interop.JET_CALLBACK,Microsoft.Isam.Esent.Interop.DefragGrbit)", MessageId = "System.GC.Collect", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Reliability", "CA2001:AvoidCallingProblematicMethods", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Implementation.JetApi.#JetRestoreInstance(Microsoft.Isam.Esent.Interop.JET_INSTANCE,System.String,System.String,Microsoft.Isam.Esent.Interop.JET_PFNSTATUS)", MessageId = "System.GC.Collect", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Reliability", "CA2001:AvoidCallingProblematicMethods", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.Implementation.JetApi.#JetBackupInstance(Microsoft.Isam.Esent.Interop.JET_INSTANCE,System.String,Microsoft.Isam.Esent.Interop.BackupGrbit,Microsoft.Isam.Esent.Interop.JET_PFNSTATUS)", MessageId = "System.GC.Collect", Justification = "Stylebot Generated FxCop Exclusion.")] +#endif // DEBUG +#endregion + +#region CA1811 +[module: SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.SystemParameters.#SetStringParameter(Microsoft.Isam.Esent.Interop.JET_param,System.String)", Justification = "Stylebot Generated FxCop Exclusion.")] +[module: SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Scope = "member", Target = "Microsoft.Isam.Esent.Interop.SystemParameters.#GetStringParameter(Microsoft.Isam.Esent.Interop.JET_param)", Justification = "Stylebot Generated FxCop Exclusion.")] +#endregion + +#region Internal rules. +[module: SuppressMessage("Exchange.Performance", "EX0023:DeadVariableDetector", Justification = "Need to hold on to a reference to the callback, so that it does not get garbage collected.", Target = "Microsoft.Isam.Esent.Interop.Unpublished.EmitLogDataCallback.wrapperCallback")] +[module: SuppressMessage("Exchange.Performance", "EX0023:DeadVariableDetector", Justification = "Need to hold on to a reference to the callback, so that it does not get garbage collected.", Target = "Microsoft.Isam.Esent.Interop.Windows8.EmitLogDataCallback.wrapperCallback")] +[module: SuppressMessage("Exchange.Performance", "EX0023:DeadVariableDetector", Justification = "Need to hold on to a reference to the callback, so that it does not get garbage collected.", Target = "Microsoft.Isam.Esent.Interop.Unpublished.DurableCommitCallback.wrapperCallback")] +[module: SuppressMessage("Exchange.Performance", "EX0023:DeadVariableDetector", Justification = "Need to hold on to a reference to the callback, so that it does not get garbage collected.", Target = "Microsoft.Isam.Esent.Interop.Windows8.DurableCommitCallback.wrapperCallback")] + +[module: SuppressMessage("Exchange.Performance", "0023:DeadVariableDetector", Justification = "Need to hold on to a reference to the callback, so that it does not get garbage collected.", Target = "Microsoft.Isam.Esent.Interop.Unpublished.EmitLogDataCallback.wrapperCallback")] +[module: SuppressMessage("Exchange.Performance", "0023:DeadVariableDetector", Justification = "Need to hold on to a reference to the callback, so that it does not get garbage collected.", Target = "Microsoft.Isam.Esent.Interop.Windows8.EmitLogDataCallback.wrapperCallback")] +[module: SuppressMessage("Exchange.Performance", "0023:DeadVariableDetector", Justification = "Need to hold on to a reference to the callback, so that it does not get garbage collected.", Target = "Microsoft.Isam.Esent.Interop.Unpublished.DurableCommitCallback.wrapperCallback")] +[module: SuppressMessage("Exchange.Performance", "0023:DeadVariableDetector", Justification = "Need to hold on to a reference to the callback, so that it does not get garbage collected.", Target = "Microsoft.Isam.Esent.Interop.Windows8.DurableCommitCallback.wrapperCallback")] + +[module: SuppressMessage("Exchange.Performance", "EX0023:DeadVariableDetector", Justification = "Need to hold on to a reference to the callback, so that it does not get garbage collected.", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Windows8.DurableCommitCallback")] + +[module: SuppressMessage("Exchange.Performance", "EX0023:DeadVariableDetector", Justification = "Need to hold on to a reference to the callback, so that it does not get garbage collected.", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Unpublished.EmitLogDataCallback.wrapperCallback")] +[module: SuppressMessage("Exchange.Performance", "EX0023:DeadVariableDetector", Justification = "Need to hold on to a reference to the callback, so that it does not get garbage collected.", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Windows8.EmitLogDataCallback.wrapperCallback")] +[module: SuppressMessage("Exchange.Performance", "EX0023:DeadVariableDetector", Justification = "Need to hold on to a reference to the callback, so that it does not get garbage collected.", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Unpublished.DurableCommitCallback.wrapperCallback")] +[module: SuppressMessage("Exchange.Performance", "EX0023:DeadVariableDetector", Justification = "Need to hold on to a reference to the callback, so that it does not get garbage collected.", Scope = "type", Target = "Microsoft.Isam.Esent.Interop.Windows8.DurableCommitCallback.wrapperCallback")] + +#endregion diff --git a/WelsonJS.Toolkit/EsentInterop/EsentErrorException.cs b/WelsonJS.Toolkit/EsentInterop/EsentErrorException.cs new file mode 100644 index 0000000..c0d3844 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/EsentErrorException.cs @@ -0,0 +1,76 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Runtime.Serialization; + + /// + /// Base class for ESENT error exceptions. + /// + [Serializable] + public class EsentErrorException : EsentException + { + /// + /// The error code that was encountered. + /// + private JET_err errorCode; + + /// + /// Initializes a new instance of the EsentErrorException class. + /// + /// The description of the error. + /// The error code of the exception. + internal EsentErrorException(string message, JET_err err) : base(message) + { + this.errorCode = err; + } + + /// + /// Initializes a new instance of the EsentErrorException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + protected EsentErrorException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + this.errorCode = (JET_err)info.GetInt32("errorCode"); + } + + /// + /// Gets the underlying Esent error for this exception. + /// + public JET_err Error + { + get + { + return this.errorCode; + } + } + +#if !MANAGEDESENT_ON_CORECLR // Serialization does not work in Core CLR. + /// When overridden in a derived class, sets the with information about the exception. + /// The that holds the serialized object data about the exception being thrown. + /// The that contains contextual information about the source or destination. + /// The parameter is a null reference (Nothing in Visual Basic). + /// 2 + /// + /// + /// + /// + public override void GetObjectData(SerializationInfo info, StreamingContext context) + { + base.GetObjectData(info, context); + if (info != null) + { + info.AddValue("errorCode", this.errorCode, typeof(int)); + } + } +#endif + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/EsentException.cs b/WelsonJS.Toolkit/EsentInterop/EsentException.cs new file mode 100644 index 0000000..8a278ef --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/EsentException.cs @@ -0,0 +1,51 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent +{ + using System; + using System.Runtime.Serialization; +#if !MANAGEDESENT_SUPPORTS_SERIALIZATION && MANAGEDESENT_ON_WSA + using Microsoft.Isam.Esent.Interop; + using SerializableAttribute = Microsoft.Isam.Esent.Interop.SerializableAttribute; +#endif + + /// + /// Base class for ESENT exceptions. + /// + [Serializable] + public abstract class EsentException : Exception + { + /// + /// Initializes a new instance of the EsentException class. + /// + protected EsentException() + { + } + + /// + /// Initializes a new instance of the EsentException class with a specified error message. + /// + /// The message that describes the error. + protected EsentException(string message) + : base(message) + { + } + + /// + /// Initializes a new instance of the EsentException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + protected EsentException(SerializationInfo info, StreamingContext context) +#if MANAGEDESENT_SUPPORTS_SERIALIZATION || !MANAGEDESENT_ON_WSA + : base(info, context) +#endif + { + } + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/EsentInterop.csproj b/WelsonJS.Toolkit/EsentInterop/EsentInterop.csproj new file mode 100644 index 0000000..0e509fa --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/EsentInterop.csproj @@ -0,0 +1,109 @@ + + + + Debug + AnyCPU + {E929E163-52A0-4AAC-917B-6D7FAF70C45E} + Library + Properties + Esent.Interop + Esent.Interop + netstandard2.0 + false + false + + 512 + true + ..\scripts\internal\35MSSharedLib1024.snk + AnyCPU;x86 + + + + + $(DefineConstants);STRONG_NAMED + true + $(PublicKeyFile) + + + + true + full + false + bin\Debug\ + $(DefineConstants);DEBUG;TRACE + prompt + 4 + true + $(OutputPath)\$(AssemblyName).xml + true + true + AllRules.ruleset + false + + + + true + full + false + bin\Debug\ + $(DefineConstants);DEBUG;TRACE + prompt + 4 + true + $(OutputPath)\$(AssemblyName).xml + true + true + AllRules.ruleset + false + + + + pdbonly + true + bin\Release\ + $(DefineConstants) + prompt + 4 + true + $(OutputPath)\$(AssemblyName).xml + true + true + AllRules.ruleset + false + + + + pdbonly + true + bin\Release\ + $(DefineConstants) + prompt + 4 + true + $(OutputPath)\$(AssemblyName).xml + true + true + AllRules.ruleset + false + + + + + + + + + + + + + + + + diff --git a/WelsonJS.Toolkit/EsentInterop/EsentInvalidColumnException.cs b/WelsonJS.Toolkit/EsentInterop/EsentInvalidColumnException.cs new file mode 100644 index 0000000..44b3ac4 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/EsentInvalidColumnException.cs @@ -0,0 +1,50 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Runtime.Serialization; + + /// + /// Exception thrown when a column conversion fails. + /// + [Serializable] + public class EsentInvalidColumnException : EsentException + { + /// + /// Initializes a new instance of the EsentInvalidColumnException class. + /// + public EsentInvalidColumnException() + { + } + +#if MANAGEDESENT_ON_CORECLR +#else + /// + /// Initializes a new instance of the EsentInvalidColumnException class. This constructor + /// is used to deserialize a serialized exception. + /// + /// The data needed to deserialize the object. + /// The deserialization context. + protected EsentInvalidColumnException(SerializationInfo info, StreamingContext context) : + base(info, context) + { + } +#endif + + /// + /// Gets a text message describing the exception. + /// + public override string Message + { + get + { + return "Column is not valid for this operation"; + } + } + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/EsentResource.cs b/WelsonJS.Toolkit/EsentInterop/EsentResource.cs new file mode 100644 index 0000000..2e16f7b --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/EsentResource.cs @@ -0,0 +1,127 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Diagnostics; + + /// + /// This is the base class for all esent resource objects. + /// Subclasses of this class can allocate and release unmanaged + /// resources. + /// + public abstract class EsentResource : IDisposable + { + /// + /// True if a resource has been allocated. + /// + private bool hasResource; + + /// + /// True if this object has been disposed. + /// + private bool isDisposed; + + /// + /// Finalizes an instance of the EsentResource class. + /// + ~EsentResource() + { + this.Dispose(false); + } + + /// + /// Gets a value indicating whether the underlying resource + /// is currently allocated. + /// + protected bool HasResource + { + get + { + return this.hasResource; + } + } + + /// + /// Dispose of this object, releasing the underlying + /// Esent resource. + /// + public void Dispose() + { + this.Dispose(true); + GC.SuppressFinalize(this); + } + + /// + /// Called by Dispose and the finalizer. + /// + /// + /// True if called from Dispose. + /// + protected virtual void Dispose(bool isDisposing) + { + if (isDisposing) + { + if (this.hasResource) + { + this.ReleaseResource(); + Debug.Assert(!this.hasResource, "Resource was not freed"); + } + + this.isDisposed = true; + } + else + { + if (this.hasResource) + { + // We should not get to this point. The problem is that if + // we use finalizers to free esent resources they may end + // up being freed in the wrong order (e.g. JetEndSession is + // called before JetCloseTable). Freeing esent resources + // in the wrong order will generate EsentExceptions. + Trace.TraceWarning("Non-finalized ESENT resource {0}", this); + } + } + } + + /// + /// Throw an exception if this object has been disposed. + /// + protected void CheckObjectIsNotDisposed() + { + if (this.isDisposed) + { + throw new ObjectDisposedException("EsentResource"); + } + } + + /// + /// Called by a subclass when a resource is allocated. + /// + protected void ResourceWasAllocated() + { + this.CheckObjectIsNotDisposed(); + Debug.Assert(!this.hasResource, "Resource is already allocated"); + this.hasResource = true; + } + + /// + /// Called by a subclass when a resource is freed. + /// + protected void ResourceWasReleased() + { + Debug.Assert(this.hasResource, "Resource is not allocated"); + this.CheckObjectIsNotDisposed(); + this.hasResource = false; + } + + /// + /// Implemented by the subclass to release a resource. + /// + protected abstract void ReleaseResource(); + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/EsentStopwatch.cs b/WelsonJS.Toolkit/EsentInterop/EsentStopwatch.cs new file mode 100644 index 0000000..0e921d6 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/EsentStopwatch.cs @@ -0,0 +1,113 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Diagnostics; + using Microsoft.Isam.Esent.Interop.Vista; + + /// + /// Provides a set of methods and properties that you can use to measure + /// ESENT work statistics for a thread. If the current version of ESENT + /// doesn't support then all + /// ESENT statistics will be 0. + /// + public class EsentStopwatch + { + /// + /// Used to measure how long statistics are collected for. + /// + private Stopwatch stopwatch; + + /// + /// The stats at the start of our collection. + /// + private JET_THREADSTATS statsAtStart; + + /// + /// Gets a value indicating whether the EsentStopwatch timer is running. + /// + public bool IsRunning { get; private set; } + + /// + /// Gets the total ESENT work stats measured by the current instance. + /// + public JET_THREADSTATS ThreadStats { get; private set; } + + /// + /// Gets the total elapsed time measured by the current instance. + /// + public TimeSpan Elapsed { get; private set; } + + /// + /// Initializes a new EsentStopwatch instance and starts + /// measuring elapsed time. + /// + /// A new, running EsentStopwatch. + public static EsentStopwatch StartNew() + { + var stopwatch = new EsentStopwatch(); + stopwatch.Start(); + return stopwatch; + } + + /// + /// Returns a that represents the current . + /// + /// + /// A that represents the current . + /// + public override string ToString() + { + return this.IsRunning ? "EsentStopwatch (running)" : this.Elapsed.ToString(); + } + + /// + /// Starts measuring ESENT work. + /// + public void Start() + { + this.Reset(); + this.stopwatch = Stopwatch.StartNew(); + this.IsRunning = true; + if (EsentVersion.SupportsVistaFeatures) + { + VistaApi.JetGetThreadStats(out this.statsAtStart); + } + } + + /// + /// Stops measuring ESENT work. + /// + public void Stop() + { + if (this.IsRunning) + { + this.IsRunning = false; + this.stopwatch.Stop(); + this.Elapsed = this.stopwatch.Elapsed; + if (EsentVersion.SupportsVistaFeatures) + { + JET_THREADSTATS statsAtEnd; + VistaApi.JetGetThreadStats(out statsAtEnd); + this.ThreadStats = statsAtEnd - this.statsAtStart; + } + } + } + + /// + /// Stops time interval measurement and resets the thread statistics. + /// + public void Reset() + { + this.stopwatch = null; + this.ThreadStats = new JET_THREADSTATS(); + this.Elapsed = TimeSpan.Zero; + this.IsRunning = false; + } + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/EsentVersion.cs b/WelsonJS.Toolkit/EsentInterop/EsentVersion.cs new file mode 100644 index 0000000..129d491 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/EsentVersion.cs @@ -0,0 +1,134 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using Microsoft.Isam.Esent.Interop.Implementation; + + /// + /// Gives information about the version of esent being used. + /// + public static class EsentVersion + { + /// + /// Gets a value indicating whether the current version of esent + /// supports features available in the Windows Server 2003 version of + /// esent. + /// + public static bool SupportsServer2003Features + { + get + { + return Capabilities.SupportsServer2003Features; + } + } + + /// + /// Gets a value indicating whether the current version of esent + /// supports features available in the Windows Vista version of + /// esent. + /// + public static bool SupportsVistaFeatures + { + get + { + return Capabilities.SupportsVistaFeatures; + } + } + + /// + /// Gets a value indicating whether the current version of esent + /// supports features available in the Windows 7 version of + /// esent. + /// + public static bool SupportsWindows7Features + { + get + { + return Capabilities.SupportsWindows7Features; + } + } + + /// + /// Gets a value indicating whether the current version of esent + /// supports features available in the Windows 8 version of + /// esent. + /// + public static bool SupportsWindows8Features + { + get + { + return Capabilities.SupportsWindows8Features; + } + } + + /// + /// Gets a value indicating whether the current version of esent + /// supports features available in the Windows 8.1 version of + /// esent. + /// + public static bool SupportsWindows81Features + { + get + { + return Capabilities.SupportsWindows81Features; + } + } + + /// + /// Gets a value indicating whether the current version of esent + /// supports features available in the Windows 10 version of + /// esent. + /// + public static bool SupportsWindows10Features + { + get + { + return Capabilities.SupportsWindows10Features; + } + } + + /// + /// Gets a value indicating whether the current version of esent + /// can use non-ASCII paths to access databases. + /// + public static bool SupportsUnicodePaths + { + get + { + return Capabilities.SupportsUnicodePaths; + } + } + + /// + /// Gets a value indicating whether large (> 255 byte) keys are supported. + /// The key size for an index can be specified in the + /// object. + /// + public static bool SupportsLargeKeys + { + get + { + return Capabilities.SupportsLargeKeys; + } + } + + /// + /// Gets a description of the current Esent capabilities. + /// + /// + /// We allow this to be set separately so that capabilities can + /// be downgraded for testing. + /// + private static JetCapabilities Capabilities + { + get + { + return Api.Impl.Capabilities; + } + } + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/FloatColumnValue.cs b/WelsonJS.Toolkit/EsentInterop/FloatColumnValue.cs new file mode 100644 index 0000000..9a67b54 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/FloatColumnValue.cs @@ -0,0 +1,69 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Diagnostics; + + /// + /// A column value. + /// + public class FloatColumnValue : ColumnValueOfStruct + { + /// + /// Gets the size of the value in the column. This returns 0 for + /// variable sized columns (i.e. binary and string). + /// + protected override int Size + { + [DebuggerStepThrough] + get { return sizeof(float); } + } + + /// + /// Recursive SetColumns method for data pinning. This populates the buffer and + /// calls the inherited SetColumns method. + /// + /// The session to use. + /// + /// The table to set the columns in. An update should be prepared. + /// + /// + /// Column values to set. + /// + /// + /// Structures to put the pinned data in. + /// + /// Offset of this object in the array. + /// An error code. + internal override unsafe int SetColumns(JET_SESID sesid, JET_TABLEID tableid, ColumnValue[] columnValues, NATIVE_SETCOLUMN* nativeColumns, int i) + { + var data = this.Value.GetValueOrDefault(); + return this.SetColumns(sesid, tableid, columnValues, nativeColumns, i, &data, sizeof(float), this.Value.HasValue); + } + + /// + /// Given data retrieved from ESENT, decode the data and set the value in the ColumnValue object. + /// + /// An array of bytes. + /// The starting position within the bytes. + /// The number of bytes to decode. + /// The error returned from ESENT. + protected override void GetValueFromBytes(byte[] value, int startIndex, int count, int err) + { + if (JET_wrn.ColumnNull == (JET_wrn)err) + { + this.Value = null; + } + else + { + this.CheckDataCount(count); + this.Value = BitConverter.ToSingle(value, startIndex); + } + } + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/GCHandleCollection.cs b/WelsonJS.Toolkit/EsentInterop/GCHandleCollection.cs new file mode 100644 index 0000000..8ee954c --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/GCHandleCollection.cs @@ -0,0 +1,94 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop.Implementation +{ + using System; + using System.Collections.Generic; + using System.Diagnostics; + using System.Runtime.InteropServices; + + /// + /// A collection of GCHandles for pinned objects. The handles + /// are freed when this object is disposed. + /// + [StructLayout(LayoutKind.Auto)] + internal struct GCHandleCollection : IDisposable + { + /// + /// The handles of the objects being pinned. + /// + private GCHandle[] handles; + + /// + /// Handle count. + /// + private int count; + + /// + /// Disposes of the object. + /// + public void Dispose() + { + if (null != this.handles) + { + for (int i = 0; i < this.count; i++) + { + this.handles[i].Free(); + } + + this.handles = null; + } + } + + /// + /// Add an object to the handle collection. This automatically + /// pins the object. + /// + /// The object to pin. + /// + /// The address of the pinned object. This is valid until the + /// GCHandleCollection is disposed. + /// + public IntPtr Add(object value) + { + if (null == value) + { + return IntPtr.Zero; + } + + if (null == this.handles) + { + this.handles = new GCHandle[4]; // same as List + } + else if (this.count == this.handles.Length) + { + Array.Resize(ref this.handles, this.count * 2); + } + + Debug.Assert(this.count < this.handles.Length, "Index out of bound"); + + GCHandle handle = GCHandle.Alloc(value, GCHandleType.Pinned); + this.handles[this.count++] = handle; + + IntPtr pinned = handle.AddrOfPinnedObject(); + Debug.Assert(IntPtr.Zero != pinned, "Pinned object has null address"); + return pinned; + } + + /// + /// Set handle array capacity. + /// + /// Estimated handle count + public void SetCapacity(int capacity) + { + if (null == this.handles) + { + this.handles = new GCHandle[capacity]; + } + } + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/GenericEnumerable.cs b/WelsonJS.Toolkit/EsentInterop/GenericEnumerable.cs new file mode 100644 index 0000000..20bf58c --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/GenericEnumerable.cs @@ -0,0 +1,64 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System.Collections; + using System.Collections.Generic; + + /// + /// IEnumerable class that takes a delegate to create the enumerator it returns. + /// + /// The type returned by the enumerator. + internal class GenericEnumerable : IEnumerable + { + /// + /// The delegate used to create the enumerator. + /// + private readonly CreateEnumerator enumeratorCreator; + + /// + /// Initializes a new instance of the class. + /// + /// + /// The enumerator creator. + /// + public GenericEnumerable(CreateEnumerator enumeratorCreator) + { + this.enumeratorCreator = enumeratorCreator; + } + + /// + /// IEnumerator creating delegate. + /// + /// A new enumerator. + public delegate IEnumerator CreateEnumerator(); + + /// + /// Returns an enumerator that iterates through the collection. + /// + /// + /// A + /// that can be used to iterate through the collection. + /// + public IEnumerator GetEnumerator() + { + return this.enumeratorCreator(); + } + + /// + /// Returns an enumerator that iterates through a collection. + /// + /// + /// A + /// object that can be used to iterate through the collection. + /// + IEnumerator IEnumerable.GetEnumerator() + { + return this.GetEnumerator(); + } + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/GetLockHelpers.cs b/WelsonJS.Toolkit/EsentInterop/GetLockHelpers.cs new file mode 100644 index 0000000..d3aa0e1 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/GetLockHelpers.cs @@ -0,0 +1,48 @@ +// -------------------------------------------------------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +// +// Helper methods for JetMakeKey. +// +// -------------------------------------------------------------------------------------------------------------------- + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK +namespace Microsoft.Isam.Esent.Interop +{ + using System.Diagnostics; + + /// + /// Helper methods for the ESENT API. These wrap JetMakeKey. + /// + public static partial class Api + { + /// + /// Explicitly reserve the ability to update a row, write lock, or to explicitly prevent a row from + /// being updated by any other session, read lock. Normally, row write locks are acquired implicitly as a + /// result of updating rows. Read locks are usually not required because of record versioning. However, + /// in some cases a transaction may desire to explicitly lock a row to enforce serialization, or to ensure + /// that a subsequent operation will succeed. + /// + /// The session to use. + /// The cursor to use. A lock will be acquired on the current record. + /// Lock options, use this to specify which type of lock to obtain. + /// + /// True if the lock was obtained, false otherwise. An exception is thrown if an unexpected + /// error is encountered. + /// + public static bool TryGetLock(JET_SESID sesid, JET_TABLEID tableid, GetLockGrbit grbit) + { + var err = (JET_err)Impl.JetGetLock(sesid, tableid, grbit); + if (JET_err.WriteConflict == err) + { + return false; + } + + Api.Check((int)err); + Debug.Assert(err >= JET_err.Success, "Exception should have been thrown in case of error"); + return true; + } + } +} +#endif // !MANAGEDESENT_ON_WSA \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/GuidColumnValue.cs b/WelsonJS.Toolkit/EsentInterop/GuidColumnValue.cs new file mode 100644 index 0000000..52cad4d --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/GuidColumnValue.cs @@ -0,0 +1,82 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Diagnostics; + + /// + /// A column value. + /// + public class GuidColumnValue : ColumnValueOfStruct + { + /// + /// Gets the size of the value in the column. This returns 0 for + /// variable sized columns (i.e. binary and string). + /// + protected override int Size + { + [DebuggerStepThrough] + get { return 16; /* sizeof(Guid) */ } + } + + /// + /// Recursive SetColumns method for data pinning. This populates the buffer and + /// calls the inherited SetColumns method. + /// + /// The session to use. + /// + /// The table to set the columns in. An update should be prepared. + /// + /// + /// Column values to set. + /// + /// + /// Structures to put the pinned data in. + /// + /// Offset of this object in the array. + /// An error code. + internal override unsafe int SetColumns(JET_SESID sesid, JET_TABLEID tableid, ColumnValue[] columnValues, NATIVE_SETCOLUMN* nativeColumns, int i) + { + Guid data = this.Value.GetValueOrDefault(); + return this.SetColumns(sesid, tableid, columnValues, nativeColumns, i, &data, this.Size, this.Value.HasValue); + } + + /// + /// Given data retrieved from ESENT, decode the data and set the value in the ColumnValue object. + /// + /// An array of bytes. + /// The starting position within the bytes. + /// The number of bytes to decode. + /// The error returned from ESENT. + protected override void GetValueFromBytes(byte[] value, int startIndex, int count, int err) + { + if (JET_wrn.ColumnNull == (JET_wrn)err) + { + this.Value = null; + } + else + { + this.CheckDataCount(count); + unsafe + { + // There isn't a convenient Guid constructor for this case, so + // we copy the data manually. + Guid guid; + void* guidBuffer = &guid; + byte* buffer = (byte*)guidBuffer; + for (int i = 0; i < this.Size; ++i) + { + buffer[i] = value[startIndex + i]; + } + + this.Value = guid; + } + } + } + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/IContentEquatable.cs b/WelsonJS.Toolkit/EsentInterop/IContentEquatable.cs new file mode 100644 index 0000000..b770c1c --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/IContentEquatable.cs @@ -0,0 +1,26 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + /// + /// Interface for objects that can have their contents compared against + /// each other. This should be used for equality comparisons on mutable + /// reference objects where overriding Equals() and GetHashCode() isn't a + /// good idea. + /// + /// The type of objects to compare. + public interface IContentEquatable + { + /// + /// Returns a value indicating whether this instance is equal + /// to another instance. + /// + /// An instance to compare with this instance. + /// True if the two instances are equal. + bool ContentEquals(T other); + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/IDeepCloneable.cs b/WelsonJS.Toolkit/EsentInterop/IDeepCloneable.cs new file mode 100644 index 0000000..ae03955 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/IDeepCloneable.cs @@ -0,0 +1,22 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + /// + /// Interface for objects that can be cloned. This creates a deep copy of + /// the object. It is used for cloning meta-data objects. + /// + /// The type of object. + public interface IDeepCloneable + { + /// + /// Returns a deep copy of the object. + /// + /// A deep copy of the object. + T DeepClone(); + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/IJetApi.cs b/WelsonJS.Toolkit/EsentInterop/IJetApi.cs new file mode 100644 index 0000000..30425f0 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/IJetApi.cs @@ -0,0 +1,2556 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop.Implementation +{ + using System; + using System.Collections.Generic; + using Microsoft.Isam.Esent.Interop.Server2003; + using Microsoft.Isam.Esent.Interop.Vista; + using Microsoft.Isam.Esent.Interop.Windows7; + using Microsoft.Isam.Esent.Interop.Windows8; + + /// + /// This interface describes all the methods which have a P/Invoke implementation. + /// Concrete instances of this interface provide methods that call ESENT. + /// + internal partial interface IJetApi + { + /// + /// Gets a description of the capabilities of the current version of ESENT. + /// + JetCapabilities Capabilities { get; } + + #region Init/Term + + /// + /// Allocates a new instance of the database engine. + /// + /// Returns the new instance. + /// The name of the instance. Names must be unique. + /// An error if the call fails. + int JetCreateInstance(out JET_INSTANCE instance, string name); + + /// + /// Allocate a new instance of the database engine for use in a single + /// process, with a display name specified. + /// + /// Returns the newly create instance. + /// + /// Specifies a unique string identifier for the instance to be created. + /// This string must be unique within a given process hosting the + /// database engine. + /// + /// + /// A display name for the instance to be created. This will be used + /// in eventlog entries. + /// + /// Creation options. + /// An error if the call fails. + int JetCreateInstance2(out JET_INSTANCE instance, string name, string displayName, CreateInstanceGrbit grbit); + + /// + /// 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. + /// + /// An error if the call fails. + int JetInit(ref JET_INSTANCE instance); + + /// + /// 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. + /// + /// + /// Initialization options. + /// + /// An error or warning. + int JetInit2(ref JET_INSTANCE instance, InitGrbit grbit); + + /// + /// 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. + /// + /// An error code or warning. + int JetInit3(ref JET_INSTANCE instance, JET_RSTINFO recoveryOptions, InitGrbit grbit); + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + /// + /// Retrieves information about the instances that are running. + /// + /// + /// Returns the number of instances. + /// + /// + /// Returns an array of instance info objects, one for each running + /// instance. + /// + /// An error code if the call fails. + int JetGetInstanceInfo(out int numInstances, out JET_INSTANCE_INFO[] instances); + + /// + /// Retrieves information about an instance. + /// + /// The instance to get information about. + /// Retrieved information. + /// The type of information to retrieve. + /// An error code if the call fails. + int JetGetInstanceMiscInfo(JET_INSTANCE instance, out JET_SIGNATURE signature, JET_InstanceMiscInfo infoLevel); + + /// + /// Prevents streaming backup-related activity from continuing on a + /// specific running instance, thus ending the streaming backup in + /// a predictable way. + /// + /// The instance to use. + /// An error code. + int JetStopBackupInstance(JET_INSTANCE instance); + + /// + /// Prepares an instance for termination. + /// + /// The (running) instance to use. + /// An error code. + int JetStopServiceInstance(JET_INSTANCE instance); +#endif // !MANAGEDESENT_ON_WSA + + /// + /// Prepares an instance for termination. Can also be used to resume a previous quiescing. + /// + /// The (running) instance to use. + /// The options to stop or resume the instance. + /// An error code. + int JetStopServiceInstance2( + JET_INSTANCE instance, + StopServiceGrbit grbit); + + /// + /// Terminate an instance that was created with or + /// . + /// + /// The instance to terminate. + /// An error or warning. + int JetTerm(JET_INSTANCE instance); + + /// + /// Terminate an instance that was created with or + /// . + /// + /// The instance to terminate. + /// Termination options. + /// An error or warning. + int JetTerm2(JET_INSTANCE instance, TermGrbit grbit); + + /// + /// Sets database configuration options. + /// + /// + /// The instance to set the option on or + /// to set the option on all instances. + /// + /// The session to use. + /// The parameter to set. + /// The value of the parameter to set, if the parameter is an integer type. + /// The value of the parameter to set, if the parameter is a string type. + /// An error or warning. + int JetSetSystemParameter(JET_INSTANCE instance, JET_SESID sesid, JET_param paramid, IntPtr paramValue, string paramString); + + /// + /// Sets database configuration options. This overload is used when the + /// parameter being set is of type JET_CALLBACK. + /// + /// + /// The instance to set the option on or + /// to set the option on all instances. + /// + /// The session to use. + /// The parameter to set. + /// The value of the parameter to set. + /// The value of the string parameter to set. + /// An error or warning. + int JetSetSystemParameter(JET_INSTANCE instance, JET_SESID sesid, JET_param paramid, JET_CALLBACK paramValue, string paramString); + + /// + /// Gets database configuration options. + /// + /// The instance to retrieve the options from. + /// The session to use. + /// The parameter to get. + /// Returns the value of the parameter, if the value is an integer. + /// Returns the value of the parameter, if the value is a string. + /// The maximum size of the parameter string. + /// + /// passes in the error number in the paramValue, which is why it is + /// a ref parameter and not an out parameter. + /// + /// An error or warning. + int JetGetSystemParameter(JET_INSTANCE instance, JET_SESID sesid, JET_param paramid, ref IntPtr paramValue, out string paramString, int maxParam); + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + /// + /// Retrieves the version of the database engine. + /// + /// The session to use. + /// Returns the version number of the database engine. + /// An error code if the call fails. + int JetGetVersion(JET_SESID sesid, out uint version); +#endif // !MANAGEDESENT_ON_WSA + #endregion + + #region Databases + + /// + /// Creates and attaches a database file. + /// + /// The session to use. + /// The path to the database file to create. + /// The parameter is not used. + /// Returns the dbid of the new database. + /// Database creation options. + /// An error or warning. + int JetCreateDatabase(JET_SESID sesid, string database, string connect, out JET_DBID dbid, CreateDatabaseGrbit grbit); + + /// + /// Creates and attaches a database file with a maximum database size specified. + /// . + /// + /// The session to use. + /// The path to the database file to create. + /// + /// The maximum size, in database pages, of the database. Passing 0 means there is + /// no enforced maximum. + /// + /// Returns the dbid of the new database. + /// Database creation options. + /// An error or warning. + int JetCreateDatabase2(JET_SESID sesid, string database, int maxPages, out JET_DBID dbid, CreateDatabaseGrbit grbit); + + /// + /// Attaches a database file for use with a database instance. In order to use the + /// database, it will need to be subsequently opened with . + /// + /// The session to use. + /// The database to attach. + /// Attach options. + /// An error or warning. + int JetAttachDatabase(JET_SESID sesid, string database, AttachDatabaseGrbit grbit); + + /// + /// Attaches a database file for use with a database instance. In order to use the + /// database, it will need to be subsequently opened with . + /// + /// The session to use. + /// The database to attach. + /// + /// The maximum size, in database pages, of the database. Passing 0 means there is + /// no enforced maximum. + /// + /// Attach options. + /// An error or warning. + int JetAttachDatabase2(JET_SESID sesid, string database, int maxPages, AttachDatabaseGrbit grbit); + + /// + /// Opens a database previously attached with , + /// for use with a database session. This function can be called multiple times + /// for the same database. + /// + /// The session that is opening the database. + /// The database to open. + /// Reserved for future use. + /// Returns the dbid of the attached database. + /// Open database options. + /// An error or warning. + int JetOpenDatabase(JET_SESID sesid, string database, string connect, out JET_DBID dbid, OpenDatabaseGrbit grbit); + + /// + /// Closes a database file that was previously opened with or + /// created with . + /// + /// The session to use. + /// The database to close. + /// Close options. + /// An error or warning. + int JetCloseDatabase(JET_SESID sesid, JET_DBID dbid, CloseDatabaseGrbit grbit); + + /// + /// Releases a database file that was previously attached to a database session. + /// + /// The database session to use. + /// The database to detach. + /// An error or warning. + int JetDetachDatabase(JET_SESID sesid, string database); + + /// + /// Releases a database file that was previously attached to a database session. + /// + /// The database session to use. + /// The database to detach. + /// Detach options. + /// An error or warning. + int JetDetachDatabase2(JET_SESID sesid, string database, DetachDatabaseGrbit grbit); + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + /// + /// Makes a copy of an existing database. The copy is compacted to a + /// state optimal for usage. Data in the copied data will be packed + /// according to the measures chosen for the indexes at index create. + /// In this way, compacted data may be stored as densely as possible. + /// Alternatively, compacted data may reserve space for subsequent + /// record growth or index insertions. + /// + /// The session to use for the call. + /// The source database that will be compacted. + /// The name to use for the compacted database. + /// + /// A callback function that can be called periodically through the + /// database compact operation to report progress. + /// + /// + /// This parameter is ignored and should be null. + /// + /// Compact options. + /// An error code. + int JetCompact( + JET_SESID sesid, + string sourceDatabase, + string destinationDatabase, + JET_PFNSTATUS statusCallback, + object ignored, + CompactGrbit grbit); + + /// + /// Extends the size of a database that is currently open. + /// + /// The session to use. + /// The database to grow. + /// The desired size of the database, in pages. + /// + /// The size of the database, in pages, after the call. + /// + /// An error if the call fails. + int JetGrowDatabase(JET_SESID sesid, JET_DBID dbid, int desiredPages, out int actualPages); + + /// + /// Extends the size of a database that is currently open. + /// + /// The session to use. + /// The name of the database to grow. + /// The desired size of the database, in pages. + /// + /// The size of the database, in pages, after the call. + /// + /// An error if the call fails. + int JetSetDatabaseSize(JET_SESID sesid, string database, int desiredPages, out int actualPages); +#endif // !MANAGEDESENT_ON_WSA + + /// + /// Retrieves certain information about the given database. + /// + /// The session to use. + /// The database identifier. + /// The value to be retrieved. + /// The specific data to retrieve. + /// An error if the call fails. + int JetGetDatabaseInfo( + JET_SESID sesid, + JET_DBID dbid, + out int value, + JET_DbInfo infoLevel); + + /// + /// Retrieves certain information about the given database. + /// + /// The session to use. + /// The database identifier. + /// The value to be retrieved. + /// The specific data to retrieve. + /// An error if the call fails. + int JetGetDatabaseInfo( + JET_SESID sesid, + JET_DBID dbid, + out string value, + JET_DbInfo infoLevel); + + /// + /// Retrieves certain information about the given database. + /// + /// The session to use. + /// The database identifier. + /// The value to be retrieved. + /// The specific data to retrieve. + /// An error if the call fails. + int JetGetDatabaseInfo( + JET_SESID sesid, + JET_DBID dbid, + out JET_DBINFOMISC dbinfomisc, + JET_DbInfo infoLevel); + + /// + /// Retrieves certain information about the given database. + /// + /// The file name of the database. + /// The value to be retrieved. + /// The specific data to retrieve. + /// An error if the call fails. + int JetGetDatabaseFileInfo( + string databaseName, + out int value, + JET_DbInfo infoLevel); + + /// + /// Retrieves certain information about the given database. + /// + /// The file name of the database. + /// The value to be retrieved. + /// The specific data to retrieve. + /// An error if the call fails. + int JetGetDatabaseFileInfo( + string databaseName, + out long value, + JET_DbInfo infoLevel); + + /// + /// Retrieves certain information about the given database. + /// + /// The file name of the database. + /// The value to be retrieved. + /// The specific data to retrieve. + /// An error if the call fails. + int JetGetDatabaseFileInfo( + string databaseName, + out JET_DBINFOMISC dbinfomisc, + JET_DbInfo infoLevel); + + #endregion + + #region Backup/Restore + +#if !MANAGEDESENT_ON_WSA + /// + /// Performs a streaming backup of an instance, including all the attached + /// databases, to a directory. With multiple backup methods supported by + /// the engine, this is the simplest and most encapsulated function. + /// + /// The instance to backup. + /// + /// The directory where the backup is to be stored. If the backup path is + /// null to use the function will truncate the logs, if possible. + /// + /// Backup options. + /// + /// Optional status notification callback. + /// + /// An error code. + int JetBackupInstance( + JET_INSTANCE instance, string destination, BackupGrbit grbit, JET_PFNSTATUS statusCallback); + + /// + /// Restores and recovers a streaming backup of an instance including all + /// the attached databases. It is designed to work with a backup created + /// with the function. This is the + /// simplest and most encapsulated restore function. + /// + /// The instance to use. + /// + /// Location of the backup. The backup should have been created with + /// . + /// + /// + /// Name of the folder where the database files from the backup set will + /// be copied and recovered. If this is set to null, the database files + /// will be copied and recovered to their original location. + /// + /// + /// Optional status notification callback. + /// + /// An error code. + int JetRestoreInstance(JET_INSTANCE instance, string source, string destination, JET_PFNSTATUS statusCallback); +#endif // !MANAGEDESENT_ON_WSA + #endregion + + #region Snapshot Backup + +#if !MANAGEDESENT_ON_WSA + /// + /// Begins the preparations for a snapshot session. A snapshot session + /// is a short time interval in which the engine does not issue any + /// write IOs to disk, so that the engine can participate in a volume + /// snapshot session (when driven by a snapshot writer). + /// + /// Returns the ID of the snapshot session. + /// Snapshot options. + /// An error code if the call fails. + int JetOSSnapshotPrepare(out JET_OSSNAPID snapid, SnapshotPrepareGrbit grbit); + + /// + /// 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. + /// An error code if the call fails. + int JetOSSnapshotPrepareInstance(JET_OSSNAPID snapshot, JET_INSTANCE instance, SnapshotPrepareInstanceGrbit grbit); + + /// + /// Starts a snapshot. While the snapshot is in progress, no + /// write-to-disk activity by the engine can take place. + /// + /// The snapshot session. + /// + /// Returns the number of instances that are part of the snapshot session. + /// + /// + /// Returns information about the instances that are part of the snapshot session. + /// + /// + /// Snapshot freeze options. + /// + /// An error code if the call fails. + int JetOSSnapshotFreeze(JET_OSSNAPID snapshot, out int numInstances, out JET_INSTANCE_INFO[] instances, SnapshotFreezeGrbit 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. + /// An error code if the call fails. + int JetOSSnapshotGetFreezeInfo( + JET_OSSNAPID snapshot, + out int numInstances, + out JET_INSTANCE_INFO[] instances, + SnapshotGetFreezeInfoGrbit grbit); + + /// + /// Notifies the engine that it can resume normal IO operations after a + /// freeze period and a successful snapshot. + /// + /// The ID of the snapshot. + /// Thaw options. + /// An error code if the call fails. + int JetOSSnapshotThaw(JET_OSSNAPID snapid, SnapshotThawGrbit 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. + /// An error code if the call fails. + int JetOSSnapshotTruncateLog(JET_OSSNAPID snapshot, SnapshotTruncateLogGrbit 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. + /// An error code if the call fails. + int JetOSSnapshotTruncateLogInstance(JET_OSSNAPID snapshot, JET_INSTANCE instance, SnapshotTruncateLogGrbit grbit); + + /// + /// Notifies the engine that the snapshot session finished. + /// + /// The identifier of the snapshot session. + /// Snapshot end options. + /// An error code if the call fails. + int JetOSSnapshotEnd(JET_OSSNAPID snapid, SnapshotEndGrbit grbit); + + /// + /// Notifies the engine that it can resume normal IO operations after a + /// freeze period ended with a failed snapshot. + /// + /// Identifier of the snapshot session. + /// Options for this call. + /// An error code if the call fails. + int JetOSSnapshotAbort(JET_OSSNAPID snapid, SnapshotAbortGrbit grbit); +#endif // !MANAGEDESENT_ON_WSA + #endregion + + #region Streaming Backup/Restore + +#if !MANAGEDESENT_ON_WSA + /// + /// Initiates an external backup while the engine and database are online and active. + /// + /// The instance prepare for backup. + /// Backup options. + /// An error code if the call fails. + int JetBeginExternalBackupInstance(JET_INSTANCE instance, BeginExternalBackupGrbit grbit); + + /// + /// Closes a file that was opened with JetOpenFileInstance after the + /// data from that file has been extracted using JetReadFileInstance. + /// + /// The instance to use. + /// The handle to close. + /// An error code if the call fails. + int JetCloseFileInstance(JET_INSTANCE instance, JET_HANDLE handle); + + /// + /// Ends an external backup session. This API is the last API in a series + /// of APIs that must be called to execute a successful online + /// (non-VSS based) backup. + /// + /// The instance to end the backup for. + /// An error code if the call fails. + int JetEndExternalBackupInstance(JET_INSTANCE instance); + + /// + /// Ends an external backup session. This API is the last API in a series + /// of APIs that must be called to execute a successful online + /// (non-VSS based) backup. + /// + /// The instance to end the backup for. + /// Options that specify how the backup ended. + /// An error code if the call fails. + int JetEndExternalBackupInstance2(JET_INSTANCE instance, EndExternalBackupGrbit grbit); + + /// + /// Used during a backup initiated by + /// to query an instance for the names of database files that should become part of + /// the backup file set. Only databases that are currently attached to the instance + /// using will be considered. These files may + /// subsequently be opened using and read + /// using . + /// + /// + /// It is important to note that this API does not return an error or warning if + /// the output buffer is too small to accept the full list of files that should be + /// part of the backup file set. + /// + /// The instance to get the information for. + /// + /// Returns a list of null terminated strings describing the set of database files + /// that should be a part of the backup file set. The list of strings returned in + /// this buffer is in the same format as a multi-string used by the registry. Each + /// null-terminated string is returned in sequence followed by a final null terminator. + /// + /// + /// Maximum number of characters to retrieve. + /// + /// + /// Actual size of the file list. If this is greater than maxChars + /// then the list has been truncated. + /// + /// An error code if the call fails. + int JetGetAttachInfoInstance(JET_INSTANCE instance, out string files, int maxChars, out int actualChars); + + /// + /// Used during a backup initiated by + /// to query an instance for the names of database patch files and logfiles that + /// should become part of the backup file set. These files may subsequently be + /// opened using and read using . + /// + /// + /// It is important to note that this API does not return an error or warning if + /// the output buffer is too small to accept the full list of files that should be + /// part of the backup file set. + /// + /// The instance to get the information for. + /// + /// Returns a list of null terminated strings describing the set of database patch files + /// and log files that should be a part of the backup file set. The list of strings returned in + /// this buffer is in the same format as a multi-string used by the registry. Each + /// null-terminated string is returned in sequence followed by a final null terminator. + /// + /// + /// Maximum number of characters to retrieve. + /// + /// + /// Actual size of the file list. If this is greater than maxChars + /// then the list has been truncated. + /// + /// An error code if the call fails. + int JetGetLogInfoInstance(JET_INSTANCE instance, out string files, int maxChars, out int actualChars); + + /// + /// Used during a backup initiated by + /// to query an instance for the names of the transaction log files that can be safely + /// deleted after the backup has successfully completed. + /// + /// + /// It is important to note that this API does not return an error or warning if + /// the output buffer is too small to accept the full list of files that should be + /// part of the backup file set. + /// + /// The instance to get the information for. + /// + /// Returns a list of null terminated strings describing the set of database log files + /// that can be safely deleted after the backup completes. The list of strings returned in + /// this buffer is in the same format as a multi-string used by the registry. Each + /// null-terminated string is returned in sequence followed by a final null terminator. + /// + /// + /// Maximum number of characters to retrieve. + /// + /// + /// Actual size of the file list. If this is greater than maxChars + /// then the list has been truncated. + /// + /// An error code if the call fails. + int JetGetTruncateLogInfoInstance(JET_INSTANCE instance, out string files, int maxChars, out int actualChars); + + /// + /// Opens an attached database, database patch file, or transaction log + /// file of an active instance for the purpose of performing a streaming + /// fuzzy backup. The data from these files can subsequently be read + /// through the returned handle using JetReadFileInstance. The returned + /// handle must be closed using JetCloseFileInstance. An external backup + /// of the instance must have been previously initiated using + /// JetBeginExternalBackupInstance. + /// + /// The instance to use. + /// The file to open. + /// Returns a handle to the file. + /// Returns the least significant 32 bits of the file size. + /// Returns the most significant 32 bits of the file size. + /// An error code if the call fails. + int JetOpenFileInstance(JET_INSTANCE instance, string file, out JET_HANDLE handle, out long fileSizeLow, out long fileSizeHigh); + + /// + /// Retrieves the contents of a file opened with . + /// + /// The instance to use. + /// The file to read from. + /// The buffer to read into. + /// The size of the buffer. + /// Returns the amount of data read into the buffer. + /// An error code if the call fails. + int JetReadFileInstance(JET_INSTANCE instance, JET_HANDLE file, byte[] buffer, int bufferSize, out int bytesRead); + + /// + /// Used during a backup initiated by JetBeginExternalBackup to delete + /// any transaction log files that will no longer be needed once the + /// current backup completes successfully. + /// + /// The instance to truncate. + /// An error code if the call fails. + int JetTruncateLogInstance(JET_INSTANCE instance); +#endif // !MANAGEDESENT_ON_WSA + #endregion + + #region Sessions + + /// + /// Initialize a new ESENT session. + /// + /// The initialized instance to create the session in. + /// Returns the created session. + /// The parameter is not used. + /// The parameter is not used. + /// An error if the call fails. + int JetBeginSession(JET_INSTANCE instance, out JET_SESID sesid, string username, string password); + + /// + /// Associates a session with the current thread using the given context + /// handle. This association overrides the default engine requirement + /// that a transaction for a given session must occur entirely on the + /// same thread. + /// + /// The session to set the context on. + /// The context to set. + /// An error if the call fails. + int JetSetSessionContext(JET_SESID sesid, IntPtr context); + + /// + /// Disassociates a session from the current thread. This should be + /// used in conjunction with JetSetSessionContext. + /// + /// The session to use. + /// An error if the call fails. + int JetResetSessionContext(JET_SESID sesid); + + /// + /// Ends a session. + /// + /// The session to end. + /// This parameter is not used. + /// An error if the call fails. + int JetEndSession(JET_SESID sesid, EndSessionGrbit grbit); + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + /// + /// Initialize a new ESE session in the same instance as the given sesid. + /// + /// The session to duplicate. + /// Returns the new session. + /// An error if the call fails. + int JetDupSession(JET_SESID sesid, out JET_SESID newSesid); +#endif // !MANAGEDESENT_ON_WSA + + /// + /// 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. + /// + /// An error code if the operation fails. + int JetGetThreadStats(out JET_THREADSTATS threadstats); + + #endregion + + #region Tables + + /// + /// Opens a cursor on a previously created table. + /// + /// The database session to use. + /// The database to open the table in. + /// The name of the table to open. + /// The parameter is not used. + /// The parameter is not used. + /// Table open options. + /// Returns the opened table. + /// An error if the call fails. + int JetOpenTable(JET_SESID sesid, JET_DBID dbid, string tablename, byte[] parameters, int parametersLength, OpenTableGrbit grbit, out JET_TABLEID tableid); + + /// + /// Close an open table. + /// + /// The session which opened the table. + /// The table to close. + /// An error if the call fails. + int JetCloseTable(JET_SESID sesid, JET_TABLEID tableid); + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + /// + /// Duplicates an open cursor and returns a handle to the duplicated cursor. + /// If the cursor that was duplicated was a read-only cursor then the + /// duplicated cursor is also a read-only cursor. + /// Any state related to constructing a search key or updating a record is + /// not copied into the duplicated cursor. In addition, the location of the + /// original cursor is not duplicated into the duplicated cursor. The + /// duplicated cursor is always opened on the clustered index and its + /// location is always on the first row of the table. + /// + /// The session to use. + /// The cursor to duplicate. + /// The duplicated cursor. + /// Reserved for future use. + /// An error if the call fails. + int JetDupCursor(JET_SESID sesid, JET_TABLEID tableid, out JET_TABLEID newTableid, DupCursorGrbit grbit); + + /// + /// Walks each index of a table to exactly compute the number of entries + /// in an index, and the number of distinct keys in an index. This + /// information, together with the number of database pages allocated + /// for an index and the current time of the computation is stored in + /// index metadata in the database. This data can be subsequently retrieved + /// with information operations. + /// + /// The session to use. + /// The table that the statistics will be computed on. + /// An error if the call fails. + int JetComputeStats(JET_SESID sesid, JET_TABLEID tableid); + + /// + /// Enables the application to associate a context handle known as + /// Local Storage with a cursor or the table associated with that + /// cursor. This context handle can be used by the application to + /// store auxiliary data that is associated with a cursor or table. + /// The application is later notified using a runtime callback when + /// the context handle must be released. This makes it possible to + /// associate dynamically allocated state with a cursor or table. + /// + /// The session to use. + /// The cursor to use. + /// The context handle to be associated with the session or cursor. + /// Set options. + /// An error if the call fails. + int JetSetLS(JET_SESID sesid, JET_TABLEID tableid, JET_LS ls, LsGrbit grbit); + + /// + /// Enables the application to retrieve the context handle known + /// as Local Storage that is associated with a cursor or the table + /// associated with that cursor. This context handle must have been + /// previously set using . JetGetLS can also + /// be used to simultaneously fetch the current context handle for + /// a cursor or table and reset that context handle. + /// + /// The session to use. + /// The cursor to use. + /// Returns the retrieved context handle. + /// Retrieve options. + /// An error if the call fails. + int JetGetLS(JET_SESID sesid, JET_TABLEID tableid, out JET_LS ls, LsGrbit grbit); + + /// + /// Determine whether an update of the current record of a cursor + /// will result in a write conflict, based on the current update + /// status of the record. It is possible that a write conflict will + /// ultimately be returned even if JetGetCursorInfo returns successfully. + /// because another session may update the record before the current + /// session is able to update the same record. + /// + /// The session to use. + /// The cursor to check. + /// An error if the call fails. + int JetGetCursorInfo(JET_SESID sesid, JET_TABLEID tableid); +#endif // !MANAGEDESENT_ON_WSA + + #endregion + + #region Transactions + + /// + /// Causes a session to enter a transaction or create a new save point in an existing + /// transaction. + /// + /// The session to begin the transaction for. + /// An error if the call fails. + int JetBeginTransaction(JET_SESID sesid); + + /// + /// Causes a session to enter a transaction or create a new save point in an existing + /// transaction. + /// + /// The session to begin the transaction for. + /// Transaction options. + /// An error if the call fails. + int JetBeginTransaction2(JET_SESID sesid, BeginTransactionGrbit grbit); + + /// + /// Commits the changes made to the state of the database during the current save point + /// and migrates them to the previous save point. If the outermost save point is committed + /// then the changes made during that save point will be committed to the state of the + /// database and the session will exit the transaction. + /// + /// The session to commit the transaction for. + /// Commit options. + /// An error if the call fails. + int JetCommitTransaction(JET_SESID sesid, CommitTransactionGrbit grbit); + + /// + /// Undoes the changes made to the state of the database + /// and returns to the last save point. JetRollback will also close any cursors + /// opened during the save point. If the outermost save point is undone, the + /// session will exit the transaction. + /// + /// The session to rollback the transaction for. + /// Rollback options. + /// An error if the call fails. + int JetRollback(JET_SESID sesid, RollbackTransactionGrbit grbit); + + #endregion + + #region DDL + + /// + /// Create an empty table. The newly created table is opened exclusively. + /// + /// The session to use. + /// The database to create the table in. + /// The name of the table to create. + /// Initial number of pages in the table. + /// + /// The default density of the table. This is used when doing sequential inserts. + /// + /// Returns the tableid of the new table. + /// An error if the call fails. + int JetCreateTable(JET_SESID sesid, JET_DBID dbid, string table, int pages, int density, out JET_TABLEID tableid); + + /// + /// Add a new column to an existing table. + /// + /// The session to use. + /// The table to add the column to. + /// The name of the column. + /// The definition of the column. + /// The default value of the column. + /// The size of the default value. + /// Returns the columnid of the new column. + /// An error if the call fails. + int JetAddColumn(JET_SESID sesid, JET_TABLEID tableid, string column, JET_COLUMNDEF columndef, byte[] defaultValue, int defaultValueSize, out JET_COLUMNID columnid); + + /// + /// Deletes a column from a database table. + /// + /// The session to use. + /// A cursor on the table to delete the column from. + /// The name of the column to be deleted. + /// An error if the call fails. + int JetDeleteColumn(JET_SESID sesid, JET_TABLEID tableid, string column); + + /// + /// Deletes a column from a database table. + /// + /// The session to use. + /// A cursor on the table to delete the column from. + /// The name of the column to be deleted. + /// Column deletion options. + /// An error if the call fails. + int JetDeleteColumn2(JET_SESID sesid, JET_TABLEID tableid, string column, DeleteColumnGrbit grbit); + + /// + /// Deletes an index from a database table. + /// + /// The session to use. + /// A cursor on the table to delete the index from. + /// The name of the index to be deleted. + /// An error if the call fails. + int JetDeleteIndex(JET_SESID sesid, JET_TABLEID tableid, string index); + + /// + /// Deletes a table from a database. + /// + /// The session to use. + /// The database to delete the table from. + /// The name of the table to delete. + /// An error if the call fails. + int JetDeleteTable(JET_SESID sesid, JET_DBID dbid, string table); + + /// + /// Creates an index over data in an ESE database. An index can be used to locate + /// specific data quickly. + /// + /// The session to use. + /// The table to create the index on. + /// + /// Pointer to a null-terminated string that specifies the name of the index to create. + /// + /// Index creation options. + /// + /// Pointer to a double null-terminated string of null-delimited tokens. + /// + /// + /// The length, in characters, of szKey including the two terminating nulls. + /// + /// Initial B+ tree density. + /// An error if the call fails. + int JetCreateIndex( + JET_SESID sesid, + JET_TABLEID tableid, + string indexName, + CreateIndexGrbit grbit, + string keyDescription, + int keyDescriptionLength, + int density); + + /// + /// Creates indexes over data in an ESE database. + /// + /// The session to use. + /// The table to create the index on. + /// Array of objects describing the indexes to be created. + /// Number of index description objects. + /// An error code. + int JetCreateIndex2( + JET_SESID sesid, + JET_TABLEID tableid, + JET_INDEXCREATE[] indexcreates, + int numIndexCreates); + + /// + /// 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. + /// + /// The session to use. + /// + /// Column definitions for the columns created in the temporary table. + /// + /// Number of column definitions. + /// Table creation options. + /// + /// Returns the tableid of the temporary table. Closing this tableid + /// frees the resources associated with the temporary table. + /// + /// + /// The output buffer that receives the array of column IDs generated + /// during the creation of the temporary table. The column IDs in this + /// array will exactly correspond to the input array of column definitions. + /// As a result, the size of this buffer must correspond to the size of the input array. + /// + /// An error code. + int JetOpenTempTable( + JET_SESID sesid, + JET_COLUMNDEF[] columns, + int numColumns, + TempTableGrbit grbit, + out JET_TABLEID tableid, + JET_COLUMNID[] columnids); + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + /// + /// 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. + /// + /// The session to use. + /// + /// Column definitions for the columns created in the temporary table. + /// + /// Number of column definitions. + /// + /// The locale ID to use to compare any Unicode key column data in the temporary table. + /// Any locale may be used as long as the appropriate language pack has been installed + /// on the machine. + /// + /// Table creation options. + /// + /// Returns the tableid of the temporary table. Closing this tableid + /// frees the resources associated with the temporary table. + /// + /// + /// The output buffer that receives the array of column IDs generated + /// during the creation of the temporary table. The column IDs in this + /// array will exactly correspond to the input array of column definitions. + /// As a result, the size of this buffer must correspond to the size of the input array. + /// + /// An error code. + int JetOpenTempTable2( + JET_SESID sesid, + JET_COLUMNDEF[] columns, + int numColumns, + int lcid, + TempTableGrbit grbit, + out JET_TABLEID tableid, + JET_COLUMNID[] columnids); +#endif // !MANAGEDESENT_ON_WSA + + /// + /// 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. + /// + /// The session to use. + /// + /// Column definitions for the columns created in the temporary table. + /// + /// Number of column definitions. + /// + /// The Locale ID and normalization flags that will be used to compare + /// any Unicode key column data in the temporary table. When this + /// is not present then the default options are used. + /// + /// Table creation options. + /// + /// Returns the tableid of the temporary table. Closing this tableid + /// frees the resources associated with the temporary table. + /// + /// + /// The output buffer that receives the array of column IDs generated + /// during the creation of the temporary table. The column IDs in this + /// array will exactly correspond to the input array of column definitions. + /// As a result, the size of this buffer must correspond to the size of the input array. + /// + /// An error code. + int JetOpenTempTable3( + JET_SESID sesid, + JET_COLUMNDEF[] columns, + int numColumns, + JET_UNICODEINDEX unicodeindex, + TempTableGrbit grbit, + out JET_TABLEID tableid, + JET_COLUMNID[] columnids); + + /// + /// 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. + /// + /// + /// Introduced in Windows Vista. + /// + /// 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. + /// + /// An error code. + int JetOpenTemporaryTable(JET_SESID sesid, JET_OPENTEMPORARYTABLE temporarytable); + + /// + /// Creates a table, adds columns, and indices on that table. + /// + /// The session to use. + /// The database to which to add the new table. + /// Object describing the table to create. + /// An error if the call fails. + int JetCreateTableColumnIndex3( + JET_SESID sesid, + JET_DBID dbid, + JET_TABLECREATE tablecreate); + + #region JetGetTableColumnInfo overloads + + /// + /// Retrieves information about a table column. + /// + /// The session to use. + /// The table containing the column. + /// The name of the column. + /// Filled in with information about the column. + /// An error if the call fails. + int JetGetTableColumnInfo( + JET_SESID sesid, + JET_TABLEID tableid, + string columnName, + out JET_COLUMNDEF columndef); + + /// + /// 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. + /// An error if the call fails. + int JetGetTableColumnInfo( + JET_SESID sesid, + JET_TABLEID tableid, + JET_COLUMNID columnid, + out JET_COLUMNDEF columndef); + + /// + /// Retrieves information about a table column. + /// + /// The session to use. + /// The table containing the column. + /// The name of the column. + /// Filled in with information about the column. + /// An error if the call fails. + int JetGetTableColumnInfo( + JET_SESID sesid, + JET_TABLEID tableid, + string columnName, + out JET_COLUMNBASE columnbase); + + /// + /// 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. + /// An error if the call fails. + int JetGetTableColumnInfo( + JET_SESID sesid, + JET_TABLEID tableid, + JET_COLUMNID columnid, + out JET_COLUMNBASE columnbase); + + /// + /// Retrieves information about all columns in the table. + /// + /// The session to use. + /// The table containing the column. + /// The parameter is ignored. + /// Additional options for JetGetTableColumnInfo. + /// Filled in with information about the columns in the table. + /// An error if the call fails. + int JetGetTableColumnInfo( + JET_SESID sesid, + JET_TABLEID tableid, + string ignored, + ColInfoGrbit grbit, + out JET_COLUMNLIST columnlist); + + #endregion + + #region JetGetColumnInfo overloads + + /// + /// Retrieves information about a table column. + /// + /// The session to use. + /// The database that contains the table. + /// The name of the table containing the column. + /// The name of the column. + /// Filled in with information about the column. + /// An error if the call fails. + int JetGetColumnInfo( + JET_SESID sesid, + JET_DBID dbid, + string tablename, + string columnName, + out JET_COLUMNDEF columndef); + + /// + /// Retrieves information about all columns in a table. + /// + /// The session to use. + /// The database that contains the table. + /// The name of the table containing the column. + /// This parameter is ignored. + /// Filled in with information about the columns in the table. + /// An error if the call fails. + int JetGetColumnInfo( + JET_SESID sesid, + JET_DBID dbid, + string tablename, + string ignored, + out JET_COLUMNLIST columnlist); + + /// + /// 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 name of the column. + /// Filled in with information about the columns in the table. + /// An error if the call fails. + int JetGetColumnInfo( + JET_SESID sesid, + JET_DBID dbid, + string tablename, + string columnName, + out JET_COLUMNBASE columnbase); + + /// + /// Retrieves information about a column in a table. + /// + /// The session to use. + /// The database that contains the table. + /// The name of the column. + /// The ID of the column. + /// Filled in with information about the columns in the table. + /// An error if the call fails. + int JetGetColumnInfo( + JET_SESID sesid, + JET_DBID dbid, + string columnName, + JET_COLUMNID columnid, + out JET_COLUMNBASE columnbase); + + #endregion + + #region JetGetObjectInfo overloads + + /// + /// Retrieves information about database objects. + /// + /// The session to use. + /// The database to use. + /// Filled in with information about the objects in the database. + /// An error if the call fails. + int JetGetObjectInfo(JET_SESID sesid, JET_DBID dbid, out JET_OBJECTLIST objectlist); + + /// + /// Retrieves information about database objects. + /// + /// The session to use. + /// The database to use. + /// The type of the object. + /// The object name about which to retrieve information. + /// Filled in with information about the objects in the database. + /// An error if the call fails. + int JetGetObjectInfo( + JET_SESID sesid, + JET_DBID dbid, + JET_objtyp objtyp, + string objectName, + out JET_OBJECTINFO objectinfo); + + #endregion + + /// + /// JetGetCurrentIndex function determines the name of the current + /// index of a given cursor. This name is also used to later re-select + /// that index as the current index using JetSetCurrentIndex. It can + /// also be used to discover the properties of that index using + /// JetGetTableIndexInfo. + /// + /// The session to use. + /// The cursor to get the index name for. + /// Returns the name of the index. + /// + /// The maximum length of the index name. Index names are no more than + /// Api.MaxNameLength characters. + /// + /// An error if the call fails. + int JetGetCurrentIndex(JET_SESID sesid, JET_TABLEID tableid, out string indexName, int maxNameLength); + + #region JetGetTableInfo overloads + + /// + /// Retrieves various pieces of information about a table in a database. + /// + /// + /// This overload is used with . + /// + /// The session to use. + /// The table to retrieve information about. + /// Retrieved information. + /// The type of information to retrieve. + /// An error if the call fails. + int JetGetTableInfo(JET_SESID sesid, JET_TABLEID tableid, out JET_OBJECTINFO result, JET_TblInfo infoLevel); + + /// + /// Retrieves various pieces of information about a table in a database. + /// + /// + /// This overload is used with and + /// . + /// + /// The session to use. + /// The table to retrieve information about. + /// Retrieved information. + /// The type of information to retrieve. + /// An error if the call fails. + int JetGetTableInfo(JET_SESID sesid, JET_TABLEID tableid, out string result, JET_TblInfo infoLevel); + + /// + /// Retrieves various pieces of information about a table in a database. + /// + /// + /// This overload is used with . + /// + /// The session to use. + /// The table to retrieve information about. + /// Retrieved information. + /// The type of information to retrieve. + /// An error if the call fails. + int JetGetTableInfo(JET_SESID sesid, JET_TABLEID tableid, out JET_DBID result, JET_TblInfo infoLevel); + + /// + /// Retrieves various pieces of information about a table in a database. + /// + /// + /// This overload is used with and + /// . + /// + /// The session to use. + /// The table to retrieve information about. + /// Retrieved information. + /// The type of information to retrieve. + /// An error if the call fails. + int JetGetTableInfo(JET_SESID sesid, JET_TABLEID tableid, int[] result, JET_TblInfo infoLevel); + + /// + /// Retrieves various pieces of information about a table in a database. + /// + /// + /// This overload is used with and + /// . + /// + /// The session to use. + /// The table to retrieve information about. + /// Retrieved information. + /// The type of information to retrieve. + /// An error if the call fails. + int JetGetTableInfo(JET_SESID sesid, JET_TABLEID tableid, out int result, JET_TblInfo infoLevel); + + #endregion + + #region JetGetIndexInfo overloads + + /// + /// Retrieves information about indexes on a table. + /// + /// The session to use. + /// The database to use. + /// The name of the table to retrieve index information about. + /// The name of the index to retrieve information about. + /// Filled in with information about indexes on the table. + /// The type of information to retrieve. + /// An error if the call fails. + int JetGetIndexInfo( + JET_SESID sesid, + JET_DBID dbid, + string tablename, + string indexname, + out ushort result, + JET_IdxInfo infoLevel); + + /// + /// Retrieves information about indexes on a table. + /// + /// The session to use. + /// The database to use. + /// The name of the table to retrieve index information about. + /// The name of the index to retrieve information about. + /// Filled in with information about indexes on the table. + /// The type of information to retrieve. + /// An error if the call fails. + int JetGetIndexInfo( + JET_SESID sesid, + JET_DBID dbid, + string tablename, + string indexname, + out int result, + JET_IdxInfo infoLevel); + + /// + /// Retrieves information about indexes on a table. + /// + /// The session to use. + /// The database to use. + /// The name of the table to retrieve index information about. + /// The name of the index to retrieve information about. + /// Filled in with information about indexes on the table. + /// The type of information to retrieve. + /// An error if the call fails. + int JetGetIndexInfo( + JET_SESID sesid, + JET_DBID dbid, + string tablename, + string indexname, + out JET_INDEXID result, + JET_IdxInfo infoLevel); + + /// + /// Retrieves information about indexes on a table. + /// + /// The session to use. + /// The database to use. + /// The name of the table to retrieve index information about. + /// The name of the index to retrieve information about. + /// Filled in with information about indexes on the table. + /// The type of information to retrieve. + /// An error if the call fails. + int JetGetIndexInfo( + JET_SESID sesid, + JET_DBID dbid, + string tablename, + string indexname, + out JET_INDEXLIST result, + JET_IdxInfo infoLevel); + + /// + /// Retrieves information about indexes on a table. + /// + /// The session to use. + /// The database to use. + /// The name of the table to retrieve index information about. + /// The name of the index to retrieve information about. + /// Filled in with information about indexes on the table. + /// The type of information to retrieve. + /// An error if the call fails. + int JetGetIndexInfo( + JET_SESID sesid, + JET_DBID dbid, + string tablename, + string indexname, + out string result, + JET_IdxInfo infoLevel); + + /// + /// Retrieves information about indexes on a table. + /// + /// The session to use. + /// The database to use. + /// The name of the table to retrieve index information about. + /// The name of the index to retrieve information about. + /// Filled in with information about indexes on the table. + /// The type of information to retrieve. + /// An error if the call fails. + int JetGetIndexInfo( + JET_SESID sesid, + JET_DBID dbid, + string tablename, + string indexname, + out JET_INDEXCREATE result, + JET_IdxInfo infoLevel); + #endregion + + #region JetGetTableIndexInfo overloads + + /// + /// Retrieves information about indexes on a table. + /// + /// The session to use. + /// The table to retrieve index information about. + /// The name of the index. + /// Filled in with information about indexes on the table. + /// The type of information to retrieve. + /// An error if the call fails. + int JetGetTableIndexInfo( + JET_SESID sesid, + JET_TABLEID tableid, + string indexname, + out ushort result, + JET_IdxInfo infoLevel); + + /// + /// Retrieves information about indexes on a table. + /// + /// The session to use. + /// The table to retrieve index information about. + /// The name of the index. + /// Filled in with information about indexes on the table. + /// The type of information to retrieve. + /// An error if the call fails. + int JetGetTableIndexInfo( + JET_SESID sesid, + JET_TABLEID tableid, + string indexname, + out int result, + JET_IdxInfo infoLevel); + + /// + /// Retrieves information about indexes on a table. + /// + /// The session to use. + /// The table to retrieve index information about. + /// The name of the index. + /// Filled in with information about indexes on the table. + /// The type of information to retrieve. + /// An error if the call fails. + int JetGetTableIndexInfo( + JET_SESID sesid, + JET_TABLEID tableid, + string indexname, + out JET_INDEXID result, + JET_IdxInfo infoLevel); + + /// + /// Retrieves information about indexes on a table. + /// + /// The session to use. + /// The table to retrieve index information about. + /// The name of the index. + /// Filled in with information about indexes on the table. + /// The type of information to retrieve. + /// An error if the call fails. + int JetGetTableIndexInfo( + JET_SESID sesid, + JET_TABLEID tableid, + string indexname, + out JET_INDEXLIST result, + JET_IdxInfo infoLevel); + + /// + /// Retrieves information about indexes on a table. + /// + /// The session to use. + /// The table to retrieve index information about. + /// The name of the index. + /// Filled in with information about indexes on the table. + /// The type of information to retrieve. + /// An error if the call fails. + int JetGetTableIndexInfo( + JET_SESID sesid, + JET_TABLEID tableid, + string indexname, + out string result, + JET_IdxInfo infoLevel); + + /// + /// Retrieves information about indexes on a table. + /// + /// The session to use. + /// The table to retrieve index information about. + /// The name of the index to retrieve information about. + /// Filled in with information about indexes on the table. + /// The type of information to retrieve. + /// An error if the call fails. + int JetGetTableIndexInfo( + JET_SESID sesid, + JET_TABLEID tableid, + string indexname, + out JET_INDEXCREATE result, + JET_IdxInfo infoLevel); + + #endregion + + /// + /// Changes the name of an existing table. + /// + /// The session to use. + /// The database containing the table. + /// The name of the table. + /// The new name of the table. + /// An error if the call fails. + int JetRenameTable(JET_SESID sesid, JET_DBID dbid, string tableName, string newTableName); + + /// + /// Changes the name of an existing column. + /// + /// The session to use. + /// The table containing the column. + /// The name of the column. + /// The new name of the column. + /// Column rename options. + /// An error if the call fails. + int JetRenameColumn(JET_SESID sesid, JET_TABLEID tableid, string name, string newName, RenameColumnGrbit grbit); + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + /// + /// Changes the default value of an existing column. + /// + /// The session to use. + /// The database containing the column. + /// The name of the table containing the column. + /// The name of the column. + /// The new default value. + /// Size of the new default value. + /// Column default value options. + /// An error if the call fails. + int JetSetColumnDefaultValue( + JET_SESID sesid, JET_DBID dbid, string tableName, string columnName, byte[] data, int dataSize, SetColumnDefaultValueGrbit grbit); +#endif // !MANAGEDESENT_ON_WSA + + #endregion + + #region Navigation + + /// + /// Positions a cursor to an index entry for the record that is associated with + /// the specified bookmark. The bookmark can be used with any index defined over + /// a table. The bookmark for a record can be retrieved using . + /// + /// The session to use. + /// The cursor to position. + /// The bookmark used to position the cursor. + /// The size of the bookmark. + /// An error if the call fails. + int JetGotoBookmark(JET_SESID sesid, JET_TABLEID tableid, byte[] bookmark, int bookmarkSize); + + /// + /// Positions a cursor to an index entry that is associated with the + /// specified secondary index bookmark. The secondary index bookmark + /// must be used with the same index over the same table from which it + /// was originally retrieved. The secondary index bookmark for an index + /// entry can be retrieved using . + /// + /// The session to use. + /// The table cursor to position. + /// The buffer that contains the secondary key. + /// The size of the secondary key. + /// The buffer that contains the primary key. + /// The size of the primary key. + /// Options for positioning the bookmark. + /// An error if the call fails. + int JetGotoSecondaryIndexBookmark( + JET_SESID sesid, + JET_TABLEID tableid, + byte[] secondaryKey, + int secondaryKeySize, + byte[] primaryKey, + int primaryKeySize, + GotoSecondaryIndexBookmarkGrbit grbit); + + /// + /// Navigate through an index. The cursor can be positioned at the start or + /// end of the index and moved backwards and forwards by a specified number + /// of index entries. + /// + /// The session to use for the call. + /// The cursor to position. + /// An offset which indicates how far to move the cursor. + /// Move options. + /// An error if the call fails. + int JetMove(JET_SESID sesid, JET_TABLEID tableid, int numRows, MoveGrbit grbit); + + /// + /// Constructs search keys that may then be used by and . + /// + /// + /// The MakeKey functions provide datatype-specific make key functionality. + /// + /// The session to use. + /// The cursor to create the key on. + /// Column data for the current key column of the current index. + /// Size of the data. + /// Key options. + /// An error if the call fails. + int JetMakeKey(JET_SESID sesid, JET_TABLEID tableid, IntPtr data, int dataSize, MakeKeyGrbit grbit); + + /// + /// Efficiently positions a cursor to an index entry that matches the search + /// criteria specified by the search key in that cursor and the specified + /// inequality. A search key must have been previously constructed using + /// JetMakeKey. + /// + /// The session to use. + /// The cursor to position. + /// Seek options. + /// An error or warning.. + int JetSeek(JET_SESID sesid, JET_TABLEID tableid, SeekGrbit grbit); + + /// + /// Temporarily limits the set of index entries that the cursor can walk using + /// to those starting + /// from the current index entry and ending at the index entry that matches the + /// search criteria specified by the search key in that cursor and the specified + /// bound criteria. A search key must have been previously constructed using + /// JetMakeKey. + /// + /// The session to use. + /// The cursor to set the index range on. + /// Index range options. + /// An error if the call fails. + int JetSetIndexRange(JET_SESID sesid, JET_TABLEID tableid, SetIndexRangeGrbit grbit); + + /// + /// Computes the intersection between multiple sets of index entries from different secondary + /// indices over the same table. This operation is useful for finding the set of records in a + /// table that match two or more criteria that can be expressed using index ranges. + /// + /// The session to use. + /// + /// An the index ranges to intersect. The tableids in the ranges + /// must have index ranges set on them. + /// + /// + /// The number of index ranges. + /// + /// + /// Returns information about the temporary table containing the intersection results. + /// + /// Intersection options. + /// An error if the call fails. + int JetIntersectIndexes( + JET_SESID sesid, + JET_INDEXRANGE[] ranges, + int numRanges, + out JET_RECORDLIST recordlist, + IntersectIndexesGrbit grbit); + + /// + /// Set the current index of a cursor. + /// + /// The session to use. + /// The cursor to set the index on. + /// + /// The name of the index to be selected. If this is null or empty the primary + /// index will be selected. + /// + /// An error if the call fails. + int JetSetCurrentIndex(JET_SESID sesid, JET_TABLEID tableid, string index); + + /// + /// Set the current index of a cursor. + /// + /// The session to use. + /// The cursor to set the index on. + /// + /// The name of the index to be selected. If this is null or empty the primary + /// index will be selected. + /// + /// + /// Set index options. + /// + /// An error if the call fails. + int JetSetCurrentIndex2(JET_SESID sesid, JET_TABLEID tableid, string index, SetCurrentIndexGrbit grbit); + + /// + /// Set the current index of a cursor. + /// + /// The session to use. + /// The cursor to set the index on. + /// + /// The name of the index to be selected. If this is null or empty the primary + /// index will be selected. + /// + /// + /// Set index options. + /// + /// + /// Sequence number of the multi-valued column value which will be used + /// to position the cursor on the new index. This parameter is only used + /// in conjunction with . When + /// this parameter is not present or is set to zero, its value is presumed + /// to be 1. + /// + /// An error if the call fails. + int JetSetCurrentIndex3(JET_SESID sesid, JET_TABLEID tableid, string index, SetCurrentIndexGrbit grbit, int itagSequence); + + /// + /// Set the current index of a cursor. + /// + /// The session to use. + /// The cursor to set the index on. + /// + /// The name of the index to be selected. If this is null or empty the primary + /// index will be selected. + /// + /// + /// The id of the index to select. This id can be obtained using JetGetIndexInfo + /// or JetGetTableIndexInfo with the option. + /// + /// + /// Set index options. + /// + /// + /// Sequence number of the multi-valued column value which will be used + /// to position the cursor on the new index. This parameter is only used + /// in conjunction with . When + /// this parameter is not present or is set to zero, its value is presumed + /// to be 1. + /// + /// An error if the call fails. + int JetSetCurrentIndex4( + JET_SESID sesid, + JET_TABLEID tableid, + string index, + JET_INDEXID indexid, + SetCurrentIndexGrbit grbit, + int itagSequence); + + /// + /// Counts the number of entries in the current index from the current position forward. + /// The current position is included in the count. The count can be greater than the + /// total number of records in the table if the current index is over a multi-valued + /// column and instances of the column have multiple-values. If the table is empty, + /// then 0 will be returned for the count. + /// + /// The session to use. + /// The cursor to count the records in. + /// Returns the number of records. + /// + /// The maximum number of records to count. + /// + /// An error if the call fails. + int JetIndexRecordCount(JET_SESID sesid, JET_TABLEID tableid, out int numRecords, int maxRecordsToCount); + + /// + /// Counts the number of entries in the current index from the current position forward. + /// The current position is included in the count. The count can be greater than the + /// total number of records in the table if the current index is over a multi-valued + /// column and instances of the column have multiple-values. If the table is empty, + /// then 0 will be returned for the count. + /// + /// The session to use. + /// The cursor to count the records in. + /// Returns the number of records. + /// + /// The maximum number of records to count. + /// + /// An error if the call fails. + int JetIndexRecordCount2(JET_SESID sesid, JET_TABLEID tableid, out long numRecords, long maxRecordsToCount); + + /// + /// Notifies the database engine that the application is scanning the entire + /// index that the cursor is positioned on. Consequently, the methods that + /// are used to access the index data will be tuned to make this scenario as + /// fast as possible. + /// + /// The session to use. + /// The cursor that will be accessing the data. + /// Reserved for future use. + /// An error if the call fails. + int JetSetTableSequential(JET_SESID sesid, JET_TABLEID tableid, SetTableSequentialGrbit grbit); + + /// + /// Notifies the database engine that the application is no longer scanning the + /// entire index the cursor is positioned on. This call reverses a notification + /// sent by JetSetTableSequential. + /// + /// The session to use. + /// The cursor that was accessing the data. + /// Reserved for future use. + /// An error if the call fails. + int JetResetTableSequential(JET_SESID sesid, JET_TABLEID tableid, ResetTableSequentialGrbit grbit); + + /// + /// Returns the fractional position of the current record in the current index + /// in the form of a JET_RECPOS structure. + /// + /// The session to use. + /// The cursor positioned on the record. + /// Returns the approximate fractional position of the record. + /// An error if the call fails. + int JetGetRecordPosition(JET_SESID sesid, JET_TABLEID tableid, out JET_RECPOS recpos); + + /// + /// Moves a cursor to a new location that is a fraction of the way through + /// the current index. + /// + /// The session to use. + /// The cursor to position. + /// The approximate position to move to. + /// An error if the call fails. + int JetGotoPosition(JET_SESID sesid, JET_TABLEID tableid, JET_RECPOS recpos); + + /// + /// If the records with the specified keys are not in the buffer cache + /// then start asynchronous reads to bring the records into the database + /// buffer cache. + /// + /// The session to use. + /// The table to issue the prereads against. + /// + /// The keys to preread. The keys must be sorted. + /// + /// The lengths of the keys to preread. + /// + /// The index of the first key in the keys array to read. + /// + /// + /// The maximum number of keys to preread. + /// + /// + /// Returns the number of keys to actually preread. + /// + /// + /// Preread options. Used to specify the direction of the preread. + /// + /// An error or warning. + int JetPrereadKeys( + JET_SESID sesid, + JET_TABLEID tableid, + byte[][] keys, + int[] keyLengths, + int keyIndex, + int keyCount, + out int keysPreread, + PrereadKeysGrbit grbit); + + #endregion + + #region Data Retrieval + + /// + /// Retrieves the bookmark for the record that is associated with the index entry + /// at the current position of a cursor. This bookmark can then be used to + /// reposition that cursor back to the same record using . + /// The bookmark will be no longer than + /// bytes. + /// + /// The session to use. + /// The cursor to retrieve the bookmark from. + /// Buffer to contain the bookmark. + /// Size of the bookmark buffer. + /// Returns the actual size of the bookmark. + /// An error if the call fails. + int JetGetBookmark(JET_SESID sesid, JET_TABLEID tableid, byte[] bookmark, int bookmarkSize, out int actualBookmarkSize); + + /// + /// Retrieves a special bookmark for the secondary index entry at the + /// current position of a cursor. This bookmark can then be used to + /// efficiently reposition that cursor back to the same index entry + /// using JetGotoSecondaryIndexBookmark. This is most useful when + /// repositioning on a secondary index that contains duplicate keys or + /// that contains multiple index entries for the same record. + /// + /// The session to use. + /// The cursor to retrieve the bookmark from. + /// Output buffer for the secondary key. + /// Size of the secondary key buffer. + /// Returns the size of the secondary key. + /// Output buffer for the primary key. + /// Size of the primary key buffer. + /// Returns the size of the primary key. + /// Options for the call. + /// An error if the call fails. + int JetGetSecondaryIndexBookmark( + JET_SESID sesid, + JET_TABLEID tableid, + byte[] secondaryKey, + int secondaryKeySize, + out int actualSecondaryKeySize, + byte[] primaryKey, + int primaryKeySize, + out int actualPrimaryKeySize, + GetSecondaryIndexBookmarkGrbit grbit); + + /// + /// Retrieves the key for the index entry at the current position of a cursor. + /// + /// The session to use. + /// The cursor to retrieve the key from. + /// The buffer to retrieve the key into. + /// The size of the buffer. + /// Returns the actual size of the data. + /// Retrieve key options. + /// An error if the call fails. + int JetRetrieveKey(JET_SESID sesid, JET_TABLEID tableid, byte[] data, int dataSize, out int actualDataSize, RetrieveKeyGrbit grbit); + + /// + /// Retrieves a single column value from the current record. The record is that + /// record associated with the index entry at the current position of the cursor. + /// Alternatively, this function can retrieve a column from a record being created + /// in the cursor copy buffer. This function can also retrieve column data from an + /// index entry that references the current record. In addition to retrieving the + /// actual column value, JetRetrieveColumn can also be used to retrieve the size + /// of a column, before retrieving the column data itself so that application + /// buffers can be sized appropriately. + /// + /// + /// The RetrieveColumnAs functions provide datatype-specific retrieval functions. + /// + /// The session to use. + /// The cursor to retrieve the column from. + /// The columnid to retrieve. + /// The data buffer to be retrieved into. + /// The size of the data buffer. + /// Returns the actual size of the data buffer. + /// Retrieve column options. + /// + /// If pretinfo is give as NULL then the function behaves as though an itagSequence + /// of 1 and an ibLongValue of 0 (zero) were given. This causes column retrieval to + /// retrieve the first value of a multi-valued column, and to retrieve long data at + /// offset 0 (zero). + /// + /// An error or warning. + int JetRetrieveColumn(JET_SESID sesid, JET_TABLEID tableid, JET_COLUMNID columnid, IntPtr data, int dataSize, out int actualDataSize, RetrieveColumnGrbit grbit, JET_RETINFO retinfo); + + /// + /// The JetRetrieveColumns function retrieves multiple column values + /// from the current record in a single operation. An array of + /// structures is used to + /// describe the set of column values to be retrieved, and to describe + /// output buffers for each column value to be retrieved. + /// + /// The session to use. + /// The cursor to retrieve columns from. + /// + /// An array of one or more JET_RETRIEVECOLUMN structures. Each + /// structure includes descriptions of which column value to retrieve + /// and where to store returned data. + /// + /// + /// Number of structures in the array given by retrievecolumns. + /// + /// + /// An error or warning. + /// + unsafe int JetRetrieveColumns( + JET_SESID sesid, JET_TABLEID tableid, NATIVE_RETRIEVECOLUMN* retrievecolumns, int numColumns); + + /// + /// Efficiently retrieves a set of columns and their values from the + /// current record of a cursor or the copy buffer of that cursor. The + /// columns and values retrieved can be restricted by a list of + /// column IDs, itagSequence numbers, and other characteristics. This + /// column retrieval API is unique in that it returns information in + /// dynamically allocated memory that is obtained using a + /// user-provided realloc compatible callback. This new flexibility + /// permits the efficient retrieval of column data with specific + /// characteristics (such as size and multiplicity) that are unknown + /// to the caller. This eliminates the need for the use of the discovery + /// modes of JetRetrieveColumn to determine those + /// characteristics in order to setup a final call to + /// JetRetrieveColumn that will successfully retrieve + /// the desired data. + /// + /// The session to use. + /// The cursor to retrieve data from. + /// The numbers of JET_ENUMCOLUMNIDS. + /// + /// An optional array of column IDs, each with an optional array of itagSequence + /// numbers to enumerate. + /// + /// + /// Returns the number of column values retrieved. + /// + /// + /// Returns the enumerated column values. + /// + /// + /// Callback used to allocate memory. + /// + /// + /// Context for the allocation callback. + /// + /// + /// Sets a cap on the amount of data to return from a long text or long + /// binary column. This parameter can be used to prevent the enumeration + /// of an extremely large column value. + /// + /// Retrieve options. + /// A warning, error or success. + int JetEnumerateColumns( + JET_SESID sesid, + JET_TABLEID tableid, + int numColumnids, + JET_ENUMCOLUMNID[] columnids, + out int numColumnValues, + out JET_ENUMCOLUMN[] columnValues, + JET_PFNREALLOC allocator, + IntPtr allocatorContext, + int maxDataSize, + EnumerateColumnsGrbit grbit); + + /// + /// Efficiently retrieves a set of columns and their values from the + /// current record of a cursor or the copy buffer of that cursor. + /// + /// The session to use. + /// The cursor to retrieve data from. + /// Enumerate options. + /// The discovered columns and their values. + /// A warning or success. + int JetEnumerateColumns( + JET_SESID sesid, + JET_TABLEID tableid, + EnumerateColumnsGrbit grbit, + out IEnumerable enumeratedColumns); + +#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. + /// A warning, error or success. + int JetGetRecordSize(JET_SESID sesid, JET_TABLEID tableid, ref JET_RECSIZE recsize, GetRecordSizeGrbit grbit); +#endif // !MANAGEDESENT_ON_WSA + #endregion + + #region DML + + /// + /// Deletes the current record in a database table. + /// + /// The session that opened the cursor. + /// The cursor on a database table. The current row will be deleted. + /// An error if the call fails. + int JetDelete(JET_SESID sesid, JET_TABLEID tableid); + + /// + /// Prepare a cursor for update. + /// + /// The session which is starting the update. + /// The cursor to start the update for. + /// The type of update to prepare. + /// An error if the call fails. + int JetPrepareUpdate(JET_SESID sesid, JET_TABLEID tableid, JET_prep prep); + + /// + /// The JetUpdate function performs an update operation including inserting a new row into + /// a table or updating an existing row. Deleting a table row is performed by calling + /// . + /// + /// The session which started the update. + /// The cursor to update. An update should be prepared. + /// Returns the bookmark of the updated record. This can be null. + /// The size of the bookmark buffer. + /// Returns the actual size of the bookmark. + /// + /// JetUpdate is the final step in performing an insert or an update. The update is begun by + /// calling and then by calling + /// JetSetColumn one or more times to set the record state. Finally, JetUpdate + /// is called to complete the update operation. Indexes are updated only by JetUpdate or and not during JetSetColumn. + /// + /// An error if the call fails. + int JetUpdate(JET_SESID sesid, JET_TABLEID tableid, byte[] bookmark, int bookmarkSize, out int actualBookmarkSize); + + /// + /// The JetUpdate2 function performs an update operation including inserting a new row into + /// a table or updating an existing row. Deleting a table row is performed by calling + /// . + /// + /// The session which started the update. + /// The cursor to update. An update should be prepared. + /// Returns the bookmark of the updated record. This can be null. + /// The size of the bookmark buffer. + /// Returns the actual size of the bookmark. + /// Update options. + /// + /// JetUpdate is the final step in performing an insert or an update. The update is begun by + /// calling and then by calling + /// JetSetColumn one or more times to set the record state. Finally, JetUpdate + /// is called to complete the update operation. Indexes are updated only by JetUpdate or and not during JetSetColumn. + /// + /// An error if the call fails. + int JetUpdate2(JET_SESID sesid, JET_TABLEID tableid, byte[] bookmark, int bookmarkSize, out int actualBookmarkSize, UpdateGrbit grbit); + + /// + /// The JetSetColumn function modifies a single column value in a modified record to be inserted or to + /// update the current record. It can overwrite an existing value, add a new value to a sequence of + /// values in a multi-valued column, remove a value from a sequence of values in a multi-valued column, + /// or update all or part of a long value (a column of type + /// or ). + /// + /// + /// The SetColumn methods provide datatype-specific overrides which may be more efficient. + /// + /// The session which is performing the update. + /// The cursor to update. An update should be prepared. + /// The columnid to set. + /// The data to set. + /// The size of data to set. + /// SetColumn options. + /// Used to specify itag or long-value offset. + /// An error if the call fails. + int JetSetColumn(JET_SESID sesid, JET_TABLEID tableid, JET_COLUMNID columnid, IntPtr data, int dataSize, SetColumnGrbit grbit, JET_SETINFO setinfo); + + /// + /// Allows an application to set multiple column values in a single + /// operation. An array of structures is + /// used to describe the set of column values to be set, and to describe + /// input buffers for each column value to be set. + /// + /// The session to use. + /// The cursor to set the columns on. + /// + /// An array of structures describing the + /// data to set. + /// + /// + /// Number of entries in the setcolumns parameter. + /// + /// An error code or warning. + unsafe int JetSetColumns(JET_SESID sesid, JET_TABLEID tableid, NATIVE_SETCOLUMN* setcolumns, int numColumns); + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + /// + /// Explicitly reserve the ability to update a row, write lock, or to explicitly prevent a row from + /// being updated by any other session, read lock. Normally, row write locks are acquired implicitly as a + /// result of updating rows. Read locks are usually not required because of record versioning. However, + /// in some cases a transaction may desire to explicitly lock a row to enforce serialization, or to ensure + /// that a subsequent operation will succeed. + /// + /// The session to use. + /// The cursor to use. A lock will be acquired on the current record. + /// Lock options, use this to specify which type of lock to obtain. + /// An error if the call fails. + int JetGetLock(JET_SESID sesid, JET_TABLEID tableid, GetLockGrbit grbit); +#endif // !MANAGEDESENT_ON_WSA + + /// + /// Performs an atomic addition operation on one column. This function allows + /// multiple sessions to update the same record concurrently without conflicts. + /// + /// The session to use. + /// The cursor to update. + /// + /// The column to update. This must be an escrow updatable column. + /// + /// The buffer containing the addend. + /// The size of the addend. + /// + /// An output buffer that will recieve the current value of the column. This buffer + /// can be null. + /// + /// The size of the previousValue buffer. + /// Returns the actual size of the previousValue. + /// Escrow update options. + /// An error code if the operation fails. + int JetEscrowUpdate( + JET_SESID sesid, + JET_TABLEID tableid, + JET_COLUMNID columnid, + byte[] delta, + int deltaSize, + byte[] previousValue, + int previousValueLength, + out int actualPreviousValueLength, + EscrowUpdateGrbit grbit); + + #endregion + + #region Callbacks + + /// + /// Allows the application to configure the database engine to issue + /// notifications to the application for specific events. These + /// notifications are associated with a specific table and remain in + /// effect only until the instance containing the table is shut down + /// using . + /// + /// The session to use. + /// + /// A cursor opened on the table that the callback should be + /// registered on. + /// + /// + /// The callback reasons for which the application wishes to receive notifications. + /// + /// The callback function. + /// A context that will be given to the callback. + /// + /// A handle that can later be used to cancel the registration of the given + /// callback function using . + /// + /// An error if the call fails. + int JetRegisterCallback( + JET_SESID sesid, + JET_TABLEID tableid, + JET_cbtyp cbtyp, + JET_CALLBACK callback, + IntPtr context, + out JET_HANDLE callbackId); + + /// + /// Configures the database engine to stop issuing notifications to the + /// application as previously requested through + /// . + /// + /// The session to use. + /// + /// A cursor opened on the table that the callback should be + /// registered on. + /// + /// + /// The callback reasons for which the application no longer wishes to receive notifications. + /// + /// + /// The handle of the registered callback that was returned by . + /// + /// An error if the call fails. + int JetUnregisterCallback(JET_SESID sesid, JET_TABLEID tableid, JET_cbtyp cbtyp, JET_HANDLE callbackId); + + #endregion + + #region Online Maintenance + + /// + /// Starts and stops database defragmentation tasks that improves data + /// organization within a database. + /// + /// The session to use for the call. + /// The database to be defragmented. + /// + /// Under some options defragmentation is performed for the entire database described by the given + /// database ID, and other options (such as ) require + /// the name of the table to defragment. + /// + /// + /// When starting an online defragmentation task, this parameter sets the maximum number of defragmentation + /// passes. When stopping an online defragmentation task, this parameter is set to the number of passes + /// performed. This is not honored in all modes (such as ). + /// + /// + /// When starting an online defragmentation task, this parameter sets + /// the maximum time for defragmentation. When stopping an online + /// defragmentation task, this output buffer is set to the length of + /// time used for defragmentation. This is not honored in all modes (such as ). + /// + /// Defragmentation options. + /// An error code or warning. + /// . + int JetDefragment( + JET_SESID sesid, + JET_DBID dbid, + string tableName, + ref int passes, + ref int seconds, + DefragGrbit grbit); + + /// + /// Starts and stops database defragmentation tasks that improves data + /// organization within a database. + /// + /// The session to use for the call. + /// The database to be defragmented. + /// + /// Under some options defragmentation is performed for the entire database described by the given + /// database ID, and other options (such as ) require + /// the name of the table to defragment. + /// + /// Defragmentation options. + /// An error code or warning. + /// . + int Defragment( + JET_SESID sesid, + JET_DBID dbid, + string tableName, + DefragGrbit grbit); + + /// + /// Starts and stops database defragmentation tasks that improves data + /// organization within a database. + /// + /// The session to use for the call. + /// The database to be defragmented. + /// + /// Unused parameter. Defragmentation is performed for the entire database described by the given database ID. + /// + /// + /// When starting an online defragmentation task, this parameter sets the maximum number of defragmentation + /// passes. When stopping an online defragmentation task, this parameter is set to the number of passes + /// performed. + /// + /// + /// When starting an online defragmentation task, this parameter sets + /// the maximum time for defragmentation. When stopping an online + /// defragmentation task, this output buffer is set to the length of + /// time used for defragmentation. + /// + /// Callback function that defrag uses to report progress. + /// Defragmentation options. + /// An error code or warning. + int JetDefragment2( + JET_SESID sesid, + JET_DBID dbid, + string tableName, + ref int passes, + ref int seconds, + JET_CALLBACK callback, + DefragGrbit grbit); + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + /// + /// Performs idle cleanup tasks or checks the version store status in ESE. + /// + /// The session to use. + /// A combination of JetIdleGrbit flags. + /// An error code if the operation fails. + int JetIdle(JET_SESID sesid, IdleGrbit grbit); +#endif // !MANAGEDESENT_ON_WSA + + #endregion + + #region Misc + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + /// + /// Crash dump options for Watson. + /// + /// Crash dump options. + /// An error code. + int JetConfigureProcessForCrashDump(CrashDumpGrbit grbit); + + /// + /// Frees memory that was allocated by a database engine call. + /// + /// + /// The buffer allocated by a call to the database engine. + /// is acceptable, and will be ignored. + /// + /// An error code. + int JetFreeBuffer(IntPtr buffer); +#endif // !MANAGEDESENT_ON_WSA + + #endregion + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/INullableJetStruct.cs b/WelsonJS.Toolkit/EsentInterop/INullableJetStruct.cs new file mode 100644 index 0000000..0bf7f50 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/INullableJetStruct.cs @@ -0,0 +1,19 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + /// + /// Interface for Jet structures that are nullable (can have null values). + /// + public interface INullableJetStruct + { + /// + /// Gets a value indicating whether the structure has a null value. + /// + bool HasValue { get; } + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/IndexInfo.cs b/WelsonJS.Toolkit/EsentInterop/IndexInfo.cs new file mode 100644 index 0000000..8b537d4 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/IndexInfo.cs @@ -0,0 +1,189 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Collections.Generic; + using System.Collections.ObjectModel; + using System.Diagnostics; + using System.Globalization; + using System.Text; + + /// + /// Information about one esent index. This is not an interop + /// class, but is used by the meta-data helper methods. + /// + [Serializable] + public class IndexInfo + { + /// + /// The name of the index. + /// + private readonly string name; + + /// + /// The culture info of the index. + /// + private readonly CultureInfo cultureInfo; + + /// + /// Index comparison options. + /// + private readonly CompareOptions compareOptions; + + /// + /// Index segments. + /// + private readonly ReadOnlyCollection indexSegments; + + /// + /// Index options. + /// + private readonly CreateIndexGrbit grbit; + + /// + /// Number of unique keys in the index. + /// + private readonly int keys; + + /// + /// Number of entries in the index. + /// + private readonly int entries; + + /// + /// Number of pages in the index. + /// + private readonly int pages; + + /// + /// Initializes a new instance of the IndexInfo class. + /// + /// Name of the index. + /// CultureInfo for string sorting. + /// String comparison options. + /// Array of index segment descriptions. + /// Index options. + /// Number of unique keys in the index. + /// Number of entries in the index. + /// Number of pages in the index. + internal IndexInfo( + string name, + CultureInfo cultureInfo, + CompareOptions compareOptions, + IndexSegment[] indexSegments, + CreateIndexGrbit grbit, + int keys, + int entries, + int pages) + { + this.name = name; + this.cultureInfo = cultureInfo; + this.compareOptions = compareOptions; + this.indexSegments = new ReadOnlyCollection(indexSegments); + this.grbit = grbit; + this.keys = keys; + this.entries = entries; + this.pages = pages; + } + + /// + /// Gets the name of the index. + /// + public string Name + { + [DebuggerStepThrough] + get { return this.name; } + } + + /// + /// Gets the CultureInfo the index is sorted by. + /// + public CultureInfo CultureInfo + { + [DebuggerStepThrough] + get { return this.cultureInfo; } + } + + /// + /// Gets the CompareOptions for the index. + /// + public CompareOptions CompareOptions + { + [DebuggerStepThrough] + get { return this.compareOptions; } + } + + /// + /// Gets the segments of the index. + /// + public IList IndexSegments + { + [DebuggerStepThrough] + get { return this.indexSegments; } + } + + /// + /// Gets the index options. + /// + public CreateIndexGrbit Grbit + { + [DebuggerStepThrough] + get { return this.grbit; } + } + + /// + /// Gets the number of unique keys in the index. + /// This value is not current and is only is updated by Api.JetComputeStats. + /// + public int Keys + { + [DebuggerStepThrough] + get { return this.keys; } + } + + /// + /// Gets the number of entries in the index. + /// This value is not current and is only is updated by Api.JetComputeStats. + /// + public int Entries + { + [DebuggerStepThrough] + get { return this.entries; } + } + + /// + /// Gets the number of pages in the index. + /// This value is not current and is only is updated by Api.JetComputeStats. + /// + public int Pages + { + [DebuggerStepThrough] + get { return this.pages; } + } + + /// + /// Returns a that represents the current . + /// + /// + /// A that represents the current . + /// + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append(this.Name); + sb.Append(" ("); + foreach (var segment in this.IndexSegments) + { + sb.Append(segment.ToString()); + } + + sb.Append(")"); + return sb.ToString(); + } + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/IndexInfoEnumerator.cs b/WelsonJS.Toolkit/EsentInterop/IndexInfoEnumerator.cs new file mode 100644 index 0000000..b4dae17 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/IndexInfoEnumerator.cs @@ -0,0 +1,153 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System.Diagnostics; + using System.Globalization; + using System.Text; + using Microsoft.Isam.Esent.Interop.Windows8; + + /// + /// Base class for enumerators that return IndexInfo objects. Subclasses differ + /// by how they open the table. + /// + internal abstract class IndexInfoEnumerator : TableEnumerator + { + /// + /// Initializes a new instance of the class. + /// + /// + /// The session to use. + /// + protected IndexInfoEnumerator(JET_SESID sesid) : base(sesid) + { + } + + /// + /// Gets or sets the indexlist used to retrieve data. + /// + protected JET_INDEXLIST Indexlist { get; set; } + + /// + /// Gets the entry the cursor is currently positioned on. + /// + /// The entry the cursor is currently positioned on. + protected override IndexInfo GetCurrent() + { + return this.GetIndexInfoFromIndexlist(this.Sesid, this.Indexlist); + } + + /// + /// Retrieves information about indexes on a table. + /// + /// The session to use. + /// The name of the index. + /// Filled in with information about indexes on the table. + /// The type of information to retrieve. + protected abstract void GetIndexInfo( + JET_SESID sesid, + string indexname, + out string result, + JET_IdxInfo infoLevel); + + /// + /// Create an array of IndexSegment objects from the data in the current JET_INDEXLIST entry. + /// + /// The session to use. + /// The indexlist to take the data from. + /// An array of IndexSegment objects containing the information for the current index. + private static IndexSegment[] GetIndexSegmentsFromIndexlist(JET_SESID sesid, JET_INDEXLIST indexlist) + { + var numSegments = (int)Api.RetrieveColumnAsInt32(sesid, indexlist.tableid, indexlist.columnidcColumn); + Debug.Assert(numSegments > 0, "Index has zero index segments"); + + // If we use the wide API (Vista+), then the temp table will be in UTF-16. + Encoding encodingOfTextColumns = EsentVersion.SupportsVistaFeatures ? Encoding.Unicode : LibraryHelpers.EncodingASCII; + + var segments = new IndexSegment[numSegments]; + for (int i = 0; i < numSegments; ++i) + { + string columnName = Api.RetrieveColumnAsString( + sesid, + indexlist.tableid, + indexlist.columnidcolumnname, + encodingOfTextColumns, + RetrieveColumnGrbit.None); + columnName = StringCache.TryToIntern(columnName); + var coltyp = (JET_coltyp)Api.RetrieveColumnAsInt32(sesid, indexlist.tableid, indexlist.columnidcoltyp); + var grbit = + (IndexKeyGrbit)Api.RetrieveColumnAsInt32(sesid, indexlist.tableid, indexlist.columnidgrbitColumn); + bool isAscending = IndexKeyGrbit.Ascending == grbit; + var cp = (JET_CP)Api.RetrieveColumnAsInt16(sesid, indexlist.tableid, indexlist.columnidCp); + bool isASCII = JET_CP.ASCII == cp; + + segments[i] = new IndexSegment(columnName, coltyp, isAscending, isASCII); + + if (i < numSegments - 1) + { + Api.JetMove(sesid, indexlist.tableid, JET_Move.Next, MoveGrbit.None); + } + } + + return segments; + } + + /// + /// Create an IndexInfo object from the data in the current JET_INDEXLIST entry. + /// + /// The session to use. + /// The indexlist to take the data from. + /// An IndexInfo object containing the information from that record. + private IndexInfo GetIndexInfoFromIndexlist(JET_SESID sesid, JET_INDEXLIST indexlist) + { + // If we use the wide API (Vista+), then the temp table will be in UTF-16. + Encoding encodingOfTextColumns = EsentVersion.SupportsVistaFeatures ? Encoding.Unicode : LibraryHelpers.EncodingASCII; + + string name = Api.RetrieveColumnAsString( + sesid, indexlist.tableid, indexlist.columnidindexname, encodingOfTextColumns, RetrieveColumnGrbit.None); + name = StringCache.TryToIntern(name); + + CultureInfo cultureInfo = null; + + if (EsentVersion.SupportsWindows8Features) + { + string localeName; + this.GetIndexInfo(sesid, name, out localeName, Windows8IdxInfo.LocaleName); + cultureInfo = new CultureInfo(localeName); + } + else + { +#if !MANAGEDESENT_ON_CORECLR + // This probably won't work on platforms that don't support LCIDs. Newer environments have dropped + // LCIDs in favour of locale names. But currently JET_INDEXLIST doesn't expose columnidLocale. + int lcid = (int)Api.RetrieveColumnAsInt16(sesid, indexlist.tableid, indexlist.columnidLangid); + cultureInfo = LibraryHelpers.CreateCultureInfoByLcid(lcid); +#endif // !MANAGEDESENT_ON_CORECLR + } + + uint lcmapFlags = (uint)Api.RetrieveColumnAsUInt32(sesid, indexlist.tableid, indexlist.columnidLCMapFlags); + CompareOptions compareOptions = Conversions.CompareOptionsFromLCMapFlags(lcmapFlags); + uint grbit = (uint)Api.RetrieveColumnAsUInt32(sesid, indexlist.tableid, indexlist.columnidgrbitIndex); + + int keys = (int)Api.RetrieveColumnAsInt32(sesid, indexlist.tableid, indexlist.columnidcKey); + int entries = (int)Api.RetrieveColumnAsInt32(sesid, indexlist.tableid, indexlist.columnidcEntry); + int pages = (int)Api.RetrieveColumnAsInt32(sesid, indexlist.tableid, indexlist.columnidcPage); + + IndexSegment[] segments = GetIndexSegmentsFromIndexlist(sesid, indexlist); + + return new IndexInfo( + name, + cultureInfo, + compareOptions, + segments, + (CreateIndexGrbit)grbit, + keys, + entries, + pages); + } + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/IndexSegment.cs b/WelsonJS.Toolkit/EsentInterop/IndexSegment.cs new file mode 100644 index 0000000..c162db6 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/IndexSegment.cs @@ -0,0 +1,152 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Diagnostics; + using System.Globalization; + + /// + /// Describes one segment of an index. + /// + [Serializable] + public class IndexSegment : IEquatable + { + /// + /// The name of the column. + /// + private readonly string columnName; + + /// + /// The type of the column. + /// + private readonly JET_coltyp coltyp; + + /// + /// True if the column is sorted in ascending order. + /// + private readonly bool isAscending; + + /// + /// True if the column is an ASCII column. + /// + private readonly bool isASCII; + + /// + /// Initializes a new instance of the IndexSegment class. + /// + /// The name of the indexed column. + /// The type of the column. + /// True if the column is ascending. + /// True if the column is over an ASCII column. + internal IndexSegment( + string name, + JET_coltyp coltyp, + bool isAscending, + bool isASCII) + { + this.columnName = name; + this.coltyp = coltyp; + this.isAscending = isAscending; + this.isASCII = isASCII; + } + + /// + /// Gets name of the column being indexed. + /// + public string ColumnName + { + [DebuggerStepThrough] + get { return this.columnName; } + } + + /// + /// Gets the type of the column being indexed. + /// + public JET_coltyp Coltyp + { + [DebuggerStepThrough] + get { return this.coltyp; } + } + + /// + /// Gets a value indicating whether the index segment is ascending. + /// + public bool IsAscending + { + [DebuggerStepThrough] + get { return this.isAscending; } + } + + /// + /// Gets a value indicating whether the index segment is over an ASCII text + /// column. This value is only meaningful for text column segments. + /// + public bool IsASCII + { + [DebuggerStepThrough] + get { return this.isASCII; } + } + + /// + /// Returns a value indicating whether this instance is equal + /// to another instance. + /// + /// An object to compare with this instance. + /// True if the two instances are equal. + public override bool Equals(object obj) + { + if (obj == null || this.GetType() != obj.GetType()) + { + return false; + } + + return this.Equals((IndexSegment)obj); + } + + /// + /// Generate a string representation of the instance. + /// + /// The structure as a string. + public override string ToString() + { + return string.Format( + CultureInfo.InvariantCulture, "{0}{1}({2})", this.isAscending ? "+" : "-", this.columnName, this.coltyp); + } + + /// + /// Returns the hash code for this instance. + /// + /// The hash code for this instance. + public override int GetHashCode() + { + return this.columnName.GetHashCode() + ^ (int)this.coltyp * 31 + ^ (this.isAscending ? 0x10000 : 0x20000) + ^ (this.isASCII ? 0x40000 : 0x80000); + } + + /// + /// Returns a value indicating whether this instance is equal + /// to another instance. + /// + /// An instance to compare with this instance. + /// True if the two instances are equal. + public bool Equals(IndexSegment other) + { + if (null == other) + { + return false; + } + + return this.columnName.Equals(other.columnName, StringComparison.OrdinalIgnoreCase) + && this.coltyp == other.coltyp + && this.isAscending == other.isAscending + && this.isASCII == other.isASCII; + } + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/Instance.cs b/WelsonJS.Toolkit/EsentInterop/Instance.cs new file mode 100644 index 0000000..ec9367e --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/Instance.cs @@ -0,0 +1,337 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Diagnostics.CodeAnalysis; + using System.Globalization; + using System.Runtime.CompilerServices; + using System.Security.Permissions; + + using Microsoft.Isam.Esent.Interop.Vista; + using Microsoft.Win32.SafeHandles; + + /// + /// A class that encapsulates a in a disposable object. The + /// instance must be closed last and closing the instance releases all other + /// resources for the instance. + /// + public class Instance : SafeHandleZeroOrMinusOneIsInvalid + { + /// + /// Parameters for the instance. + /// + private readonly InstanceParameters parameters; + + /// + /// The name of the instance. + /// + private readonly string name; + + /// + /// The display name of the instance. + /// + private readonly string displayName; + + /// + /// The TermGrbit to be used at JetTerm time. + /// + private TermGrbit termGrbit; + + /// + /// Initializes a new instance of the Instance class. The underlying + /// JET_INSTANCE is allocated, but not initialized. + /// + /// + /// The name of the instance. This string must be unique within a + /// given process hosting the database engine. + /// + [SecurityPermissionAttribute(SecurityAction.LinkDemand)] + public Instance(string name) : this(name, name, TermGrbit.None) + { + } + + /// + /// Initializes a new instance of the Instance class. The underlying + /// JET_INSTANCE is allocated, but not initialized. + /// + /// + /// The name of the instance. This string must be unique within a + /// given process hosting the database engine. + /// + /// + /// A display name for the instance. This will be used in eventlog + /// entries. + /// + [SecurityPermissionAttribute(SecurityAction.LinkDemand)] + public Instance(string name, string displayName) : this(name, displayName, TermGrbit.None) + { + } + + /// + /// Initializes a new instance of the Instance class. The underlying + /// JET_INSTANCE is allocated, but not initialized. + /// + /// + /// The name of the instance. This string must be unique within a + /// given process hosting the database engine. + /// + /// + /// A display name for the instance. This will be used in eventlog + /// entries. + /// + /// + /// The TermGrbit to be used at JetTerm time. + /// + [SecurityPermissionAttribute(SecurityAction.LinkDemand)] + public Instance(string name, string displayName, TermGrbit termGrbit) : base(true) + { + this.name = name; + this.displayName = displayName; + this.termGrbit = termGrbit; + + JET_INSTANCE instance; + RuntimeHelpers.PrepareConstrainedRegions(); + try + { + this.SetHandle(JET_INSTANCE.Nil.Value); + } + finally + { + // This is the code that we want in a constrained execution region. + // We need to avoid the situation where JetCreateInstance2 is called + // but the handle isn't set, so the instance is never terminated. + // This would happen, for example, if there was a ThreadAbortException + // between the call to JetCreateInstance2 and the call to SetHandle. + // + // If an Esent exception is generated we do not want to call SetHandle + // because the instance isn't valid. On the other hand if a different + // exception (out of memory or thread abort) is generated we still need + // to set the handle to avoid losing track of the instance. The call to + // JetCreateInstance2 is in the CER to make sure that the only exceptions + // which can be generated are from ESENT failures. + Api.JetCreateInstance2(out instance, this.name, this.displayName, CreateInstanceGrbit.None); + this.SetHandle(instance.Value); + } + + this.parameters = new InstanceParameters(instance); + } + + /// + /// Gets the JET_INSTANCE that this instance contains. + /// + public JET_INSTANCE JetInstance + { + [SecurityPermissionAttribute(SecurityAction.LinkDemand)] + get + { + this.CheckObjectIsNotDisposed(); + return this.CreateInstanceFromHandle(); + } + } + + /// + /// Gets the InstanceParameters for this instance. + /// + public InstanceParameters Parameters + { + [SecurityPermissionAttribute(SecurityAction.LinkDemand)] + get + { + this.CheckObjectIsNotDisposed(); + return this.parameters; + } + } + + /// + /// Gets or sets the TermGrbit for this instance. + /// + public TermGrbit TermGrbit + { + [SecurityPermissionAttribute(SecurityAction.LinkDemand)] + get + { + this.CheckObjectIsNotDisposed(); + return this.termGrbit; + } + + [SecurityPermissionAttribute(SecurityAction.LinkDemand)] + set + { + this.CheckObjectIsNotDisposed(); + this.termGrbit = value; + } + } + + /// + /// Provide implicit conversion of an Instance object to a JET_INSTANCE + /// structure. This is done so that an Instance can be used anywhere a + /// JET_INSTANCE is required. + /// + /// The instance to convert. + /// The JET_INSTANCE wrapped by the instance. + [SecurityPermissionAttribute(SecurityAction.LinkDemand)] + public static implicit operator JET_INSTANCE(Instance instance) + { + return instance.JetInstance; + } + + /// + /// Returns a that represents the current . + /// + /// + /// A that represents the current . + /// + public override string ToString() + { + return string.Format(CultureInfo.InvariantCulture, "{0} ({1})", this.displayName, this.name); + } + + /// + /// Initialize the JET_INSTANCE. + /// + [SecurityPermissionAttribute(SecurityAction.LinkDemand)] + public void Init() + { + this.Init(InitGrbit.None); + } + + /// + /// Initialize the JET_INSTANCE. + /// + /// + /// Initialization options. + /// + [SecurityPermissionAttribute(SecurityAction.LinkDemand)] + public void Init(InitGrbit grbit) + { + this.CheckObjectIsNotDisposed(); + JET_INSTANCE instance = this.JetInstance; + + // Use a constrained region so that the handle is + // always set after JetInit2 is called. + RuntimeHelpers.PrepareConstrainedRegions(); + try + { + // Remember that a failure in JetInit can zero the handle + // and that JetTerm should not be called in that case. + Api.JetInit2(ref instance, grbit); + } + finally + { + this.SetHandle(instance.Value); + } + } + + /// + /// Initialize the JET_INSTANCE. This API requires at least the + /// Vista version of ESENT. + /// + /// + /// Additional recovery parameters for remapping databases during + /// recovery, position where to stop recovery at, or recovery status. + /// + /// + /// Initialization options. + /// + [SecurityPermissionAttribute(SecurityAction.LinkDemand)] + public void Init(JET_RSTINFO recoveryOptions, InitGrbit grbit) + { + this.CheckObjectIsNotDisposed(); + JET_INSTANCE instance = this.JetInstance; + + // Use a constrained region so that the handle is + // always set after JetInit3 is called. + RuntimeHelpers.PrepareConstrainedRegions(); + try + { + // Remember that a failure in JetInit can zero the handle + // and that JetTerm should not be called in that case. + VistaApi.JetInit3(ref instance, recoveryOptions, grbit); + } + finally + { + this.SetHandle(instance.Value); + } + } + + /// + /// Terminate the JET_INSTANCE. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.MaintainabilityRules", + "SA1409:RemoveUnnecessaryCode", + Justification = "CER code belongs in the finally block, so the try clause is empty")] + [SecurityPermissionAttribute(SecurityAction.LinkDemand)] + public void Term() + { + // Use a constrained region so that the handle is + // always set as invalid after JetTerm is called. + RuntimeHelpers.PrepareConstrainedRegions(); + try + { + // This try block deliberately left blank. + } + finally + { + // This is the code that we want in a constrained execution region. + // We need to avoid the situation where JetTerm is called + // but the handle isn't invalidated, so the instance is terminated again. + // This would happen, for example, if there was a ThreadAbortException + // between the call to JetTerm and the call to SetHandle. + // + // If an Esent exception is generated we do not want to invalidate the handle + // because the instance isn't necessarily terminated. On the other hand if a + // different exception (out of memory or thread abort) is generated we still need + // to invalidate the handle. + try + { + Api.JetTerm2(this.JetInstance, this.termGrbit); + } + catch (EsentDirtyShutdownException) + { + this.SetHandleAsInvalid(); + throw; + } + + this.SetHandleAsInvalid(); + } + } + + /// + /// Release the handle for this instance. + /// + /// True if the handle could be released. + protected override bool ReleaseHandle() + { + // The object is already marked as invalid so don't check + var instance = this.CreateInstanceFromHandle(); + return (int)JET_err.Success == Api.Impl.JetTerm2(instance, this.termGrbit); + } + + /// + /// Create a JET_INSTANCE from the internal handle value. + /// + /// A JET_INSTANCE containing the internal handle. + private JET_INSTANCE CreateInstanceFromHandle() + { + return new JET_INSTANCE { Value = this.handle }; + } + + /// + /// Check to see if this instance is invalid or closed. + /// + [SecurityPermissionAttribute(SecurityAction.LinkDemand)] + private void CheckObjectIsNotDisposed() + { + if (this.IsInvalid || this.IsClosed) + { + throw new ObjectDisposedException("Instance"); + } + } + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/InstanceParameters.cs b/WelsonJS.Toolkit/EsentInterop/InstanceParameters.cs new file mode 100644 index 0000000..0b5ade4 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/InstanceParameters.cs @@ -0,0 +1,762 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Globalization; + using System.IO; + using Microsoft.Isam.Esent.Interop.Server2003; + using Microsoft.Isam.Esent.Interop.Vista; + using Microsoft.Isam.Esent.Interop.Windows7; + + /// + /// This class provides properties to set and get system parameters + /// on an ESENT instance. + /// + public partial class InstanceParameters + { + /// + /// The instance to set parameters on. + /// + private readonly JET_INSTANCE instance; + + /// + /// The session to set parameters with. + /// + private readonly JET_SESID sesid; + + /// + /// Initializes a new instance of the InstanceParameters class. + /// + /// + /// The instance to set parameters on. If this is JET_INSTANCE.Nil, + /// then the settings affect the default settings of future instances. + /// + public InstanceParameters(JET_INSTANCE instance) + { + this.instance = instance; + this.sesid = JET_SESID.Nil; + } + + /// + /// Gets or sets the relative or absolute file system path of the + /// folder that will contain the checkpoint file for the instance. + /// + public string SystemDirectory + { + get + { + return Util.AddTrailingDirectorySeparator(this.GetStringParameter(JET_param.SystemPath)); + } + + set + { + this.SetStringParameter(JET_param.SystemPath, Util.AddTrailingDirectorySeparator(value)); + } + } + + /// + /// Gets or sets the relative or absolute file system path of + /// the folder that will contain the temporary database for the instance. + /// + public string TempDirectory + { + get + { + // Older versions of Esent (e.g. Windows XP) will return the + // full path of the temporary database. Extract the directory name. + string path = this.GetStringParameter(JET_param.TempPath); + string dir = Path.GetDirectoryName(path); + return Util.AddTrailingDirectorySeparator(dir); + } + + set + { + this.SetStringParameter(JET_param.TempPath, Util.AddTrailingDirectorySeparator(value)); + } + } + + /// + /// Gets or sets the relative or absolute file system path of the + /// folder that will contain the transaction logs for the instance. + /// + public string LogFileDirectory + { + get + { + return Util.AddTrailingDirectorySeparator(this.GetStringParameter(JET_param.LogFilePath)); + } + + set + { + this.SetStringParameter(JET_param.LogFilePath, Util.AddTrailingDirectorySeparator(value)); + } + } + + /// + /// Gets or sets the relative or absolute file system path of the + /// a folder where crash recovery or a restore operation can find + /// the databases referenced in the transaction log in the + /// specified folder. + /// + /// + /// This parameter is ignored on Windows XP. + /// + public string AlternateDatabaseRecoveryDirectory + { + get + { + if (EsentVersion.SupportsServer2003Features) + { + return + Util.AddTrailingDirectorySeparator( + this.GetStringParameter(Server2003Param.AlternateDatabaseRecoveryPath)); + } + + return null; + } + + set + { + if (EsentVersion.SupportsServer2003Features) + { + this.SetStringParameter( + Server2003Param.AlternateDatabaseRecoveryPath, Util.AddTrailingDirectorySeparator(value)); + } + } + } + + /// + /// Gets or sets the three letter prefix used for many of the files used by + /// the database engine. For example, the checkpoint file is called EDB.CHK by + /// default because EDB is the default base name. + /// + public string BaseName + { + get + { + return this.GetStringParameter(JET_param.BaseName); + } + + set + { + this.SetStringParameter(JET_param.BaseName, value); + } + } + + /// + /// Gets or sets an application specific string that will be added to + /// any event log messages that are emitted by the database engine. This allows + /// easy correlation of event log messages with the source application. By default + /// the host application executable name will be used. + /// + public string EventSource + { + get + { + return this.GetStringParameter(JET_param.EventSource); + } + + set + { + this.SetStringParameter(JET_param.EventSource, value); + } + } + + /// + /// Gets or sets the number of sessions resources reserved for this instance. + /// A session resource directly corresponds to a JET_SESID. + /// + public int MaxSessions + { + get + { + return this.GetIntegerParameter(JET_param.MaxSessions); + } + + set + { + this.SetIntegerParameter(JET_param.MaxSessions, value); + } + } + + /// + /// Gets or sets the number of B+ Tree resources reserved for this instance. + /// + public int MaxOpenTables + { + get + { + return this.GetIntegerParameter(JET_param.MaxOpenTables); + } + + set + { + this.SetIntegerParameter(JET_param.MaxOpenTables, value); + } + } + + /// + /// Gets or sets the number of cursor resources reserved for this instance. + /// A cursor resource directly corresponds to a JET_TABLEID. + /// + public int MaxCursors + { + get + { + return this.GetIntegerParameter(JET_param.MaxCursors); + } + + set + { + this.SetIntegerParameter(JET_param.MaxCursors, value); + } + } + + /// + /// Gets or sets the maximum number of version store pages reserved + /// for this instance. + /// + public int MaxVerPages + { + get + { + return this.GetIntegerParameter(JET_param.MaxVerPages); + } + + set + { + this.SetIntegerParameter(JET_param.MaxVerPages, value); + } + } + + /// + /// Gets or sets the preferred number of version store pages reserved + /// for this instance. If the size of the version store exceeds this + /// threshold then any information that is only used for optional + /// background tasks, such as reclaiming deleted space in the database, + /// is instead sacrificed to preserve room for transactional information. + /// + public int PreferredVerPages + { + get + { + return this.GetIntegerParameter(JET_param.PreferredVerPages); + } + + set + { + this.SetIntegerParameter(JET_param.PreferredVerPages, value); + } + } + + /// + /// Gets or sets the the number of background cleanup work items that + /// can be queued to the database engine thread pool at any one time. + /// + public int VersionStoreTaskQueueMax + { + get + { + return this.GetIntegerParameter(JET_param.VersionStoreTaskQueueMax); + } + + set + { + this.SetIntegerParameter(JET_param.VersionStoreTaskQueueMax, value); + } + } + + /// + /// Gets or sets the number of temporary table resources for use + /// by an instance. This setting will affect how many temporary tables can be used at + /// the same time. If this system parameter is set to zero then no temporary database + /// will be created and any activity that requires use of the temporary database will + /// fail. This setting can be useful to avoid the I/O required to create the temporary + /// database if it is known that it will not be used. + /// + /// + /// The use of a temporary table also requires a cursor resource. + /// + public int MaxTemporaryTables + { + get + { + return this.GetIntegerParameter(JET_param.MaxTemporaryTables); + } + + set + { + this.SetIntegerParameter(JET_param.MaxTemporaryTables, value); + } + } + + /// + /// Gets or sets the size of the transaction log files. This parameter + /// should be set in units of 1024 bytes (e.g. a setting of 2048 will + /// give 2MB logfiles). + /// + public int LogFileSize + { + get + { + return this.GetIntegerParameter(JET_param.LogFileSize); + } + + set + { + this.SetIntegerParameter(JET_param.LogFileSize, value); + } + } + + /// + /// Gets or sets the amount of memory used to cache log records + /// before they are written to the transaction log file. The unit for this + /// parameter is the sector size of the volume that holds the transaction log files. + /// The sector size is almost always 512 bytes, so it is safe to assume that size + /// for the unit. This parameter has an impact on performance. When the database + /// engine is under heavy update load, this buffer can become full very rapidly. + /// A larger cache size for the transaction log file is critical for good update + /// performance under such a high load condition. The default is known to be too small + /// for this case. + /// Do not set this parameter to a number of buffers that is larger (in bytes) than + /// half the size of a transaction log file. + /// + public int LogBuffers + { + get + { + return this.GetIntegerParameter(JET_param.LogBuffers); + } + + set + { + this.SetIntegerParameter(JET_param.LogBuffers, value); + } + } + + /// + /// Gets or sets a value indicating whether circular logging is on. + /// When circular logging is off, all transaction log files that are generated + /// are retained on disk until they are no longer needed because a full backup of the + /// database has been performed. When circular logging is on, only transaction log files + /// that are younger than the current checkpoint are retained on disk. The benefit of + /// this mode is that backups are not required to retire old transaction log files. + /// + public bool CircularLog + { + get + { + return this.GetBoolParameter(JET_param.CircularLog); + } + + set + { + this.SetBoolParameter(JET_param.CircularLog, value); + } + } + + /// + /// Gets or sets a value indicating whether JetInit fails when the database + /// engine is configured to start using transaction log files on disk + /// that are of a different size than what is configured. Normally, + /// will successfully recover the databases + /// but will fail with + /// to indicate that the log file size is misconfigured. However, when + /// this parameter is set to true then the database engine will silently + /// delete all the old log files, start a new set of transaction log files + /// using the configured log file size. This parameter is useful when the + /// application wishes to transparently change its transaction log file + /// size yet still work transparently in upgrade and restore scenarios. + /// + public bool CleanupMismatchedLogFiles + { + get + { + return this.GetBoolParameter(JET_param.CleanupMismatchedLogFiles); + } + + set + { + this.SetBoolParameter(JET_param.CleanupMismatchedLogFiles, value); + } + } + + /// + /// Gets or sets the initial size of the temporary database. The size is in + /// database pages. A size of zero indicates that the default size of an ordinary + /// database should be used. It is often desirable for small applications to configure + /// the temporary database to be as small as possible. Setting this parameter to + /// will achieve the smallest + /// temporary database possible. + /// + public int PageTempDBMin + { + get + { + return this.GetIntegerParameter(JET_param.PageTempDBMin); + } + + set + { + this.SetIntegerParameter(JET_param.PageTempDBMin, value); + } + } + + /// + /// Gets or sets the threshold in bytes for about how many transaction log + /// files will need to be replayed after a crash. If circular logging is enabled using + /// CircularLog then this parameter will also control the approximate amount + /// of transaction log files that will be retained on disk. + /// + public int CheckpointDepthMax + { + get + { + return this.GetIntegerParameter(JET_param.CheckpointDepthMax); + } + + set + { + this.SetIntegerParameter(JET_param.CheckpointDepthMax, value); + } + } + + /// + /// Gets or sets the number of pages that are added to a database file each + /// time it needs to grow to accommodate more data. + /// + public int DbExtensionSize + { + get + { + return this.GetIntegerParameter(JET_param.DbExtensionSize); + } + + set + { + this.SetIntegerParameter(JET_param.DbExtensionSize, value); + } + } + + /// + /// Gets or sets a value indicating whether crash recovery is on. + /// + public bool Recovery + { + get + { + return 0 == string.Compare(this.GetStringParameter(JET_param.Recovery), "on", StringComparison.OrdinalIgnoreCase); + } + + set + { + if (value) + { + this.SetStringParameter(JET_param.Recovery, "on"); + } + else + { + this.SetStringParameter(JET_param.Recovery, "off"); + } + } + } + + /// + /// Gets or sets a value indicating whether online defragmentation is enabled. + /// + public bool EnableOnlineDefrag + { + get + { + return this.GetBoolParameter(JET_param.EnableOnlineDefrag); + } + + set + { + this.SetBoolParameter(JET_param.EnableOnlineDefrag, value); + } + } + + /// + /// Gets or sets a value indicating whether will check for + /// indexes that were build using an older version of the NLS library in the + /// operating system. + /// + public bool EnableIndexChecking + { + get + { + return this.GetBoolParameter(JET_param.EnableIndexChecking); + } + + set + { + this.SetBoolParameter(JET_param.EnableIndexChecking, value); + } + } + + /// + /// Gets or sets the name of the event log the database engine uses for its event log + /// messages. By default, all event log messages will go to the Application event log. If the registry + /// key name for another event log is configured then the event log messages will go there instead. + /// + public string EventSourceKey + { + get + { + return this.GetStringParameter(JET_param.EventSourceKey); + } + + set + { + this.SetStringParameter(JET_param.EventSourceKey, value); + } + } + + /// + /// Gets or sets a value indicating whether informational event + /// log messages that would ordinarily be generated by the + /// database engine will be suppressed. + /// + public bool NoInformationEvent + { + get + { + return this.GetBoolParameter(JET_param.NoInformationEvent); + } + + set + { + this.SetBoolParameter(JET_param.NoInformationEvent, value); + } + } + + /// + /// Gets or sets the detail level of eventlog messages that are emitted + /// to the eventlog by the database engine. Higher numbers will result + /// in more detailed eventlog messages. + /// + public EventLoggingLevels EventLoggingLevel + { + get + { + return (EventLoggingLevels)this.GetIntegerParameter(JET_param.EventLoggingLevel); + } + + set + { + this.SetIntegerParameter(JET_param.EventLoggingLevel, (int)value); + } + } + + /// + /// Gets or sets a value indicating whether only one database is allowed to + /// be opened using JetOpenDatabase by a given session at one time. + /// The temporary database is excluded from this restriction. + /// + public bool OneDatabasePerSession + { + get + { + return this.GetBoolParameter(JET_param.OneDatabasePerSession); + } + + set + { + this.SetBoolParameter(JET_param.OneDatabasePerSession, value); + } + } + + /// + /// Gets or sets a value indicating whether ESENT will silently create folders + /// that are missing in its filesystem paths. + /// + public bool CreatePathIfNotExist + { + get + { + return this.GetBoolParameter(JET_param.CreatePathIfNotExist); + } + + set + { + this.SetBoolParameter(JET_param.CreatePathIfNotExist, value); + } + } + + /// + /// Gets or sets a value giving the number of B+ Tree resources cached by + /// the instance after the tables they represent have been closed by + /// the application. Large values for this parameter will cause the + /// database engine to use more memory but will increase the speed + /// with which a large number of tables can be opened randomly by + /// the application. This is useful for applications that have a + /// schema with a very large number of tables. + /// + /// Supported on Windows Vista and up. Ignored on Windows XP and + /// Windows Server 2003. + /// + /// + public int CachedClosedTables + { + get + { + if (EsentVersion.SupportsVistaFeatures) + { + return this.GetIntegerParameter(VistaParam.CachedClosedTables); + } + + return 0; + } + + set + { + if (EsentVersion.SupportsVistaFeatures) + { + this.SetIntegerParameter(VistaParam.CachedClosedTables, value); + } + } + } + + /// + /// Gets or sets a the number of logs that esent will defer database + /// flushes for. This can be used to increase database recoverability if + /// failures cause logfiles to be lost. + /// + /// Supported on Windows 7 and up. Ignored on Windows XP, + /// Windows Server 2003, Windows Vista and Windows Server 2008. + /// + /// + public int WaypointLatency + { + get + { + if (EsentVersion.SupportsWindows7Features) + { + return this.GetIntegerParameter(Windows7Param.WaypointLatency); + } + + // older versions have no waypoint + return 0; + } + + set + { + if (EsentVersion.SupportsWindows7Features) + { + this.SetIntegerParameter(Windows7Param.WaypointLatency, value); + } + } + } + + /// + /// Gets or sets a value indicating whether will + /// delete indexes that were build using an older version of the NLS library in the + /// operating system. + /// + public bool EnableIndexCleanup + { + get + { + return this.GetBoolParameter(JET_param.EnableIndexCleanup); + } + + set + { + this.SetBoolParameter(JET_param.EnableIndexCleanup, value); + } + } + + /// + /// Returns a that represents the current . + /// + /// + /// A that represents the current . + /// + public override string ToString() + { + return string.Format(CultureInfo.InvariantCulture, "InstanceParameters (0x{0:x})", this.instance.Value); + } + + /// + /// Set a system parameter which is a string. + /// + /// The parameter to set. + /// The value to set. + private void SetStringParameter(JET_param param, string value) + { + Api.JetSetSystemParameter(this.instance, this.sesid, param, 0, value); + } + + /// + /// Get a system parameter which is a string. + /// + /// The parameter to get. + /// The value of the parameter. + private string GetStringParameter(JET_param param) + { + int ignored = 0; + string value; + Api.JetGetSystemParameter(this.instance, this.sesid, param, ref ignored, out value, 1024); + return value; + } + + /// + /// Set a system parameter which is an integer. + /// + /// The parameter to set. + /// The value to set. + private void SetIntegerParameter(JET_param param, int value) + { + Api.JetSetSystemParameter(this.instance, this.sesid, param, value, null); + } + + /// + /// Get a system parameter which is an integer. + /// + /// The parameter to get. + /// The value of the parameter. + private int GetIntegerParameter(JET_param param) + { + int value = 0; + string ignored; + Api.JetGetSystemParameter(this.instance, this.sesid, param, ref value, out ignored, 0); + return value; + } + + /// + /// Set a system parameter which is a boolean. + /// + /// The parameter to set. + /// The value to set. + private void SetBoolParameter(JET_param param, bool value) + { + if (value) + { + Api.JetSetSystemParameter(this.instance, this.sesid, param, 1, null); + } + else + { + Api.JetSetSystemParameter(this.instance, this.sesid, param, 0, null); + } + } + + /// + /// Get a system parameter which is a boolean. + /// + /// The parameter to get. + /// The value of the parameter. + private bool GetBoolParameter(JET_param param) + { + int value = 0; + string ignored; + Api.JetGetSystemParameter(this.instance, this.sesid, param, ref value, out ignored, 0); + return value != 0; + } + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/Int16ColumnValue.cs b/WelsonJS.Toolkit/EsentInterop/Int16ColumnValue.cs new file mode 100644 index 0000000..b85a50a --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/Int16ColumnValue.cs @@ -0,0 +1,69 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Diagnostics; + + /// + /// An column value. + /// + public class Int16ColumnValue : ColumnValueOfStruct + { + /// + /// Gets the size of the value in the column. This returns 0 for + /// variable sized columns (i.e. binary and string). + /// + protected override int Size + { + [DebuggerStepThrough] + get { return sizeof(short); } + } + + /// + /// Recursive SetColumns method for data pinning. This populates the buffer and + /// calls the inherited SetColumns method. + /// + /// The session to use. + /// + /// The table to set the columns in. An update should be prepared. + /// + /// + /// Column values to set. + /// + /// + /// Structures to put the pinned data in. + /// + /// Offset of this object in the array. + /// An error code. + internal override unsafe int SetColumns(JET_SESID sesid, JET_TABLEID tableid, ColumnValue[] columnValues, NATIVE_SETCOLUMN* nativeColumns, int i) + { + var data = this.Value.GetValueOrDefault(); + return this.SetColumns(sesid, tableid, columnValues, nativeColumns, i, &data, sizeof(short), this.Value.HasValue); + } + + /// + /// Given data retrieved from ESENT, decode the data and set the value in the ColumnValue object. + /// + /// An array of bytes. + /// The starting position within the bytes. + /// The number of bytes to decode. + /// The error returned from ESENT. + protected override void GetValueFromBytes(byte[] value, int startIndex, int count, int err) + { + if (JET_wrn.ColumnNull == (JET_wrn)err) + { + this.Value = null; + } + else + { + this.CheckDataCount(count); + this.Value = BitConverter.ToInt16(value, startIndex); + } + } + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/Int32ColumnValue.cs b/WelsonJS.Toolkit/EsentInterop/Int32ColumnValue.cs new file mode 100644 index 0000000..810a918 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/Int32ColumnValue.cs @@ -0,0 +1,69 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Diagnostics; + + /// + /// An column value. + /// + public class Int32ColumnValue : ColumnValueOfStruct + { + /// + /// Gets the size of the value in the column. This returns 0 for + /// variable sized columns (i.e. binary and string). + /// + protected override int Size + { + [DebuggerStepThrough] + get { return sizeof(int); } + } + + /// + /// Recursive SetColumns method for data pinning. This populates the buffer and + /// calls the inherited SetColumns method. + /// + /// The session to use. + /// + /// The table to set the columns in. An update should be prepared. + /// + /// + /// Column values to set. + /// + /// + /// Structures to put the pinned data in. + /// + /// Offset of this object in the array. + /// An error code. + internal override unsafe int SetColumns(JET_SESID sesid, JET_TABLEID tableid, ColumnValue[] columnValues, NATIVE_SETCOLUMN* nativeColumns, int i) + { + var data = this.Value.GetValueOrDefault(); + return this.SetColumns(sesid, tableid, columnValues, nativeColumns, i, &data, sizeof(int), this.Value.HasValue); + } + + /// + /// Given data retrieved from ESENT, decode the data and set the value in the ColumnValue object. + /// + /// An array of bytes. + /// The starting position within the bytes. + /// The number of bytes to decode. + /// The error returned from ESENT. + protected override void GetValueFromBytes(byte[] value, int startIndex, int count, int err) + { + if (JET_wrn.ColumnNull == (JET_wrn)err) + { + this.Value = null; + } + else + { + this.CheckDataCount(count); + this.Value = BitConverter.ToInt32(value, startIndex); + } + } + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/Int64ColumnValue.cs b/WelsonJS.Toolkit/EsentInterop/Int64ColumnValue.cs new file mode 100644 index 0000000..1cca8e8 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/Int64ColumnValue.cs @@ -0,0 +1,69 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Diagnostics; + + /// + /// An column value. + /// + public class Int64ColumnValue : ColumnValueOfStruct + { + /// + /// Gets the size of the value in the column. This returns 0 for + /// variable sized columns (i.e. binary and string). + /// + protected override int Size + { + [DebuggerStepThrough] + get { return sizeof(long); } + } + + /// + /// Recursive SetColumns method for data pinning. This populates the buffer and + /// calls the inherited SetColumns method. + /// + /// The session to use. + /// + /// The table to set the columns in. An update should be prepared. + /// + /// + /// Column values to set. + /// + /// + /// Structures to put the pinned data in. + /// + /// Offset of this object in the array. + /// An error code. + internal override unsafe int SetColumns(JET_SESID sesid, JET_TABLEID tableid, ColumnValue[] columnValues, NATIVE_SETCOLUMN* nativeColumns, int i) + { + var data = this.Value.GetValueOrDefault(); + return this.SetColumns(sesid, tableid, columnValues, nativeColumns, i, &data, sizeof(long), this.Value.HasValue); + } + + /// + /// Given data retrieved from ESENT, decode the data and set the value in the ColumnValue object. + /// + /// An array of bytes. + /// The starting position within the bytes. + /// The number of bytes to decode. + /// The error returned from ESENT. + protected override void GetValueFromBytes(byte[] value, int startIndex, int count, int err) + { + if (JET_wrn.ColumnNull == (JET_wrn)err) + { + this.Value = null; + } + else + { + this.CheckDataCount(count); + this.Value = BitConverter.ToInt64(value, startIndex); + } + } + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/InternalApi.cs b/WelsonJS.Toolkit/EsentInterop/InternalApi.cs new file mode 100644 index 0000000..44d9730 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/InternalApi.cs @@ -0,0 +1,192 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + + /// + /// Internal-only methods of the Api. + /// + public static partial class Api + { + /// + /// The JetSetColumn function modifies a single column value in a modified record to be inserted or to + /// update the current record. It can overwrite an existing value, add a new value to a sequence of + /// values in a multi-valued column, remove a value from a sequence of values in a multi-valued column, + /// or update all or part of a long value (a column of type + /// or ). + /// + /// + /// This is an internal-only version of the API that takes a data buffer and an offset into the buffer. + /// + /// The session which is performing the update. + /// The cursor to update. An update should be prepared. + /// The columnid to set. + /// The data to set. + /// The size of data to set. + /// The offset in the data buffer to set data from. + /// SetColumn options. + /// Used to specify itag or long-value offset. + /// A warning value. + public static JET_wrn JetSetColumn(JET_SESID sesid, JET_TABLEID tableid, JET_COLUMNID columnid, byte[] data, int dataSize, int dataOffset, SetColumnGrbit grbit, JET_SETINFO setinfo) + { + if (dataOffset < 0 + || (null != data && 0 != dataSize && dataOffset >= data.Length) + || (null == data && dataOffset != 0)) + { + throw new ArgumentOutOfRangeException( + "dataOffset", + dataOffset, + "must be inside the data buffer"); + } + + if (null != data && dataSize > checked(data.Length - dataOffset) && (SetColumnGrbit.SizeLV != (grbit & SetColumnGrbit.SizeLV))) + { + throw new ArgumentOutOfRangeException( + "dataSize", + dataSize, + "cannot be greater than the length of the data (unless the SizeLV option is used)"); + } + + unsafe + { + fixed (byte* pointer = data) + { + return Api.JetSetColumn(sesid, tableid, columnid, new IntPtr(pointer + dataOffset), dataSize, grbit, setinfo); + } + } + } + + /// + /// Retrieves a single column value from the current record. The record is that + /// record associated with the index entry at the current position of the cursor. + /// Alternatively, this function can retrieve a column from a record being created + /// in the cursor copy buffer. This function can also retrieve column data from an + /// index entry that references the current record. In addition to retrieving the + /// actual column value, JetRetrieveColumn can also be used to retrieve the size + /// of a column, before retrieving the column data itself so that application + /// buffers can be sized appropriately. + /// + /// + /// This is an internal method that takes a buffer offset as well as size. + /// + /// The session to use. + /// The cursor to retrieve the column from. + /// The columnid to retrieve. + /// The data buffer to be retrieved into. + /// The size of the data buffer. + /// Offset into the data buffer to read data into. + /// Returns the actual size of the data buffer. + /// Retrieve column options. + /// + /// If pretinfo is give as NULL then the function behaves as though an itagSequence + /// of 1 and an ibLongValue of 0 (zero) were given. This causes column retrieval to + /// retrieve the first value of a multi-valued column, and to retrieve long data at + /// offset 0 (zero). + /// + /// An ESENT warning code. + public static JET_wrn JetRetrieveColumn(JET_SESID sesid, JET_TABLEID tableid, JET_COLUMNID columnid, byte[] data, int dataSize, int dataOffset, out int actualDataSize, RetrieveColumnGrbit grbit, JET_RETINFO retinfo) + { + if (dataOffset < 0 + || (null != data && 0 != dataSize && dataOffset >= data.Length) + || (null == data && dataOffset != 0)) + { + throw new ArgumentOutOfRangeException( + "dataOffset", + dataOffset, + "must be inside the data buffer"); + } + + if ((null == data && dataSize > 0) || (null != data && dataSize > data.Length)) + { + throw new ArgumentOutOfRangeException( + "dataSize", + dataSize, + "cannot be greater than the length of the data"); + } + + unsafe + { + fixed (byte* pointer = data) + { + return Api.JetRetrieveColumn( + sesid, tableid, columnid, new IntPtr(pointer + dataOffset), dataSize, out actualDataSize, grbit, retinfo); + } + } + } + + /// + /// Retrieves a single column value from the current record. The record is that + /// record associated with the index entry at the current position of the cursor. + /// Alternatively, this function can retrieve a column from a record being created + /// in the cursor copy buffer. This function can also retrieve column data from an + /// index entry that references the current record. In addition to retrieving the + /// actual column value, JetRetrieveColumn can also be used to retrieve the size + /// of a column, before retrieving the column data itself so that application + /// buffers can be sized appropriately. + /// + /// + /// This is an internal-use version that takes an IntPtr. + /// + /// The session to use. + /// The cursor to retrieve the column from. + /// The columnid to retrieve. + /// The data buffer to be retrieved into. + /// The size of the data buffer. + /// Returns the actual size of the data buffer. + /// Retrieve column options. + /// + /// If pretinfo is give as NULL then the function behaves as though an itagSequence + /// of 1 and an ibLongValue of 0 (zero) were given. This causes column retrieval to + /// retrieve the first value of a multi-valued column, and to retrieve long data at + /// offset 0 (zero). + /// + /// An ESENT warning code. + internal static JET_wrn JetRetrieveColumn(JET_SESID sesid, JET_TABLEID tableid, JET_COLUMNID columnid, IntPtr data, int dataSize, out int actualDataSize, RetrieveColumnGrbit grbit, JET_RETINFO retinfo) + { + return Api.Check(Impl.JetRetrieveColumn(sesid, tableid, columnid, data, dataSize, out actualDataSize, grbit, retinfo)); + } + + /// + /// Constructs search keys that may then be used by JetSeek and JetSetIndexRange. + /// + /// + /// This is an internal (unsafe) version that takes an IntPtr. + /// + /// The session to use. + /// The cursor to create the key on. + /// Column data for the current key column of the current index. + /// Size of the data. + /// Key options. + internal static void JetMakeKey(JET_SESID sesid, JET_TABLEID tableid, IntPtr data, int dataSize, MakeKeyGrbit grbit) + { + Api.Check(Impl.JetMakeKey(sesid, tableid, data, dataSize, grbit)); + } + + /// + /// The JetSetColumn function modifies a single column value in a modified record to be inserted or to + /// update the current record. It can overwrite an existing value, add a new value to a sequence of + /// values in a multi-valued column, remove a value from a sequence of values in a multi-valued column, + /// or update all or part of a long value, a column of type JET_coltyp.LongText or JET_coltyp.LongBinary. + /// + /// + /// This method takes an IntPtr and is intended for internal use only. + /// + /// The session which is performing the update. + /// The cursor to update. An update should be prepared. + /// The columnid to set. + /// The data to set. + /// The size of data to set. + /// SetColumn options. + /// Used to specify itag or long-value offset. + /// A warning value. + internal static JET_wrn JetSetColumn(JET_SESID sesid, JET_TABLEID tableid, JET_COLUMNID columnid, IntPtr data, int dataSize, SetColumnGrbit grbit, JET_SETINFO setinfo) + { + return Api.Check(Impl.JetSetColumn(sesid, tableid, columnid, data, dataSize, grbit, setinfo)); + } + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/IntersectIndexesEnumerator.cs b/WelsonJS.Toolkit/EsentInterop/IntersectIndexesEnumerator.cs new file mode 100644 index 0000000..bed9b17 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/IntersectIndexesEnumerator.cs @@ -0,0 +1,56 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + /// + /// Enumerator that can intersect indexes and return the intersected bookmarks. + /// + internal sealed class IntersectIndexesEnumerator : TableEnumerator + { + /// + /// The ranges to intersect. + /// + private readonly JET_INDEXRANGE[] ranges; + + /// + /// The recordlist containing the result of the intersection. + /// + private JET_RECORDLIST recordlist; + + /// + /// Initializes a new instance of the class. + /// + /// + /// The session to use. + /// + /// + /// The ranges to intersect. + /// + public IntersectIndexesEnumerator(JET_SESID sesid, JET_INDEXRANGE[] ranges) : base(sesid) + { + this.ranges = ranges; + } + + /// + /// Open the table to be enumerated. This should set . + /// + protected override void OpenTable() + { + Api.JetIntersectIndexes(this.Sesid, this.ranges, this.ranges.Length, out this.recordlist, IntersectIndexesGrbit.None); + this.TableidToEnumerate = this.recordlist.tableid; + } + + /// + /// Gets the entry the cursor is currently positioned on. + /// + /// The entry the cursor is currently positioned on. + protected override byte[] GetCurrent() + { + return Api.RetrieveColumn(this.Sesid, this.TableidToEnumerate, this.recordlist.columnidBookmark); + } + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/JET_eventlogginglevel.cs b/WelsonJS.Toolkit/EsentInterop/JET_eventlogginglevel.cs new file mode 100644 index 0000000..a305fb4 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/JET_eventlogginglevel.cs @@ -0,0 +1,44 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + /// + /// Options for EventLoggingLevel. + /// + public enum EventLoggingLevels + { + /// + /// Disable all events. + /// + Disable = 0, + + /// + /// Default level. Windows 7 and later. + /// + Min = 1, + + /// + /// Low verbosity and lower. Windows 7 and later. + /// + Low = 25, + + /// + /// Medium verbosity and lower. Windows 7 and later. + /// + Medium = 50, + + /// + /// High verbosity and lower. Windows 7 and later. + /// + High = 75, + + /// + /// All events. + /// + Max = 100, + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/JetApi.cs b/WelsonJS.Toolkit/EsentInterop/JetApi.cs new file mode 100644 index 0000000..67e0930 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/JetApi.cs @@ -0,0 +1,6451 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop.Implementation +{ + using System; + using System.Collections.Generic; + using System.Diagnostics; + using System.Globalization; + using System.Runtime.CompilerServices; + using System.Runtime.InteropServices; + using System.Text; + using System.Threading; + using Microsoft.Isam.Esent.Interop.Server2003; + using Microsoft.Isam.Esent.Interop.Vista; + using Microsoft.Isam.Esent.Interop.Windows7; + using Microsoft.Isam.Esent.Interop.Windows8; + + using Win32 = Microsoft.Isam.Esent.Interop.Win32; + + /// + /// Calls to the ESENT interop layer. These calls take the managed types (e.g. JET_SESID) and + /// return errors. + /// + internal sealed partial class JetApi : IJetApi + { + /// + /// API call tracing. + /// + private static readonly TraceSwitch TraceSwitch = new TraceSwitch("ESENT P/Invoke", "P/Invoke calls to ESENT"); + + /// + /// The version of esent. If this is zero then it is looked up + /// with JetGetVersion. + /// + private readonly uint versionOverride; + + /// + /// Callback wrapper collection. This is used for long-running callbacks + /// (callbacks which can be called after the API call returns). Create a + /// wrapper here and occasionally clean them up. + /// + private readonly CallbackWrappers callbackWrappers = new CallbackWrappers(); + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + /// + /// Initializes static members of the JetApi class. + /// + static JetApi() + { + // Prepare these methods for inclusion in a constrained execution region (CER). + // This is needed by the Instance class. Instance accesses these methods virtually + // so RemoveUnnecessaryCode won't be able to prepare them. + RuntimeHelpers.PrepareMethod(typeof(JetApi).GetMethod("JetCreateInstance").MethodHandle); + RuntimeHelpers.PrepareMethod(typeof(JetApi).GetMethod("JetCreateInstance2").MethodHandle); + RuntimeHelpers.PrepareMethod(typeof(JetApi).GetMethod("JetInit").MethodHandle); + RuntimeHelpers.PrepareMethod(typeof(JetApi).GetMethod("JetInit2").MethodHandle); + RuntimeHelpers.PrepareMethod(typeof(JetApi).GetMethod("JetInit3").MethodHandle); + RuntimeHelpers.PrepareMethod(typeof(JetApi).GetMethod("JetTerm").MethodHandle); + RuntimeHelpers.PrepareMethod(typeof(JetApi).GetMethod("JetTerm2").MethodHandle); + } +#endif // !MANAGEDESENT_ON_WSA + + /// + /// Initializes a new instance of the JetApi class. This allows the version + /// to be set. + /// + /// + /// The version of Esent. This is used to override the results of + /// JetGetVersion. + /// + public JetApi(uint version) + { +#if MANAGEDESENT_ON_WSA + // JetGetVersion isn't available in new Windows UI, so we'll pretend it's always Win8: + this.versionOverride = 8250 << 8; +#else + this.versionOverride = version; +#endif // MANAGEDESENT_ON_WSA + this.DetermineCapabilities(); + } + + /// + /// Initializes a new instance of the JetApi class. + /// + public JetApi() + { +#if MANAGEDESENT_ON_WSA + // JetGetVersion isn't available in new Windows UI, so we'll pretend it's always Win8: + this.versionOverride = 8250 << 8; +#endif // MANAGEDESENT_ON_WSA + this.DetermineCapabilities(); + } + + /// + /// Gets the capabilities of this implementation of ESENT. + /// + public JetCapabilities Capabilities { get; private set; } + + #region Init/Term + + /// + /// Allocates a new instance of the database engine. + /// + /// Returns the new instance. + /// The name of the instance. Names must be unique. + /// An error if the call fails. + public int JetCreateInstance(out JET_INSTANCE instance, string name) + { +#if MANAGEDESENT_ON_WSA + return this.JetCreateInstance2(out instance, name, null, CreateInstanceGrbit.None); +#else + TraceFunctionCall(); + instance.Value = IntPtr.Zero; + if (this.Capabilities.SupportsUnicodePaths) + { + return Err(NativeMethods.JetCreateInstanceW(out instance.Value, name)); + } + else + { + return Err(NativeMethods.JetCreateInstance(out instance.Value, name)); + } +#endif // MANAGEDESENT_ON_WSA + } + + /// + /// Allocate a new instance of the database engine for use in a single + /// process, with a display name specified. + /// + /// Returns the newly create instance. + /// + /// Specifies a unique string identifier for the instance to be created. + /// This string must be unique within a given process hosting the + /// database engine. + /// + /// + /// A display name for the instance to be created. This will be used + /// in eventlog entries. + /// + /// Creation options. + /// An error if the call fails. + public int JetCreateInstance2(out JET_INSTANCE instance, string name, string displayName, CreateInstanceGrbit grbit) + { + TraceFunctionCall(); + instance.Value = IntPtr.Zero; + +#if MANAGEDESENT_ON_WSA + return Err(NativeMethods.JetCreateInstance2W(out instance.Value, name, displayName, (uint)grbit)); +#else + if (this.Capabilities.SupportsUnicodePaths) + { + return Err(NativeMethods.JetCreateInstance2W(out instance.Value, name, displayName, (uint)grbit)); + } + else + { + return Err(NativeMethods.JetCreateInstance2(out instance.Value, name, displayName, (uint)grbit)); + } +#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. + /// + /// An error if the call fails. + public int JetInit(ref JET_INSTANCE instance) + { +#if MANAGEDESENT_ON_WSA + return this.JetInit3(ref instance, null, InitGrbit.None); +#else + TraceFunctionCall(); + return Err(NativeMethods.JetInit(ref instance.Value)); +#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. + /// + /// + /// Initialization options. + /// + /// An error or a warning. + public int JetInit2(ref JET_INSTANCE instance, InitGrbit grbit) + { +#if MANAGEDESENT_ON_WSA + return this.JetInit3(ref instance, null, grbit); +#else + TraceFunctionCall(); + return Err(NativeMethods.JetInit2(ref instance.Value, (uint)grbit)); +#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. + /// + /// An error code or warning. + public int JetInit3(ref JET_INSTANCE instance, JET_RSTINFO recoveryOptions, InitGrbit grbit) + { + TraceFunctionCall(); + this.CheckSupportsVistaFeatures("JetInit3"); + + if (null != recoveryOptions) + { + var callbackWrapper = new StatusCallbackWrapper(recoveryOptions.pfnStatus); + NATIVE_RSTINFO rstinfo = recoveryOptions.GetNativeRstinfo(); + + unsafe + { + int numMaps = (null == recoveryOptions.rgrstmap) ? 0 : recoveryOptions.rgrstmap.Length; + try + { + NATIVE_RSTMAP* maps = stackalloc NATIVE_RSTMAP[numMaps]; + + if (numMaps > 0) + { + rstinfo.rgrstmap = maps; + for (int i = 0; i < numMaps; ++i) + { + rstinfo.rgrstmap[i] = recoveryOptions.rgrstmap[i].GetNativeRstmap(); + } + } + + rstinfo.pfnStatus = callbackWrapper.NativeCallback; + int err = Err(NativeMethods.JetInit3W(ref instance.Value, ref rstinfo, (uint)grbit)); + callbackWrapper.ThrowSavedException(); + return err; + } + finally + { + if (null != rstinfo.rgrstmap) + { + for (int i = 0; i < numMaps; ++i) + { + rstinfo.rgrstmap[i].FreeHGlobal(); + } + } + } + } + } + else + { + return Err(NativeMethods.JetInit3W(ref instance.Value, IntPtr.Zero, (uint)grbit)); + } + } + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + /// + /// Retrieves information about the instances that are running. + /// + /// + /// Returns the number of instances. + /// + /// + /// Returns an array of instance info objects, one for each running + /// instance. + /// + /// An error code if the call fails. + public int JetGetInstanceInfo(out int numInstances, out JET_INSTANCE_INFO[] instances) + { + TraceFunctionCall(); + + unsafe + { + uint nativeNumInstance = 0; + + // Esent will allocate memory which will be freed by the ConvertInstanceInfos call. + NATIVE_INSTANCE_INFO* nativeInstanceInfos = null; + int err; + if (this.Capabilities.SupportsUnicodePaths) + { + err = NativeMethods.JetGetInstanceInfoW(out nativeNumInstance, out nativeInstanceInfos); + instances = this.ConvertInstanceInfosUnicode(nativeNumInstance, nativeInstanceInfos); + } + else + { + err = NativeMethods.JetGetInstanceInfo(out nativeNumInstance, out nativeInstanceInfos); + instances = this.ConvertInstanceInfosAscii(nativeNumInstance, nativeInstanceInfos); + } + + numInstances = instances.Length; + + return Err(err); + } + } + + /// + /// Retrieves information about an instance. + /// + /// The instance to get information about. + /// Retrieved information. + /// The type of information to retrieve. + /// An error code if the call fails. + public int JetGetInstanceMiscInfo(JET_INSTANCE instance, out JET_SIGNATURE signature, JET_InstanceMiscInfo infoLevel) + { + TraceFunctionCall(); + this.CheckSupportsVistaFeatures("JetGetInstanceMiscInfo"); + + var nativeSignature = new NATIVE_SIGNATURE(); + int err = NativeMethods.JetGetInstanceMiscInfo( + instance.Value, + ref nativeSignature, + checked((uint)NATIVE_SIGNATURE.Size), + unchecked((uint)infoLevel)); + + signature = new JET_SIGNATURE(nativeSignature); + return Err(err); + } + + /// + /// Prevents streaming backup-related activity from continuing on a + /// specific running instance, thus ending the streaming backup in + /// a predictable way. + /// + /// The instance to use. + /// An error code. + public int JetStopBackupInstance(JET_INSTANCE instance) + { + TraceFunctionCall(); + return Err(NativeMethods.JetStopBackupInstance(instance.Value)); + } + + /// + /// Prepares an instance for termination. + /// + /// The (running) instance to use. + /// An error code. + public int JetStopServiceInstance(JET_INSTANCE instance) + { + TraceFunctionCall(); + return Err(NativeMethods.JetStopServiceInstance(instance.Value)); + } +#endif // !MANAGEDESENT_ON_WSA + + /// + /// Prepares an instance for termination. Can also be used to resume a previous quiescing. + /// + /// The (running) instance to use. + /// The options to stop or resume the instance. + /// An error code. + public int JetStopServiceInstance2( + JET_INSTANCE instance, + StopServiceGrbit grbit) + { + TraceFunctionCall(); + this.CheckSupportsWindows8Features("JetStopServiceInstance2"); + return Err(NativeMethods.JetStopServiceInstance2(instance.Value, unchecked((uint)grbit))); + } + + /// + /// Terminate an instance that was created with or + /// . + /// + /// The instance to terminate. + /// An error or warning. + public int JetTerm(JET_INSTANCE instance) + { +#if MANAGEDESENT_ON_WSA + return this.JetTerm2(instance, TermGrbit.None); +#else + TraceFunctionCall(); + this.callbackWrappers.Collect(); + if (!instance.IsInvalid) + { + return Err(NativeMethods.JetTerm(instance.Value)); + } + + return (int)JET_err.Success; +#endif // MANAGEDESENT_ON_WSA + } + + /// + /// Terminate an instance that was created with or + /// . + /// + /// The instance to terminate. + /// Termination options. + /// An error or warning. + public int JetTerm2(JET_INSTANCE instance, TermGrbit grbit) + { + TraceFunctionCall(); + this.callbackWrappers.Collect(); + if (!instance.IsInvalid) + { + return Err(NativeMethods.JetTerm2(instance.Value, (uint)grbit)); + } + + return (int)JET_err.Success; + } + + /// + /// Sets database configuration options. + /// + /// + /// The instance to set the option on or + /// to set the option on all instances. + /// + /// The session to use. + /// The parameter to set. + /// The value of the parameter to set, if the parameter is an integer type. + /// The value of the parameter to set, if the parameter is a string type. + /// An error or warning. + public int JetSetSystemParameter(JET_INSTANCE instance, JET_SESID sesid, JET_param paramid, IntPtr paramValue, string paramString) + { + TraceFunctionCall(); + unsafe + { + IntPtr* pinstance = (IntPtr.Zero == instance.Value) ? null : &instance.Value; + if (this.Capabilities.SupportsUnicodePaths) + { + return Err(NativeMethods.JetSetSystemParameterW(pinstance, sesid.Value, (uint)paramid, paramValue, paramString)); + } + +#if MANAGEDESENT_ON_WSA + return Err((int)JET_err.FeatureNotAvailable); +#else + return Err(NativeMethods.JetSetSystemParameter(pinstance, sesid.Value, (uint)paramid, paramValue, paramString)); +#endif // MANAGEDESENT_ON_WSA + } + } + + /// + /// Sets database configuration options. This overload is used when the + /// parameter being set is of type JET_CALLBACK. + /// + /// + /// The instance to set the option on or + /// to set the option on all instances. + /// + /// The session to use. + /// The parameter to set. + /// The value of the parameter to set. + /// The value of the string parameter to set. + /// An error or warning. + public int JetSetSystemParameter(JET_INSTANCE instance, JET_SESID sesid, JET_param paramid, JET_CALLBACK paramValue, string paramString) + { + TraceFunctionCall(); + + unsafe + { + // We are interested in the callback, not the string so we always use the ASCII API. + IntPtr* pinstance = (IntPtr.Zero == instance.Value) ? null : &instance.Value; + + if (null == paramValue) + { + return + Err( +#if MANAGEDESENT_ON_WSA + NativeMethods.JetSetSystemParameterW( + pinstance, + sesid.Value, + (uint)paramid, + IntPtr.Zero, + paramString)); +#else + NativeMethods.JetSetSystemParameter( + pinstance, + sesid.Value, + (uint)paramid, + IntPtr.Zero, + paramString)); +#endif // MANAGEDESENT_ON_WSA + } + + JetCallbackWrapper wrapper = this.callbackWrappers.Add(paramValue); + this.callbackWrappers.Collect(); + IntPtr functionPointer = Marshal.GetFunctionPointerForDelegate(wrapper.NativeCallback); +#if DEBUG + GC.Collect(); +#endif // DEBUG +#if MANAGEDESENT_ON_WSA + return Err( + NativeMethods.JetSetSystemParameterW( + pinstance, + sesid.Value, + (uint)paramid, + functionPointer, + paramString)); +#else + return Err( + NativeMethods.JetSetSystemParameter( + pinstance, + sesid.Value, + (uint)paramid, + functionPointer, + paramString)); +#endif // MANAGEDESENT_ON_WSA + } + } + + /// + /// Gets database configuration options. + /// + /// The instance to retrieve the options from. + /// The session to use. + /// The parameter to get. + /// Returns the value of the parameter, if the value is an integer. + /// Returns the value of the parameter, if the value is a string. + /// The maximum size of the parameter string. + /// An ESENT warning code. + /// + /// passes in the error number in the paramValue, which is why it is + /// a ref parameter and not an out parameter. + /// + /// An error or warning. + public int JetGetSystemParameter(JET_INSTANCE instance, JET_SESID sesid, JET_param paramid, ref IntPtr paramValue, out string paramString, int maxParam) + { + TraceFunctionCall(); + CheckNotNegative(maxParam, "maxParam"); + + uint bytesMax = checked((uint)(this.Capabilities.SupportsUnicodePaths ? maxParam * sizeof(char) : maxParam)); + + var sb = new StringBuilder(maxParam); + int err; + if (this.Capabilities.SupportsUnicodePaths) + { + err = Err(NativeMethods.JetGetSystemParameterW(instance.Value, sesid.Value, (uint)paramid, ref paramValue, sb, bytesMax)); + } + else + { +#if MANAGEDESENT_ON_WSA + err = Err((int)JET_err.FeatureNotAvailable); +#else + err = Err(NativeMethods.JetGetSystemParameter(instance.Value, sesid.Value, (uint)paramid, ref paramValue, sb, bytesMax)); +#endif + } + + paramString = sb.ToString(); + paramString = StringCache.TryToIntern(paramString); + return err; + } + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + /// + /// Retrieves the version of the database engine. + /// + /// The session to use. + /// Returns the version number of the database engine. + /// An error code if the call fails. + public int JetGetVersion(JET_SESID sesid, out uint version) + { + TraceFunctionCall(); + uint nativeVersion; + int err; + + if (0 != this.versionOverride) + { + // We have an explicitly set version + Trace.WriteLineIf( + TraceSwitch.TraceVerbose, string.Format(CultureInfo.InvariantCulture, "JetGetVersion overridden with 0x{0:X}", this.versionOverride)); + nativeVersion = this.versionOverride; + err = 0; + } + else + { + // Get the version from Esent + err = Err(NativeMethods.JetGetVersion(sesid.Value, out nativeVersion)); + } + + version = nativeVersion; + return err; + } +#endif // !MANAGEDESENT_ON_WSA + #endregion + + #region Databases + + /// + /// Creates and attaches a database file. + /// + /// The session to use. + /// The path to the database file to create. + /// The parameter is not used. + /// Returns the dbid of the new database. + /// Database creation options. + /// An error or warning. + public int JetCreateDatabase(JET_SESID sesid, string database, string connect, out JET_DBID dbid, CreateDatabaseGrbit grbit) + { +#if MANAGEDESENT_ON_WSA + return this.JetCreateDatabase2(sesid, database, 0, out dbid, grbit); +#else + TraceFunctionCall(); + CheckNotNull(database, "database"); + + dbid = JET_DBID.Nil; + if (this.Capabilities.SupportsUnicodePaths) + { + return Err(NativeMethods.JetCreateDatabaseW(sesid.Value, database, connect, out dbid.Value, (uint)grbit)); + } + + return Err(NativeMethods.JetCreateDatabase(sesid.Value, database, connect, out dbid.Value, (uint)grbit)); +#endif // MANAGEDESENT_ON_WSA + } + + /// + /// Creates and attaches a database file with a maximum database size specified. + /// . + /// + /// The session to use. + /// The path to the database file to create. + /// + /// The maximum size, in database pages, of the database. Passing 0 means there is + /// no enforced maximum. + /// + /// Returns the dbid of the new database. + /// Database creation options. + /// An error or warning. + public int JetCreateDatabase2(JET_SESID sesid, string database, int maxPages, out JET_DBID dbid, CreateDatabaseGrbit grbit) + { + TraceFunctionCall(); + CheckNotNull(database, "database"); + CheckNotNegative(maxPages, "maxPages"); + + dbid = JET_DBID.Nil; + uint cpgDatabaseSizeMax = checked((uint)maxPages); + if (this.Capabilities.SupportsUnicodePaths) + { + return Err(NativeMethods.JetCreateDatabase2W(sesid.Value, database, cpgDatabaseSizeMax, out dbid.Value, (uint)grbit)); + } + +#if MANAGEDESENT_ON_WSA + return Err((int)JET_err.FeatureNotAvailable); +#else + return Err(NativeMethods.JetCreateDatabase2(sesid.Value, database, cpgDatabaseSizeMax, out dbid.Value, (uint)grbit)); +#endif + } + + /// + /// Attaches a database file for use with a database instance. In order to use the + /// database, it will need to be subsequently opened with . + /// + /// The session to use. + /// The database to attach. + /// Attach options. + /// An error or warning. + public int JetAttachDatabase(JET_SESID sesid, string database, AttachDatabaseGrbit grbit) + { +#if MANAGEDESENT_ON_WSA + return this.JetAttachDatabase2(sesid, database, 0, grbit); +#else + TraceFunctionCall(); + CheckNotNull(database, "database"); + + if (this.Capabilities.SupportsUnicodePaths) + { + return Err(NativeMethods.JetAttachDatabaseW(sesid.Value, database, (uint)grbit)); + } + + return Err(NativeMethods.JetAttachDatabase(sesid.Value, database, (uint)grbit)); +#endif // MANAGEDESENT_ON_WSA + } + + /// + /// Attaches a database file for use with a database instance. In order to use the + /// database, it will need to be subsequently opened with . + /// . + /// + /// The session to use. + /// The database to attach. + /// + /// The maximum size, in database pages, of the database. Passing 0 means there is + /// no enforced maximum. + /// + /// Attach options. + /// An error or warning. + public int JetAttachDatabase2(JET_SESID sesid, string database, int maxPages, AttachDatabaseGrbit grbit) + { + TraceFunctionCall(); + CheckNotNull(database, "database"); + CheckNotNegative(maxPages, "maxPages"); + + if (this.Capabilities.SupportsUnicodePaths) + { + return Err(NativeMethods.JetAttachDatabase2W(sesid.Value, database, checked((uint)maxPages), (uint)grbit)); + } + +#if MANAGEDESENT_ON_WSA + return Err((int)JET_err.FeatureNotAvailable); +#else + return Err(NativeMethods.JetAttachDatabase2(sesid.Value, database, checked((uint)maxPages), (uint)grbit)); +#endif + } + + /// + /// Opens a database previously attached with , + /// for use with a database session. This function can be called multiple times + /// for the same database. + /// + /// The session that is opening the database. + /// The database to open. + /// Reserved for future use. + /// Returns the dbid of the attached database. + /// Open database options. + /// An error or warning. + public int JetOpenDatabase(JET_SESID sesid, string database, string connect, out JET_DBID dbid, OpenDatabaseGrbit grbit) + { + TraceFunctionCall(); + CheckNotNull(database, "database"); + dbid = JET_DBID.Nil; + + if (this.Capabilities.SupportsUnicodePaths) + { + return Err(NativeMethods.JetOpenDatabaseW(sesid.Value, database, connect, out dbid.Value, (uint)grbit)); + } + +#if MANAGEDESENT_ON_WSA + return Err((int)JET_err.FeatureNotAvailable); +#else + return Err(NativeMethods.JetOpenDatabase(sesid.Value, database, connect, out dbid.Value, (uint)grbit)); +#endif + } + + /// + /// Closes a database file that was previously opened with or + /// created with . + /// + /// The session to use. + /// The database to close. + /// Close options. + /// An error or warning. + public int JetCloseDatabase(JET_SESID sesid, JET_DBID dbid, CloseDatabaseGrbit grbit) + { + TraceFunctionCall(); + return Err(NativeMethods.JetCloseDatabase(sesid.Value, dbid.Value, (uint)grbit)); + } + + /// + /// Releases a database file that was previously attached to a database session. + /// + /// The database session to use. + /// The database to detach. + /// An error or warning. + public int JetDetachDatabase(JET_SESID sesid, string database) + { + TraceFunctionCall(); + +#if MANAGEDESENT_ON_WSA + return this.JetDetachDatabase2(sesid, database, DetachDatabaseGrbit.None); +#else + if (this.Capabilities.SupportsUnicodePaths) + { + return Err(NativeMethods.JetDetachDatabaseW(sesid.Value, database)); + } + + return Err(NativeMethods.JetDetachDatabase(sesid.Value, database)); +#endif // MANAGEDESENT_ON_WSA + } + + /// + /// Releases a database file that was previously attached to a database session. + /// + /// The database session to use. + /// The database to detach. + /// Detach options. + /// An error or warning. + public int JetDetachDatabase2(JET_SESID sesid, string database, DetachDatabaseGrbit grbit) + { + TraceFunctionCall(); + + if (this.Capabilities.SupportsUnicodePaths) + { + return Err(NativeMethods.JetDetachDatabase2W(sesid.Value, database, (uint)grbit)); + } + +#if MANAGEDESENT_ON_WSA + return Err((int)JET_err.FeatureNotAvailable); +#else + return Err(NativeMethods.JetDetachDatabase2(sesid.Value, database, (uint)grbit)); +#endif + } + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + /// + /// Makes a copy of an existing database. The copy is compacted to a + /// state optimal for usage. Data in the copied data will be packed + /// according to the measures chosen for the indexes at index create. + /// In this way, compacted data may be stored as densely as possible. + /// Alternatively, compacted data may reserve space for subsequent + /// record growth or index insertions. + /// + /// The session to use for the call. + /// The source database that will be compacted. + /// The name to use for the compacted database. + /// + /// A callback function that can be called periodically through the + /// database compact operation to report progress. + /// + /// + /// This parameter is ignored and should be null. + /// + /// Compact options. + /// An error code. + public int JetCompact( + JET_SESID sesid, + string sourceDatabase, + string destinationDatabase, + JET_PFNSTATUS statusCallback, + object ignored, + CompactGrbit grbit) + { + TraceFunctionCall(); + CheckNotNull(sourceDatabase, "sourceDatabase"); + CheckNotNull(destinationDatabase, "destinationDatabase"); + if (null != ignored) + { + throw new ArgumentException("must be null", "ignored"); + } + + var callbackWrapper = new StatusCallbackWrapper(statusCallback); + IntPtr functionPointer = (null == statusCallback) ? IntPtr.Zero : Marshal.GetFunctionPointerForDelegate(callbackWrapper.NativeCallback); +#if DEBUG + GC.Collect(); +#endif + + int err; + if (this.Capabilities.SupportsUnicodePaths) + { + err = Err(NativeMethods.JetCompactW( + sesid.Value, sourceDatabase, destinationDatabase, functionPointer, IntPtr.Zero, (uint)grbit)); + } + else + { + err = Err(NativeMethods.JetCompact( + sesid.Value, sourceDatabase, destinationDatabase, functionPointer, IntPtr.Zero, (uint)grbit)); + } + + callbackWrapper.ThrowSavedException(); + return err; + } + + /// + /// Extends the size of a database that is currently open. + /// + /// The session to use. + /// The database to grow. + /// The desired size of the database, in pages. + /// + /// The size of the database, in pages, after the call. + /// + /// An error if the call fails. + public int JetGrowDatabase(JET_SESID sesid, JET_DBID dbid, int desiredPages, out int actualPages) + { + TraceFunctionCall(); + CheckNotNegative(desiredPages, "desiredPages"); + + uint actualPagesNative = 0; + int err = Err(NativeMethods.JetGrowDatabase( + sesid.Value, dbid.Value, checked((uint)desiredPages), out actualPagesNative)); + actualPages = checked((int)actualPagesNative); + return err; + } + + /// + /// Extends the size of a database that is currently open. + /// + /// The session to use. + /// The name of the database to grow. + /// The desired size of the database, in pages. + /// + /// The size of the database, in pages, after the call. + /// + /// An error if the call fails. + public int JetSetDatabaseSize(JET_SESID sesid, string database, int desiredPages, out int actualPages) + { + TraceFunctionCall(); + CheckNotNegative(desiredPages, "desiredPages"); + CheckNotNull(database, "database"); + + uint actualPagesNative = 0; + int err; + if (this.Capabilities.SupportsUnicodePaths) + { + err = Err(NativeMethods.JetSetDatabaseSizeW( + sesid.Value, database, checked((uint)desiredPages), out actualPagesNative)); + } + else + { + err = Err(NativeMethods.JetSetDatabaseSize( + sesid.Value, database, checked((uint)desiredPages), out actualPagesNative)); + } + + actualPages = checked((int)actualPagesNative); + return err; + } +#endif // !MANAGEDESENT_ON_WSA + + /// + /// Retrieves certain information about the given database. + /// + /// The session to use. + /// The database identifier. + /// The value to be retrieved. + /// The specific data to retrieve. + /// An error if the call fails. + public int JetGetDatabaseInfo( + JET_SESID sesid, + JET_DBID dbid, + out int value, + JET_DbInfo infoLevel) + { + TraceFunctionCall(); +#if MANAGEDESENT_ON_WSA + return Err(NativeMethods.JetGetDatabaseInfoW(sesid.Value, dbid.Value, out value, sizeof(int), (uint)infoLevel)); +#else + return Err(NativeMethods.JetGetDatabaseInfo(sesid.Value, dbid.Value, out value, sizeof(int), (uint)infoLevel)); +#endif + } + + /// + /// Retrieves certain information about the given database. + /// + /// The session to use. + /// The database identifier. + /// The value to be retrieved. + /// The specific data to retrieve. + /// An error if the call fails. + public int JetGetDatabaseInfo( + JET_SESID sesid, + JET_DBID dbid, + out JET_DBINFOMISC dbinfomisc, + JET_DbInfo infoLevel) + { + TraceFunctionCall(); + int err = (int)JET_err.Success; + dbinfomisc = null; + + bool notYetPublishedSupported = false; + this.NotYetPublishedGetDbinfomisc(sesid, dbid, ref dbinfomisc, infoLevel, ref notYetPublishedSupported, ref err); + + if (notYetPublishedSupported) + { + // The not-yet-published function in the other file set the 'ref' parameters. + } + else if (this.Capabilities.SupportsWindows7Features) + { + NATIVE_DBINFOMISC4 native; + err = Err(NativeMethods.JetGetDatabaseInfoW( + sesid.Value, + dbid.Value, + out native, + (uint)Marshal.SizeOf(typeof(NATIVE_DBINFOMISC4)), + (uint)infoLevel)); + + dbinfomisc = new JET_DBINFOMISC(); + dbinfomisc.SetFromNativeDbinfoMisc(ref native); + } +#if MANAGEDESENT_ON_WSA + else + { + var native = new NATIVE_DBINFOMISC4(); + err = Err((int)JET_err.FeatureNotAvailable); + + dbinfomisc = new JET_DBINFOMISC(); + dbinfomisc.SetFromNativeDbinfoMisc(ref native); + } +#else + else if (this.Capabilities.SupportsVistaFeatures) + { + NATIVE_DBINFOMISC native; + err = Err(NativeMethods.JetGetDatabaseInfoW( + sesid.Value, + dbid.Value, + out native, + (uint)Marshal.SizeOf(typeof(NATIVE_DBINFOMISC)), + (uint)infoLevel)); + + dbinfomisc = new JET_DBINFOMISC(); + dbinfomisc.SetFromNativeDbinfoMisc(ref native); + } + else + { + NATIVE_DBINFOMISC native; + err = Err(NativeMethods.JetGetDatabaseInfo( + sesid.Value, + dbid.Value, + out native, + (uint)Marshal.SizeOf(typeof(NATIVE_DBINFOMISC)), + (uint)infoLevel)); + dbinfomisc = new JET_DBINFOMISC(); + dbinfomisc.SetFromNativeDbinfoMisc(ref native); + } +#endif // MANAGEDESENT_ON_WSA + + return err; + } + + /// + /// Retrieves certain information about the given database. + /// + /// The session to use. + /// The database identifier. + /// The value to be retrieved. + /// The specific data to retrieve. + /// An error if the call fails. + public int JetGetDatabaseInfo( + JET_SESID sesid, + JET_DBID dbid, + out string value, + JET_DbInfo infoLevel) + { + TraceFunctionCall(); + int err; + + const int MaxCharacters = 1024; + StringBuilder sb = new StringBuilder(MaxCharacters); + if (this.Capabilities.SupportsUnicodePaths) + { + err = Err(NativeMethods.JetGetDatabaseInfoW(sesid.Value, dbid.Value, sb, MaxCharacters, (uint)infoLevel)); + } + else + { +#if MANAGEDESENT_ON_WSA + err = Err((int)JET_err.FeatureNotAvailable); +#else + err = Err(NativeMethods.JetGetDatabaseInfo(sesid.Value, dbid.Value, sb, MaxCharacters, (uint)infoLevel)); +#endif + } + + value = sb.ToString(); + return err; + } + + /// + /// Retrieves certain information about the given database. + /// + /// The file name of the database. + /// The value to be retrieved. + /// The specific data to retrieve. + /// An error if the call fails. + public int JetGetDatabaseFileInfo( + string databaseName, + out int value, + JET_DbInfo infoLevel) + { + TraceFunctionCall(); + int err; + + if (this.Capabilities.SupportsUnicodePaths) + { + err = Err(NativeMethods.JetGetDatabaseFileInfoW(databaseName, out value, sizeof(int), (uint)infoLevel)); + } + else + { +#if MANAGEDESENT_ON_WSA + err = Err((int)JET_err.FeatureNotAvailable); + value = 0; +#else + err = Err(NativeMethods.JetGetDatabaseFileInfo(databaseName, out value, sizeof(int), (uint)infoLevel)); +#endif + } + + return err; + } + + /// + /// Retrieves certain information about the given database. + /// + /// The file name of the database. + /// The value to be retrieved. + /// The specific data to retrieve. + /// An error if the call fails. + public int JetGetDatabaseFileInfo( + string databaseName, + out long value, + JET_DbInfo infoLevel) + { + TraceFunctionCall(); + int err; + + if (this.Capabilities.SupportsUnicodePaths) + { + err = Err(NativeMethods.JetGetDatabaseFileInfoW(databaseName, out value, sizeof(long), (uint)infoLevel)); + } + else + { +#if MANAGEDESENT_ON_WSA + err = Err((int)JET_err.FeatureNotAvailable); + value = 0; +#else + err = Err(NativeMethods.JetGetDatabaseFileInfo(databaseName, out value, sizeof(long), (uint)infoLevel)); +#endif + } + + return err; + } + + /// + /// Retrieves certain information about the given database. + /// + /// The file name of the database. + /// The value to be retrieved. + /// The specific data to retrieve. + /// An error if the call fails. + public int JetGetDatabaseFileInfo( + string databaseName, + out JET_DBINFOMISC dbinfomisc, + JET_DbInfo infoLevel) + { + TraceFunctionCall(); + int err = (int)JET_err.Success; + dbinfomisc = null; + + bool notYetPublishedSupported = false; + this.NotYetPublishedGetDbinfomisc(databaseName, ref dbinfomisc, infoLevel, ref notYetPublishedSupported, ref err); + + if (notYetPublishedSupported) + { + // The not-yet-published function in the other file set the 'ref' parameters. + } + else if (this.Capabilities.SupportsWindows7Features) + { + // Windows7 -> Unicode path support + NATIVE_DBINFOMISC4 native; + err = Err(NativeMethods.JetGetDatabaseFileInfoW(databaseName, out native, (uint)Marshal.SizeOf(typeof(NATIVE_DBINFOMISC4)), (uint)infoLevel)); + + dbinfomisc = new JET_DBINFOMISC(); + dbinfomisc.SetFromNativeDbinfoMisc(ref native); + } +#if MANAGEDESENT_ON_WSA + else + { + err = Err((int)JET_err.FeatureNotAvailable); + var native = new NATIVE_DBINFOMISC4(); + dbinfomisc = new JET_DBINFOMISC(); + dbinfomisc.SetFromNativeDbinfoMisc(ref native); + } +#else + else + { + NATIVE_DBINFOMISC native; + if (this.Capabilities.SupportsUnicodePaths) + { + err = Err(NativeMethods.JetGetDatabaseFileInfoW(databaseName, out native, (uint)Marshal.SizeOf(typeof(NATIVE_DBINFOMISC)), (uint)infoLevel)); + } + else + { + err = Err(NativeMethods.JetGetDatabaseFileInfo(databaseName, out native, (uint)Marshal.SizeOf(typeof(NATIVE_DBINFOMISC)), (uint)infoLevel)); + } + + dbinfomisc = new JET_DBINFOMISC(); + dbinfomisc.SetFromNativeDbinfoMisc(ref native); + } +#endif // MANAGEDESENT_ON_WSA + + return err; + } + + #endregion + + #region Backup/Restore + +#if !MANAGEDESENT_ON_WSA + /// + /// Performs a streaming backup of an instance, including all the attached + /// databases, to a directory. With multiple backup methods supported by + /// the engine, this is the simplest and most encapsulated function. + /// + /// The instance to backup. + /// + /// The directory where the backup is to be stored. If the backup path is + /// null to use the function will truncate the logs, if possible. + /// + /// Backup options. + /// + /// Optional status notification callback. + /// + /// An error code. + public int JetBackupInstance( + JET_INSTANCE instance, string destination, BackupGrbit grbit, JET_PFNSTATUS statusCallback) + { + TraceFunctionCall(); + + var callbackWrapper = new StatusCallbackWrapper(statusCallback); + IntPtr functionPointer = (null == statusCallback) ? IntPtr.Zero : Marshal.GetFunctionPointerForDelegate(callbackWrapper.NativeCallback); +#if DEBUG + GC.Collect(); +#endif + int err; + if (this.Capabilities.SupportsUnicodePaths) + { + err = Err(NativeMethods.JetBackupInstanceW(instance.Value, destination, (uint)grbit, functionPointer)); + } + else + { + err = Err(NativeMethods.JetBackupInstance(instance.Value, destination, (uint)grbit, functionPointer)); + } + + callbackWrapper.ThrowSavedException(); + return err; + } + + /// + /// Restores and recovers a streaming backup of an instance including all + /// the attached databases. It is designed to work with a backup created + /// with the function. This is the + /// simplest and most encapsulated restore function. + /// + /// The instance to use. + /// + /// Location of the backup. The backup should have been created with + /// . + /// + /// + /// Name of the folder where the database files from the backup set will + /// be copied and recovered. If this is set to null, the database files + /// will be copied and recovered to their original location. + /// + /// + /// Optional status notification callback. + /// + /// An error code. + public int JetRestoreInstance(JET_INSTANCE instance, string source, string destination, JET_PFNSTATUS statusCallback) + { + TraceFunctionCall(); + CheckNotNull(source, "source"); + + var callbackWrapper = new StatusCallbackWrapper(statusCallback); + IntPtr functionPointer = (null == statusCallback) ? IntPtr.Zero : Marshal.GetFunctionPointerForDelegate(callbackWrapper.NativeCallback); +#if DEBUG + GC.Collect(); +#endif + + int err; + if (this.Capabilities.SupportsUnicodePaths) + { + err = Err(NativeMethods.JetRestoreInstanceW(instance.Value, source, destination, functionPointer)); + } + else + { + err = Err(NativeMethods.JetRestoreInstance(instance.Value, source, destination, functionPointer)); + } + + callbackWrapper.ThrowSavedException(); + return err; + } +#endif // !MANAGEDESENT_ON_WSA + #endregion + + #region Snapshot Backup + +#if !MANAGEDESENT_ON_WSA + + /// + /// Begins the preparations for a snapshot session. A snapshot session + /// is a short time interval in which the engine does not issue any + /// write IOs to disk, so that the engine can participate in a volume + /// snapshot session (when driven by a snapshot writer). + /// + /// Returns the ID of the snapshot session. + /// Snapshot options. + /// An error code if the call fails. + public int JetOSSnapshotPrepare(out JET_OSSNAPID snapid, SnapshotPrepareGrbit grbit) + { + TraceFunctionCall(); + snapid = JET_OSSNAPID.Nil; + return Err(NativeMethods.JetOSSnapshotPrepare(out snapid.Value, (uint)grbit)); + } + + /// + /// 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. + /// An error code if the call fails. + public int JetOSSnapshotPrepareInstance(JET_OSSNAPID snapshot, JET_INSTANCE instance, SnapshotPrepareInstanceGrbit grbit) + { + TraceFunctionCall(); + this.CheckSupportsVistaFeatures("JetOSSnapshotPrepareInstance"); + return Err(NativeMethods.JetOSSnapshotPrepareInstance(snapshot.Value, instance.Value, (uint)grbit)); + } + + /// + /// Starts a snapshot. While the snapshot is in progress, no + /// write-to-disk activity by the engine can take place. + /// + /// The snapshot session. + /// + /// Returns the number of instances that are part of the snapshot session. + /// + /// + /// Returns information about the instances that are part of the snapshot session. + /// + /// + /// Snapshot freeze options. + /// + /// An error code if the call fails. + public int JetOSSnapshotFreeze(JET_OSSNAPID snapshot, out int numInstances, out JET_INSTANCE_INFO[] instances, SnapshotFreezeGrbit grbit) + { + TraceFunctionCall(); + + unsafe + { + uint nativeNumInstance = 0; + NATIVE_INSTANCE_INFO* nativeInstanceInfos = null; + int err; + if (this.Capabilities.SupportsUnicodePaths) + { + err = NativeMethods.JetOSSnapshotFreezeW(snapshot.Value, out nativeNumInstance, out nativeInstanceInfos, (uint)grbit); + instances = this.ConvertInstanceInfosUnicode(nativeNumInstance, nativeInstanceInfos); + } + else + { + err = NativeMethods.JetOSSnapshotFreeze(snapshot.Value, out nativeNumInstance, out nativeInstanceInfos, (uint)grbit); + instances = this.ConvertInstanceInfosAscii(nativeNumInstance, nativeInstanceInfos); + } + + numInstances = instances.Length; + + return Err(err); + } + } + + /// + /// 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. + /// An error code if the call fails. + public int JetOSSnapshotGetFreezeInfo( + JET_OSSNAPID snapshot, + out int numInstances, + out JET_INSTANCE_INFO[] instances, + SnapshotGetFreezeInfoGrbit grbit) + { + TraceFunctionCall(); + this.CheckSupportsVistaFeatures("JetOSSnapshotGetFreezeInfo"); + Debug.Assert(this.Capabilities.SupportsUnicodePaths, "JetOSSnapshotGetFreezeInfo is always Unicode"); + + unsafe + { + uint nativeNumInstance = 0; + NATIVE_INSTANCE_INFO* nativeInstanceInfos = null; + int err = NativeMethods.JetOSSnapshotGetFreezeInfoW(snapshot.Value, out nativeNumInstance, out nativeInstanceInfos, (uint)grbit); + instances = this.ConvertInstanceInfosUnicode(nativeNumInstance, nativeInstanceInfos); + numInstances = instances.Length; + + return Err(err); + } + } + + /// + /// Notifies the engine that it can resume normal IO operations after a + /// freeze period and a successful snapshot. + /// + /// The ID of the snapshot. + /// Thaw options. + /// An error code if the call fails. + public int JetOSSnapshotThaw(JET_OSSNAPID snapid, SnapshotThawGrbit grbit) + { + TraceFunctionCall(); + return Err(NativeMethods.JetOSSnapshotThaw(snapid.Value, (uint)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. + /// An error code if the call fails. + public int JetOSSnapshotTruncateLog(JET_OSSNAPID snapshot, SnapshotTruncateLogGrbit grbit) + { + TraceFunctionCall(); + this.CheckSupportsVistaFeatures("JetOSSnapshotTruncateLog"); + return Err(NativeMethods.JetOSSnapshotTruncateLog(snapshot.Value, (uint)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. + /// An error code if the call fails. + public int JetOSSnapshotTruncateLogInstance(JET_OSSNAPID snapshot, JET_INSTANCE instance, SnapshotTruncateLogGrbit grbit) + { + TraceFunctionCall(); + this.CheckSupportsVistaFeatures("JetOSSnapshotTruncateLogInstance"); + return Err(NativeMethods.JetOSSnapshotTruncateLogInstance(snapshot.Value, instance.Value, (uint)grbit)); + } + + /// + /// Notifies the engine that the snapshot session finished. + /// + /// The identifier of the snapshot session. + /// Snapshot end options. + /// An error code. + public int JetOSSnapshotEnd(JET_OSSNAPID snapid, SnapshotEndGrbit grbit) + { + TraceFunctionCall(); + this.CheckSupportsVistaFeatures("JetOSSnapshotEnd"); + return Err(NativeMethods.JetOSSnapshotEnd(snapid.Value, (uint)grbit)); + } + + /// + /// Notifies the engine that it can resume normal IO operations after a + /// freeze period ended with a failed snapshot. + /// + /// Identifier of the snapshot session. + /// Options for this call. + /// An error code. + public int JetOSSnapshotAbort(JET_OSSNAPID snapid, SnapshotAbortGrbit grbit) + { + TraceFunctionCall(); + this.CheckSupportsServer2003Features("JetOSSnapshotAbort"); + return Err(NativeMethods.JetOSSnapshotAbort(snapid.Value, (uint)grbit)); + } +#endif // !MANAGEDESENT_ON_WSA + #endregion + + #region Streaming Backup/Restore +#if !MANAGEDESENT_ON_WSA + + /// + /// Initiates an external backup while the engine and database are online and active. + /// + /// The instance prepare for backup. + /// Backup options. + /// An error code if the call fails. + public int JetBeginExternalBackupInstance(JET_INSTANCE instance, BeginExternalBackupGrbit grbit) + { + TraceFunctionCall(); + return Err(NativeMethods.JetBeginExternalBackupInstance(instance.Value, (uint)grbit)); + } + + /// + /// Closes a file that was opened with JetOpenFileInstance after the + /// data from that file has been extracted using JetReadFileInstance. + /// + /// The instance to use. + /// The handle to close. + /// An error code if the call fails. + public int JetCloseFileInstance(JET_INSTANCE instance, JET_HANDLE handle) + { + TraceFunctionCall(); + return Err(NativeMethods.JetCloseFileInstance(instance.Value, handle.Value)); + } + + /// + /// Ends an external backup session. This API is the last API in a series + /// of APIs that must be called to execute a successful online + /// (non-VSS based) backup. + /// + /// The instance to end the backup for. + /// An error code if the call fails. + public int JetEndExternalBackupInstance(JET_INSTANCE instance) + { + TraceFunctionCall(); + return Err(NativeMethods.JetEndExternalBackupInstance(instance.Value)); + } + + /// + /// Ends an external backup session. This API is the last API in a series + /// of APIs that must be called to execute a successful online + /// (non-VSS based) backup. + /// + /// The instance to end the backup for. + /// Options that specify how the backup ended. + /// An error code if the call fails. + public int JetEndExternalBackupInstance2(JET_INSTANCE instance, EndExternalBackupGrbit grbit) + { + TraceFunctionCall(); + return Err(NativeMethods.JetEndExternalBackupInstance2(instance.Value, (uint)grbit)); + } + + /// + /// Used during a backup initiated by + /// to query an instance for the names of database files that should become part of + /// the backup file set. Only databases that are currently attached to the instance + /// using will be considered. These files may + /// subsequently be opened using and read + /// using . + /// + /// + /// It is important to note that this API does not return an error or warning if + /// the output buffer is too small to accept the full list of files that should be + /// part of the backup file set. + /// + /// The instance to get the information for. + /// + /// Returns a list of null terminated strings describing the set of database files + /// that should be a part of the backup file set. The list of strings returned in + /// this buffer is in the same format as a multi-string used by the registry. Each + /// null-terminated string is returned in sequence followed by a final null terminator. + /// + /// + /// Maximum number of characters to retrieve. + /// + /// + /// Actual size of the file list. If this is greater than maxChars + /// then the list has been truncated. + /// + /// An error code if the call fails. + public int JetGetAttachInfoInstance(JET_INSTANCE instance, out string files, int maxChars, out int actualChars) + { + TraceFunctionCall(); + CheckNotNegative(maxChars, "maxChars"); + + // These strings have embedded nulls so we can't use a StringBuilder. + int err; + if (this.Capabilities.SupportsUnicodePaths) + { + uint bytesMax = checked((uint)maxChars) * sizeof(char); + byte[] szz = new byte[bytesMax]; + uint bytesActual = 0; + err = Err(NativeMethods.JetGetAttachInfoInstanceW(instance.Value, szz, bytesMax, out bytesActual)); + actualChars = checked((int)bytesActual) / sizeof(char); + files = Encoding.Unicode.GetString(szz, 0, Math.Min(szz.Length, (int)bytesActual)); + } + else + { + uint bytesMax = checked((uint)maxChars); + byte[] szz = new byte[bytesMax]; + uint bytesActual = 0; + err = Err(NativeMethods.JetGetAttachInfoInstance(instance.Value, szz, bytesMax, out bytesActual)); + actualChars = checked((int)bytesActual); + files = LibraryHelpers.EncodingASCII.GetString(szz, 0, Math.Min(szz.Length, (int)bytesActual)); + } + + return err; + } + + /// + /// Used during a backup initiated by + /// to query an instance for the names of database patch files and logfiles that + /// should become part of the backup file set. These files may subsequently be + /// opened using and read using . + /// + /// + /// It is important to note that this API does not return an error or warning if + /// the output buffer is too small to accept the full list of files that should be + /// part of the backup file set. + /// + /// The instance to get the information for. + /// + /// Returns a list of null terminated strings describing the set of database patch files + /// and log files that should be a part of the backup file set. The list of strings returned in + /// this buffer is in the same format as a multi-string used by the registry. Each + /// null-terminated string is returned in sequence followed by a final null terminator. + /// + /// + /// Maximum number of characters to retrieve. + /// + /// + /// Actual size of the file list. If this is greater than maxChars + /// then the list has been truncated. + /// + /// An error code if the call fails. + public int JetGetLogInfoInstance(JET_INSTANCE instance, out string files, int maxChars, out int actualChars) + { + TraceFunctionCall(); + CheckNotNegative(maxChars, "maxChars"); + + // These strings have embedded nulls so we can't use a StringBuilder. + int err; + if (this.Capabilities.SupportsUnicodePaths) + { + uint bytesMax = checked((uint)maxChars) * sizeof(char); + byte[] szz = new byte[bytesMax]; + uint bytesActual = 0; + err = Err(NativeMethods.JetGetLogInfoInstanceW(instance.Value, szz, bytesMax, out bytesActual)); + actualChars = checked((int)bytesActual) / sizeof(char); + files = Encoding.Unicode.GetString(szz, 0, Math.Min(szz.Length, (int)bytesActual)); + } + else + { + uint bytesMax = checked((uint)maxChars); + byte[] szz = new byte[bytesMax]; + uint bytesActual = 0; + err = Err(NativeMethods.JetGetLogInfoInstance(instance.Value, szz, bytesMax, out bytesActual)); + actualChars = checked((int)bytesActual); + files = LibraryHelpers.EncodingASCII.GetString(szz, 0, Math.Min(szz.Length, (int)bytesActual)); + } + + return err; + } + + /// + /// Used during a backup initiated by + /// to query an instance for the names of the transaction log files that can be safely + /// deleted after the backup has successfully completed. + /// + /// + /// It is important to note that this API does not return an error or warning if + /// the output buffer is too small to accept the full list of files that should be + /// part of the backup file set. + /// + /// The instance to get the information for. + /// + /// Returns a list of null terminated strings describing the set of database log files + /// that can be safely deleted after the backup completes. The list of strings returned in + /// this buffer is in the same format as a multi-string used by the registry. Each + /// null-terminated string is returned in sequence followed by a final null terminator. + /// + /// + /// Maximum number of characters to retrieve. + /// + /// + /// Actual size of the file list. If this is greater than maxChars + /// then the list has been truncated. + /// + /// An error code if the call fails. + public int JetGetTruncateLogInfoInstance(JET_INSTANCE instance, out string files, int maxChars, out int actualChars) + { + TraceFunctionCall(); + CheckNotNegative(maxChars, "maxChars"); + + // These strings have embedded nulls so we can't use a StringBuilder. + int err; + if (this.Capabilities.SupportsUnicodePaths) + { + uint bytesMax = checked((uint)maxChars) * sizeof(char); + byte[] szz = new byte[bytesMax]; + uint bytesActual = 0; + err = Err(NativeMethods.JetGetTruncateLogInfoInstanceW(instance.Value, szz, bytesMax, out bytesActual)); + actualChars = checked((int)bytesActual) / sizeof(char); + files = Encoding.Unicode.GetString(szz, 0, Math.Min(szz.Length, (int)bytesActual)); + } + else + { + uint bytesMax = checked((uint)maxChars); + byte[] szz = new byte[bytesMax]; + uint bytesActual = 0; + err = Err(NativeMethods.JetGetTruncateLogInfoInstance(instance.Value, szz, bytesMax, out bytesActual)); + actualChars = checked((int)bytesActual); + files = LibraryHelpers.EncodingASCII.GetString(szz, 0, Math.Min(szz.Length, (int)bytesActual)); + } + + return err; + } + + /// + /// Opens an attached database, database patch file, or transaction log + /// file of an active instance for the purpose of performing a streaming + /// fuzzy backup. The data from these files can subsequently be read + /// through the returned handle using JetReadFileInstance. The returned + /// handle must be closed using JetCloseFileInstance. An external backup + /// of the instance must have been previously initiated using + /// JetBeginExternalBackupInstance. + /// + /// The instance to use. + /// The file to open. + /// Returns a handle to the file. + /// Returns the least significant 32 bits of the file size. + /// Returns the most significant 32 bits of the file size. + /// An error code if the call fails. + public int JetOpenFileInstance(JET_INSTANCE instance, string file, out JET_HANDLE handle, out long fileSizeLow, out long fileSizeHigh) + { + TraceFunctionCall(); + CheckNotNull(file, "file"); + handle = JET_HANDLE.Nil; + int err; + uint nativeFileSizeLow; + uint nativeFileSizeHigh; + if (this.Capabilities.SupportsUnicodePaths) + { + err = Err(NativeMethods.JetOpenFileInstanceW( + instance.Value, file, out handle.Value, out nativeFileSizeLow, out nativeFileSizeHigh)); + } + else + { + err = Err(NativeMethods.JetOpenFileInstance( + instance.Value, file, out handle.Value, out nativeFileSizeLow, out nativeFileSizeHigh)); + } + + fileSizeLow = nativeFileSizeLow; + fileSizeHigh = nativeFileSizeHigh; + return err; + } + + /// + /// Retrieves the contents of a file opened with . + /// + /// The instance to use. + /// The file to read from. + /// The buffer to read into. + /// The size of the buffer. + /// Returns the amount of data read into the buffer. + /// An error code if the call fails. + public int JetReadFileInstance(JET_INSTANCE instance, JET_HANDLE file, byte[] buffer, int bufferSize, out int bytesRead) + { + TraceFunctionCall(); + CheckNotNull(buffer, "buffer"); + CheckDataSize(buffer, bufferSize, "bufferSize"); + + // ESENT requires that the buffer be aligned on a page allocation boundary. + // VirtualAlloc is the API used to do that, so we use P/Invoke to call it. + IntPtr alignedBuffer = Win32.NativeMethods.VirtualAlloc( + IntPtr.Zero, + (UIntPtr)bufferSize, + (uint)(Win32.AllocationType.MEM_COMMIT | Win32.AllocationType.MEM_RESERVE), + (uint)Win32.MemoryProtection.PAGE_READWRITE); + Win32.NativeMethods.ThrowExceptionOnNull(alignedBuffer, "VirtualAlloc"); + + try + { + uint nativeBytesRead = 0; + int err = + Err( + NativeMethods.JetReadFileInstance( + instance.Value, file.Value, alignedBuffer, checked((uint)bufferSize), out nativeBytesRead)); + bytesRead = checked((int)nativeBytesRead); + + // Copy the memory out of the aligned buffer into the user buffer. + Marshal.Copy(alignedBuffer, buffer, 0, bytesRead); + return err; + } + finally + { + bool freeSucceded = Win32.NativeMethods.VirtualFree(alignedBuffer, UIntPtr.Zero, (uint)Win32.FreeType.MEM_RELEASE); + Win32.NativeMethods.ThrowExceptionOnFailure(freeSucceded, "VirtualFree"); + } + } + + /// + /// Used during a backup initiated by JetBeginExternalBackup to delete + /// any transaction log files that will no longer be needed once the + /// current backup completes successfully. + /// + /// The instance to truncate. + /// An error code if the call fails. + public int JetTruncateLogInstance(JET_INSTANCE instance) + { + TraceFunctionCall(); + return Err(NativeMethods.JetTruncateLogInstance(instance.Value)); + } +#endif // !MANAGEDESENT_ON_WSA + #endregion + + #region Sessions + + /// + /// Initialize a new ESENT session. + /// + /// The initialized instance to create the session in. + /// Returns the created session. + /// The parameter is not used. + /// The parameter is not used. + /// An error if the call fails. + public int JetBeginSession(JET_INSTANCE instance, out JET_SESID sesid, string username, string password) + { + TraceFunctionCall(); + sesid = JET_SESID.Nil; +#if MANAGEDESENT_ON_WSA + return Err(NativeMethods.JetBeginSessionW(instance.Value, out sesid.Value, username, password)); +#else + return Err(NativeMethods.JetBeginSession(instance.Value, out sesid.Value, username, password)); +#endif + } + + /// + /// Associates a session with the current thread using the given context + /// handle. This association overrides the default engine requirement + /// that a transaction for a given session must occur entirely on the + /// same thread. + /// + /// The session to set the context on. + /// The context to set. + /// An error if the call fails. + public int JetSetSessionContext(JET_SESID sesid, IntPtr context) + { + TraceFunctionCall(); + return Err(NativeMethods.JetSetSessionContext(sesid.Value, context)); + } + + /// + /// Disassociates a session from the current thread. This should be + /// used in conjunction with JetSetSessionContext. + /// + /// The session to use. + /// An error if the call fails. + public int JetResetSessionContext(JET_SESID sesid) + { + TraceFunctionCall(); + return Err(NativeMethods.JetResetSessionContext(sesid.Value)); + } + + /// + /// Ends a session. + /// + /// The session to end. + /// This parameter is not used. + /// An error if the call fails. + public int JetEndSession(JET_SESID sesid, EndSessionGrbit grbit) + { + TraceFunctionCall(); + return Err(NativeMethods.JetEndSession(sesid.Value, (uint)grbit)); + } + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + /// + /// Initialize a new ESE session in the same instance as the given sesid. + /// + /// The session to duplicate. + /// Returns the new session. + /// An error if the call fails. + public int JetDupSession(JET_SESID sesid, out JET_SESID newSesid) + { + TraceFunctionCall(); + newSesid = JET_SESID.Nil; + return Err(NativeMethods.JetDupSession(sesid.Value, out newSesid.Value)); + } +#endif // !MANAGEDESENT_ON_WSA + + /// + /// 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.. + /// + /// An error code if the operation fails. + public int JetGetThreadStats(out JET_THREADSTATS threadstats) + { + TraceFunctionCall(); + this.CheckSupportsVistaFeatures("JetGetThreadStats"); + + // To speed up the interop we use unsafe code to avoid initializing + // the out parameter. We just call the interop code. + unsafe + { + fixed (JET_THREADSTATS* rawJetThreadstats = &threadstats) + { + return Err(NativeMethods.JetGetThreadStats(rawJetThreadstats, checked((uint)JET_THREADSTATS.Size))); + } + } + } + + #endregion + + #region Tables + + /// + /// Opens a cursor on a previously created table. + /// + /// The database session to use. + /// The database to open the table in. + /// The name of the table to open. + /// The parameter is not used. + /// The parameter is not used. + /// Table open options. + /// Returns the opened table. + /// An error if the call fails. + public int JetOpenTable(JET_SESID sesid, JET_DBID dbid, string tablename, byte[] parameters, int parametersLength, OpenTableGrbit grbit, out JET_TABLEID tableid) + { + TraceFunctionCall(); + tableid = JET_TABLEID.Nil; + CheckNotNull(tablename, "tablename"); + CheckDataSize(parameters, parametersLength, "parametersLength"); + +#if MANAGEDESENT_ON_WSA + return Err(NativeMethods.JetOpenTableW(sesid.Value, dbid.Value, tablename, parameters, checked((uint)parametersLength), (uint)grbit, out tableid.Value)); +#else + return Err(NativeMethods.JetOpenTable(sesid.Value, dbid.Value, tablename, parameters, checked((uint)parametersLength), (uint)grbit, out tableid.Value)); +#endif + } + + /// + /// Close an open table. + /// + /// The session which opened the table. + /// The table to close. + /// An error if the call fails. + public int JetCloseTable(JET_SESID sesid, JET_TABLEID tableid) + { + TraceFunctionCall(); + return Err(NativeMethods.JetCloseTable(sesid.Value, tableid.Value)); + } + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + /// + /// Duplicates an open cursor and returns a handle to the duplicated cursor. + /// If the cursor that was duplicated was a read-only cursor then the + /// duplicated cursor is also a read-only cursor. + /// Any state related to constructing a search key or updating a record is + /// not copied into the duplicated cursor. In addition, the location of the + /// original cursor is not duplicated into the duplicated cursor. The + /// duplicated cursor is always opened on the clustered index and its + /// location is always on the first row of the table. + /// + /// The session to use. + /// The cursor to duplicate. + /// The duplicated cursor. + /// Reserved for future use. + /// An error if the call fails. + public int JetDupCursor(JET_SESID sesid, JET_TABLEID tableid, out JET_TABLEID newTableid, DupCursorGrbit grbit) + { + TraceFunctionCall(); + newTableid = JET_TABLEID.Nil; + return Err(NativeMethods.JetDupCursor(sesid.Value, tableid.Value, out newTableid.Value, (uint)grbit)); + } + + /// + /// Walks each index of a table to exactly compute the number of entries + /// in an index, and the number of distinct keys in an index. This + /// information, together with the number of database pages allocated + /// for an index and the current time of the computation is stored in + /// index metadata in the database. This data can be subsequently retrieved + /// with information operations. + /// + /// The session to use. + /// The table that the statistics will be computed on. + /// An error if the call fails. + public int JetComputeStats(JET_SESID sesid, JET_TABLEID tableid) + { + TraceFunctionCall(); + return Err(NativeMethods.JetComputeStats(sesid.Value, tableid.Value)); + } + + /// + /// Enables the application to associate a context handle known as + /// Local Storage with a cursor or the table associated with that + /// cursor. This context handle can be used by the application to + /// store auxiliary data that is associated with a cursor or table. + /// The application is later notified using a runtime callback when + /// the context handle must be released. This makes it possible to + /// associate dynamically allocated state with a cursor or table. + /// + /// The session to use. + /// The cursor to use. + /// The context handle to be associated with the session or cursor. + /// Set options. + /// An error if the call fails. + public int JetSetLS(JET_SESID sesid, JET_TABLEID tableid, JET_LS ls, LsGrbit grbit) + { + TraceFunctionCall(); + return Err(NativeMethods.JetSetLS(sesid.Value, tableid.Value, ls.Value, (uint)grbit)); + } + + /// + /// Enables the application to retrieve the context handle known + /// as Local Storage that is associated with a cursor or the table + /// associated with that cursor. This context handle must have been + /// previously set using . JetGetLS can also + /// be used to simultaneously fetch the current context handle for + /// a cursor or table and reset that context handle. + /// + /// The session to use. + /// The cursor to use. + /// Returns the retrieved context handle. + /// Retrieve options. + /// An error if the call fails. + public int JetGetLS(JET_SESID sesid, JET_TABLEID tableid, out JET_LS ls, LsGrbit grbit) + { + TraceFunctionCall(); + IntPtr native; + int err = NativeMethods.JetGetLS(sesid.Value, tableid.Value, out native, (uint)grbit); + ls = new JET_LS { Value = native }; + return Err(err); + } + + /// + /// Determine whether an update of the current record of a cursor + /// will result in a write conflict, based on the current update + /// status of the record. It is possible that a write conflict will + /// ultimately be returned even if JetGetCursorInfo returns successfully. + /// because another session may update the record before the current + /// session is able to update the same record. + /// + /// The session to use. + /// The cursor to check. + /// An error if the call fails. + public int JetGetCursorInfo(JET_SESID sesid, JET_TABLEID tableid) + { + TraceFunctionCall(); + return Err(NativeMethods.JetGetCursorInfo(sesid.Value, tableid.Value, IntPtr.Zero, 0, 0)); + } +#endif // !MANAGEDESENT_ON_WSA + + #endregion + + #region Transactions + + /// + /// Causes a session to enter a transaction or create a new save point in an existing + /// transaction. + /// + /// The session to begin the transaction for. + /// An error if the call fails. + public int JetBeginTransaction(JET_SESID sesid) + { + TraceFunctionCall(); +#if MANAGEDESENT_ON_WSA + // 19513 is an arbitrary number. + return this.JetBeginTransaction3(sesid, 19513, BeginTransactionGrbit.None); +#else + return Err(NativeMethods.JetBeginTransaction(sesid.Value)); +#endif + } + + /// + /// Causes a session to enter a transaction or create a new save point in an existing + /// transaction. + /// + /// The session to begin the transaction for. + /// Transaction options. + /// An error if the call fails. + public int JetBeginTransaction2(JET_SESID sesid, BeginTransactionGrbit grbit) + { + TraceFunctionCall(); +#if MANAGEDESENT_ON_WSA + // 33193 is an arbitrary number. + return this.JetBeginTransaction3(sesid, 33193, BeginTransactionGrbit.None); +#else + return Err(NativeMethods.JetBeginTransaction2(sesid.Value, unchecked((uint)grbit))); +#endif + } + + /// + /// Commits the changes made to the state of the database during the current save point + /// and migrates them to the previous save point. If the outermost save point is committed + /// then the changes made during that save point will be committed to the state of the + /// database and the session will exit the transaction. + /// + /// The session to commit the transaction for. + /// Commit options. + /// An error if the call fails. + public int JetCommitTransaction(JET_SESID sesid, CommitTransactionGrbit grbit) + { + TraceFunctionCall(); +#if MANAGEDESENT_ON_WSA + JET_COMMIT_ID commitId; + return this.JetCommitTransaction2(sesid, grbit, TimeSpan.Zero, out commitId); +#else + return Err(NativeMethods.JetCommitTransaction(sesid.Value, unchecked((uint)grbit))); +#endif + } + + /// + /// Undoes the changes made to the state of the database + /// and returns to the last save point. JetRollback will also close any cursors + /// opened during the save point. If the outermost save point is undone, the + /// session will exit the transaction. + /// + /// The session to rollback the transaction for. + /// Rollback options. + /// An error if the call fails. + public int JetRollback(JET_SESID sesid, RollbackTransactionGrbit grbit) + { + TraceFunctionCall(); + return Err(NativeMethods.JetRollback(sesid.Value, unchecked((uint)grbit))); + } + + #endregion + + #region DDL + + /// + /// Create an empty table. The newly created table is opened exclusively. + /// + /// The session to use. + /// The database to create the table in. + /// The name of the table to create. + /// Initial number of pages in the table. + /// + /// The default density of the table. This is used when doing sequential inserts. + /// + /// Returns the tableid of the new table. + /// An error if the call fails. + public int JetCreateTable(JET_SESID sesid, JET_DBID dbid, string table, int pages, int density, out JET_TABLEID tableid) + { + TraceFunctionCall(); + tableid = JET_TABLEID.Nil; + CheckNotNull(table, "table"); + +#if MANAGEDESENT_ON_WSA + var tablecreate = new JET_TABLECREATE + { + szTableName = table, + ulPages = pages, + ulDensity = density, + }; + int err = this.JetCreateTableColumnIndex4(sesid, dbid, tablecreate); + tableid = tablecreate.tableid; + return err; +#else + return Err(NativeMethods.JetCreateTable(sesid.Value, dbid.Value, table, pages, density, out tableid.Value)); +#endif + } + + /// + /// Deletes a table from a database. + /// + /// The session to use. + /// The database to delete the table from. + /// The name of the table to delete. + /// An error if the call fails. + public int JetDeleteTable(JET_SESID sesid, JET_DBID dbid, string table) + { + TraceFunctionCall(); + CheckNotNull(table, "table"); + +#if MANAGEDESENT_ON_WSA + return Err(NativeMethods.JetDeleteTableW(sesid.Value, dbid.Value, table)); +#else + return Err(NativeMethods.JetDeleteTable(sesid.Value, dbid.Value, table)); +#endif + } + + /// + /// Add a new column to an existing table. + /// + /// The session to use. + /// The table to add the column to. + /// The name of the column. + /// The definition of the column. + /// The default value of the column. + /// The size of the default value. + /// Returns the columnid of the new column. + /// An error if the call fails. + public int JetAddColumn(JET_SESID sesid, JET_TABLEID tableid, string column, JET_COLUMNDEF columndef, byte[] defaultValue, int defaultValueSize, out JET_COLUMNID columnid) + { + TraceFunctionCall(); + columnid = JET_COLUMNID.Nil; + CheckNotNull(column, "column"); + CheckNotNull(columndef, "columndef"); + CheckDataSize(defaultValue, defaultValueSize, "defaultValueSize"); + + NATIVE_COLUMNDEF nativeColumndef = columndef.GetNativeColumndef(); +#if MANAGEDESENT_ON_WSA + int err = Err(NativeMethods.JetAddColumnW( + sesid.Value, + tableid.Value, + column, + ref nativeColumndef, + defaultValue, + checked((uint)defaultValueSize), + out columnid.Value)); +#else + int err = Err(NativeMethods.JetAddColumn( + sesid.Value, + tableid.Value, + column, + ref nativeColumndef, + defaultValue, + checked((uint)defaultValueSize), + out columnid.Value)); +#endif // MANAGEDESENT_ON_WSA + // esent doesn't actually set the columnid member of the passed in JET_COLUMNDEF, but we will do that here for + // completeness. + columndef.columnid = new JET_COLUMNID { Value = columnid.Value }; + return err; + } + + /// + /// Deletes a column from a database table. + /// + /// The session to use. + /// A cursor on the table to delete the column from. + /// The name of the column to be deleted. + /// An error if the call fails. + public int JetDeleteColumn(JET_SESID sesid, JET_TABLEID tableid, string column) + { +#if MANAGEDESENT_ON_WSA + return this.JetDeleteColumn2(sesid, tableid, column, DeleteColumnGrbit.None); +#else + TraceFunctionCall(); + CheckNotNull(column, "column"); + return Err(NativeMethods.JetDeleteColumn(sesid.Value, tableid.Value, column)); +#endif + } + + /// + /// Deletes a column from a database table. + /// + /// The session to use. + /// A cursor on the table to delete the column from. + /// The name of the column to be deleted. + /// Column deletion options. + /// An error if the call fails. + public int JetDeleteColumn2(JET_SESID sesid, JET_TABLEID tableid, string column, DeleteColumnGrbit grbit) + { + TraceFunctionCall(); + CheckNotNull(column, "column"); +#if MANAGEDESENT_ON_WSA + return Err(NativeMethods.JetDeleteColumn2W(sesid.Value, tableid.Value, column, (uint)grbit)); +#else + return Err(NativeMethods.JetDeleteColumn2(sesid.Value, tableid.Value, column, (uint)grbit)); +#endif + } + + /// + /// Creates an index over data in an ESE database. An index can be used to locate + /// specific data quickly. + /// + /// The session to use. + /// The table to create the index on. + /// + /// Pointer to a null-terminated string that specifies the name of the index to create. + /// + /// Index creation options. + /// + /// Pointer to a double null-terminated string of null-delimited tokens. + /// + /// + /// The length, in characters, of szKey including the two terminating nulls. + /// + /// Initial B+ tree density. + /// An error if the call fails. + public int JetCreateIndex( + JET_SESID sesid, + JET_TABLEID tableid, + string indexName, + CreateIndexGrbit grbit, + string keyDescription, + int keyDescriptionLength, + int density) + { + TraceFunctionCall(); +#if MANAGEDESENT_ON_WSA + // Up-convert to JetCreateIndex2(). + JET_INDEXCREATE indexcreate = new JET_INDEXCREATE(); + indexcreate.szIndexName = indexName; + indexcreate.grbit = grbit; + indexcreate.szKey = keyDescription; + indexcreate.cbKey = keyDescriptionLength; + indexcreate.ulDensity = density; + + JET_INDEXCREATE[] indexcreates = new JET_INDEXCREATE[] { indexcreate }; + + return this.JetCreateIndex2(sesid, tableid, indexcreates, indexcreates.Length); +#else + CheckNotNull(indexName, "indexName"); + CheckNotNegative(keyDescriptionLength, "keyDescriptionLength"); + CheckNotNegative(density, "density"); + if (keyDescriptionLength > checked(keyDescription.Length + 1)) + { + throw new ArgumentOutOfRangeException( + "keyDescriptionLength", keyDescriptionLength, "cannot be greater than keyDescription.Length"); + } + + return Err(NativeMethods.JetCreateIndex( + sesid.Value, + tableid.Value, + indexName, + (uint)grbit, + keyDescription, + checked((uint)keyDescriptionLength), + checked((uint)density))); +#endif // MANAGEDESENT_ON_WSA + } + + /// + /// Creates indexes over data in an ESE database. + /// + /// The session to use. + /// The table to create the index on. + /// Array of objects describing the indexes to be created. + /// Number of index description objects. + /// An error code. + public int JetCreateIndex2( + JET_SESID sesid, + JET_TABLEID tableid, + JET_INDEXCREATE[] indexcreates, + int numIndexCreates) + { + TraceFunctionCall(); + CheckNotNull(indexcreates, "indexcreates"); + CheckNotNegative(numIndexCreates, "numIndexCreates"); + if (numIndexCreates > indexcreates.Length) + { + throw new ArgumentOutOfRangeException( + "numIndexCreates", numIndexCreates, "numIndexCreates is larger than the number of indexes passed in"); + } + +#if MANAGEDESENT_ON_WSA + // Note that it is actually a bit risky to up-convert to CreateIndexes3(), which is why we don't + // do it in the regular case. + // Creating the NATIVE_UNICODEINDEX2 structure requires a locale string (not an LCID). If + // JetCreateIndex2() is called, then the caller very likely used an LCID (or no locale at all). + // If no locale is specified then it's OK. + // But we can't convert an LCID to a locale name reliably on Core CLR platforms. + // To get our test code working, we have a small hard-coded list of LCID->locale names. + return CreateIndexes3(sesid, tableid, indexcreates, numIndexCreates); +#else + // NOTE: Don't call CreateIndexes3() on Win8. Unlike other APIs, CreateIndexes3() is + // not a superset. It requires locale names, and if the user called JetCreateIndex2(), + // the input will likely have LCIDs. + if (this.Capabilities.SupportsWindows7Features) + { + return CreateIndexes2(sesid, tableid, indexcreates, numIndexCreates); + } + + if (this.Capabilities.SupportsVistaFeatures) + { + return CreateIndexes1(sesid, tableid, indexcreates, numIndexCreates); + } + + return CreateIndexes(sesid, tableid, indexcreates, numIndexCreates); +#endif // MANAGEDESENT_ON_WSA + } + + /// + /// Deletes an index from a database table. + /// + /// The session to use. + /// A cursor on the table to delete the index from. + /// The name of the index to be deleted. + /// An error if the call fails. + public int JetDeleteIndex(JET_SESID sesid, JET_TABLEID tableid, string index) + { + TraceFunctionCall(); + CheckNotNull(index, "index"); + +#if MANAGEDESENT_ON_WSA + return Err(NativeMethods.JetDeleteIndexW(sesid.Value, tableid.Value, index)); +#else + return Err(NativeMethods.JetDeleteIndex(sesid.Value, tableid.Value, index)); +#endif + } + + /// + /// 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. + /// + /// The session to use. + /// + /// Column definitions for the columns created in the temporary table. + /// + /// Number of column definitions. + /// Table creation options. + /// + /// Returns the tableid of the temporary table. Closing this tableid + /// frees the resources associated with the temporary table. + /// + /// + /// The output buffer that receives the array of column IDs generated + /// during the creation of the temporary table. The column IDs in this + /// array will exactly correspond to the input array of column definitions. + /// As a result, the size of this buffer must correspond to the size of the input array. + /// + /// An error code. + public int JetOpenTempTable( + JET_SESID sesid, + JET_COLUMNDEF[] columns, + int numColumns, + TempTableGrbit grbit, + out JET_TABLEID tableid, + JET_COLUMNID[] columnids) + { + TraceFunctionCall(); + CheckNotNull(columns, "columnns"); + CheckDataSize(columns, numColumns, "numColumns"); + CheckNotNull(columnids, "columnids"); + CheckDataSize(columnids, numColumns, "numColumns"); + +#if MANAGEDESENT_ON_WSA + return this.JetOpenTempTable3(sesid, columns, numColumns, null, grbit, out tableid, columnids); +#else + tableid = JET_TABLEID.Nil; + + NATIVE_COLUMNDEF[] nativecolumndefs = GetNativecolumndefs(columns, numColumns); + var nativecolumnids = new uint[numColumns]; + + int err = Err(NativeMethods.JetOpenTempTable( + sesid.Value, nativecolumndefs, checked((uint)numColumns), (uint)grbit, out tableid.Value, nativecolumnids)); + + SetColumnids(columns, columnids, nativecolumnids, numColumns); + + return err; +#endif + } + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + /// + /// 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. + /// + /// The session to use. + /// + /// Column definitions for the columns created in the temporary table. + /// + /// Number of column definitions. + /// + /// The locale ID to use to compare any Unicode key column data in the temporary table. + /// Any locale may be used as long as the appropriate language pack has been installed + /// on the machine. + /// + /// Table creation options. + /// + /// Returns the tableid of the temporary table. Closing this tableid + /// frees the resources associated with the temporary table. + /// + /// + /// The output buffer that receives the array of column IDs generated + /// during the creation of the temporary table. The column IDs in this + /// array will exactly correspond to the input array of column definitions. + /// As a result, the size of this buffer must correspond to the size of the input array. + /// + /// An error code. + public int JetOpenTempTable2( + JET_SESID sesid, + JET_COLUMNDEF[] columns, + int numColumns, + int lcid, + TempTableGrbit grbit, + out JET_TABLEID tableid, + JET_COLUMNID[] columnids) + { + TraceFunctionCall(); + CheckNotNull(columns, "columnns"); + CheckDataSize(columns, numColumns, "numColumns"); + CheckNotNull(columnids, "columnids"); + CheckDataSize(columnids, numColumns, "numColumns"); + + tableid = JET_TABLEID.Nil; + + NATIVE_COLUMNDEF[] nativecolumndefs = GetNativecolumndefs(columns, numColumns); + var nativecolumnids = new uint[numColumns]; + + int err = Err(NativeMethods.JetOpenTempTable2( + sesid.Value, nativecolumndefs, checked((uint)numColumns), (uint)lcid, (uint)grbit, out tableid.Value, nativecolumnids)); + + SetColumnids(columns, columnids, nativecolumnids, numColumns); + + return err; + } +#endif // !MANAGEDESENT_ON_WSA + + /// + /// 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. + /// + /// The session to use. + /// + /// Column definitions for the columns created in the temporary table. + /// + /// Number of column definitions. + /// + /// The Locale ID and normalization flags that will be used to compare + /// any Unicode key column data in the temporary table. When this + /// is not present then the default options are used. + /// + /// Table creation options. + /// + /// Returns the tableid of the temporary table. Closing this tableid + /// frees the resources associated with the temporary table. + /// + /// + /// The output buffer that receives the array of column IDs generated + /// during the creation of the temporary table. The column IDs in this + /// array will exactly correspond to the input array of column definitions. + /// As a result, the size of this buffer must correspond to the size of the input array. + /// + /// An error code. + public int JetOpenTempTable3( + JET_SESID sesid, + JET_COLUMNDEF[] columns, + int numColumns, + JET_UNICODEINDEX unicodeindex, + TempTableGrbit grbit, + out JET_TABLEID tableid, + JET_COLUMNID[] columnids) + { + TraceFunctionCall(); + CheckNotNull(columns, "columnns"); + CheckDataSize(columns, numColumns, "numColumns"); + CheckNotNull(columnids, "columnids"); + CheckDataSize(columnids, numColumns, "numColumns"); + + tableid = JET_TABLEID.Nil; + + NATIVE_COLUMNDEF[] nativecolumndefs = GetNativecolumndefs(columns, numColumns); + var nativecolumnids = new uint[numColumns]; + + int err; + if (null != unicodeindex) + { + NATIVE_UNICODEINDEX nativeunicodeindex = unicodeindex.GetNativeUnicodeIndex(); + err = Err(NativeMethods.JetOpenTempTable3( + sesid.Value, nativecolumndefs, checked((uint)numColumns), ref nativeunicodeindex, (uint)grbit, out tableid.Value, nativecolumnids)); + } + else + { + err = Err(NativeMethods.JetOpenTempTable3( + sesid.Value, nativecolumndefs, checked((uint)numColumns), IntPtr.Zero, (uint)grbit, out tableid.Value, nativecolumnids)); + } + + SetColumnids(columns, columnids, nativecolumnids, numColumns); + + return err; + } + + /// + /// 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. + /// + /// + /// Introduced in Windows Vista. + /// + /// 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. + /// + /// An error code. + public int JetOpenTemporaryTable(JET_SESID sesid, JET_OPENTEMPORARYTABLE temporarytable) + { + TraceFunctionCall(); +#if MANAGEDESENT_ON_WSA + return this.JetOpenTemporaryTable2(sesid, temporarytable); +#else + this.CheckSupportsVistaFeatures("JetOpenTemporaryTable"); + CheckNotNull(temporarytable, "temporarytable"); + + NATIVE_OPENTEMPORARYTABLE nativetemporarytable = temporarytable.GetNativeOpenTemporaryTable(); + var nativecolumnids = new uint[nativetemporarytable.ccolumn]; + NATIVE_COLUMNDEF[] nativecolumndefs = GetNativecolumndefs(temporarytable.prgcolumndef, temporarytable.ccolumn); + unsafe + { + using (var gchandlecollection = new GCHandleCollection()) + { + // Pin memory + nativetemporarytable.prgcolumndef = (NATIVE_COLUMNDEF*)gchandlecollection.Add(nativecolumndefs); + nativetemporarytable.rgcolumnid = (uint*)gchandlecollection.Add(nativecolumnids); + if (null != temporarytable.pidxunicode) + { + nativetemporarytable.pidxunicode = (NATIVE_UNICODEINDEX*) + gchandlecollection.Add(temporarytable.pidxunicode.GetNativeUnicodeIndex()); + } + + // Call the interop method + int err = Err(NativeMethods.JetOpenTemporaryTable(sesid.Value, ref nativetemporarytable)); + + // Convert the return values + SetColumnids(temporarytable.prgcolumndef, temporarytable.prgcolumnid, nativecolumnids, temporarytable.ccolumn); + temporarytable.tableid = new JET_TABLEID { Value = nativetemporarytable.tableid }; + + return err; + } + } +#endif // MANAGEDESENT_ON_WSA + } + + /// + /// Creates a table, adds columns, and indices on that table. + /// + /// The session to use. + /// The database to which to add the new table. + /// Object describing the table to create. + /// An error if the call fails. + public int JetCreateTableColumnIndex3( + JET_SESID sesid, + JET_DBID dbid, + JET_TABLECREATE tablecreate) + { + TraceFunctionCall(); + CheckNotNull(tablecreate, "tablecreate"); + +#if MANAGEDESENT_ON_WSA + return CreateTableColumnIndex4(sesid, dbid, tablecreate); +#else + if (this.Capabilities.SupportsWindows7Features) + { + return CreateTableColumnIndex3(sesid, dbid, tablecreate); + } + + return this.CreateTableColumnIndex2(sesid, dbid, tablecreate); +#endif + } + + #region JetGetTableColumnInfo overloads + + /// + /// Retrieves information about a table column. + /// + /// The session to use. + /// The table containing the column. + /// The name of the column. + /// Filled in with information about the column. + /// An error if the call fails. + public int JetGetTableColumnInfo( + JET_SESID sesid, + JET_TABLEID tableid, + string columnName, + out JET_COLUMNDEF columndef) + { + TraceFunctionCall(); + columndef = new JET_COLUMNDEF(); + CheckNotNull(columnName, "columnName"); + + var nativeColumndef = new NATIVE_COLUMNDEF(); + nativeColumndef.cbStruct = checked((uint)Marshal.SizeOf(typeof(NATIVE_COLUMNDEF))); + int err; + + if (this.Capabilities.SupportsVistaFeatures) + { + err = Err(NativeMethods.JetGetTableColumnInfoW( + sesid.Value, + tableid.Value, + columnName, + ref nativeColumndef, + nativeColumndef.cbStruct, + (uint)JET_ColInfo.Default)); + } + else + { +#if MANAGEDESENT_ON_WSA + err = Err((int)JET_err.FeatureNotAvailable); +#else + err = Err(NativeMethods.JetGetTableColumnInfo( + sesid.Value, + tableid.Value, + columnName, + ref nativeColumndef, + nativeColumndef.cbStruct, + (uint)JET_ColInfo.Default)); +#endif + } + + columndef.SetFromNativeColumndef(nativeColumndef); + + return err; + } + + /// + /// 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. + /// An error if the call fails. + public int JetGetTableColumnInfo( + JET_SESID sesid, + JET_TABLEID tableid, + JET_COLUMNID columnid, + out JET_COLUMNDEF columndef) + { + TraceFunctionCall(); + columndef = new JET_COLUMNDEF(); + int err; + + var nativeColumndef = new NATIVE_COLUMNDEF(); + nativeColumndef.cbStruct = checked((uint)Marshal.SizeOf(typeof(NATIVE_COLUMNDEF))); + + if (this.Capabilities.SupportsVistaFeatures) + { + err = Err(NativeMethods.JetGetTableColumnInfoW( + sesid.Value, + tableid.Value, + ref columnid.Value, + ref nativeColumndef, + nativeColumndef.cbStruct, + (uint)JET_ColInfo.ByColid)); + } + else + { +#if MANAGEDESENT_ON_WSA + err = Err((int)JET_err.FeatureNotAvailable); +#else + err = Err(NativeMethods.JetGetTableColumnInfo( + sesid.Value, + tableid.Value, + ref columnid.Value, + ref nativeColumndef, + nativeColumndef.cbStruct, + (uint)JET_ColInfo.ByColid)); +#endif + } + + columndef.SetFromNativeColumndef(nativeColumndef); + + return err; + } + + /// + /// Retrieves information about a table column, given its and name. + /// + /// The session to use. + /// The table containing the column. + /// The name of the column. + /// Filled in with information about the column. + /// An error if the call fails. + public int JetGetTableColumnInfo( + JET_SESID sesid, + JET_TABLEID tableid, + string columnName, + out JET_COLUMNBASE columnbase) + { + TraceFunctionCall(); + CheckNotNull(columnName, "columnName"); + + int err; + + if (this.Capabilities.SupportsVistaFeatures) + { + var nativeColumnbase = new NATIVE_COLUMNBASE_WIDE(); + nativeColumnbase.cbStruct = checked((uint)Marshal.SizeOf(typeof(NATIVE_COLUMNBASE_WIDE))); + + err = Err(NativeMethods.JetGetTableColumnInfoW( + sesid.Value, + tableid.Value, + columnName, + ref nativeColumnbase, + nativeColumnbase.cbStruct, + (uint)JET_ColInfo.Base)); + + columnbase = new JET_COLUMNBASE(nativeColumnbase); + } + else + { +#if MANAGEDESENT_ON_WSA + err = Err((int)JET_err.FeatureNotAvailable); + columnbase = null; +#else + var nativeColumnbase = new NATIVE_COLUMNBASE(); + nativeColumnbase.cbStruct = checked((uint)Marshal.SizeOf(typeof(NATIVE_COLUMNBASE))); + + err = Err(NativeMethods.JetGetTableColumnInfo( + sesid.Value, + tableid.Value, + columnName, + ref nativeColumnbase, + nativeColumnbase.cbStruct, + (uint)JET_ColInfo.Base)); + + columnbase = new JET_COLUMNBASE(nativeColumnbase); +#endif + } + + return err; + } + + /// + /// Retrieves information about a table column, given its and . + /// + /// The session to use. + /// The table containing the column. + /// The columnid of the column. + /// Filled in with information about the column. + /// An error if the call fails. + public int JetGetTableColumnInfo( + JET_SESID sesid, + JET_TABLEID tableid, + JET_COLUMNID columnid, + out JET_COLUMNBASE columnbase) + { + TraceFunctionCall(); + this.CheckSupportsVistaFeatures("JetGetTableColumnInfo"); + int err; + + var nativeColumnbase = new NATIVE_COLUMNBASE_WIDE(); + nativeColumnbase.cbStruct = checked((uint)Marshal.SizeOf(typeof(NATIVE_COLUMNBASE_WIDE))); + + err = Err(NativeMethods.JetGetTableColumnInfoW( + sesid.Value, + tableid.Value, + ref columnid.Value, + ref nativeColumnbase, + nativeColumnbase.cbStruct, + (uint)VistaColInfo.BaseByColid)); + + columnbase = new JET_COLUMNBASE(nativeColumnbase); + + return err; + } + + /// + /// Retrieves information about all columns in the table. + /// + /// The session to use. + /// The table containing the column. + /// The parameter is ignored. + /// Additional options for JetGetTableColumnInfo. + /// Filled in with information about the columns in the table. + /// An error if the call fails. + public int JetGetTableColumnInfo( + JET_SESID sesid, + JET_TABLEID tableid, + string ignored, + ColInfoGrbit grbit, + out JET_COLUMNLIST columnlist) + { + TraceFunctionCall(); + columnlist = new JET_COLUMNLIST(); + int err; + + var nativeColumnlist = new NATIVE_COLUMNLIST(); + nativeColumnlist.cbStruct = checked((uint)Marshal.SizeOf(typeof(NATIVE_COLUMNLIST))); + + // Technically, this should have worked in Vista. But there was a bug, and + // it was fixed after Windows 7. + if (this.Capabilities.SupportsWindows8Features) + { + err = Err(NativeMethods.JetGetTableColumnInfoW( + sesid.Value, + tableid.Value, + ignored, + ref nativeColumnlist, + nativeColumnlist.cbStruct, + (uint)grbit | (uint)JET_ColInfo.List)); + } + else + { +#if MANAGEDESENT_ON_WSA + err = Err((int)JET_err.FeatureNotAvailable); +#else + err = Err(NativeMethods.JetGetTableColumnInfo( + sesid.Value, + tableid.Value, + ignored, + ref nativeColumnlist, + nativeColumnlist.cbStruct, + (uint)grbit | (uint)JET_ColInfo.List)); +#endif + } + + columnlist.SetFromNativeColumnlist(nativeColumnlist); + + return err; + } + + #endregion + + #region JetGetColumnInfo overloads + + /// + /// Retrieves information about a table column. + /// + /// The session to use. + /// The database that contains the table. + /// The name of the table containing the column. + /// The name of the column. + /// Filled in with information about the column. + /// An error if the call fails. + public int JetGetColumnInfo( + JET_SESID sesid, + JET_DBID dbid, + string tablename, + string columnName, + out JET_COLUMNDEF columndef) + { + TraceFunctionCall(); + columndef = new JET_COLUMNDEF(); + CheckNotNull(tablename, "tablename"); + CheckNotNull(columnName, "columnName"); + int err; + + var nativeColumndef = new NATIVE_COLUMNDEF(); + nativeColumndef.cbStruct = checked((uint)Marshal.SizeOf(typeof(NATIVE_COLUMNDEF))); + + // Technically, this should have worked in Vista. But there was a bug, and + // it was fixed after Windows 7. + if (this.Capabilities.SupportsWindows8Features) + { + err = Err(NativeMethods.JetGetColumnInfoW( + sesid.Value, + dbid.Value, + tablename, + columnName, + ref nativeColumndef, + nativeColumndef.cbStruct, + (uint)JET_ColInfo.Default)); + } + else + { +#if MANAGEDESENT_ON_WSA + err = Err((int)JET_err.FeatureNotAvailable); +#else + err = Err(NativeMethods.JetGetColumnInfo( + sesid.Value, + dbid.Value, + tablename, + columnName, + ref nativeColumndef, + nativeColumndef.cbStruct, + (uint)JET_ColInfo.Default)); +#endif + } + + columndef.SetFromNativeColumndef(nativeColumndef); + + return err; + } + + /// + /// Retrieves information about all columns in a table. + /// + /// The session to use. + /// The database that contains the table. + /// The name of the table containing the column. + /// This parameter is ignored. + /// Filled in with information about the columns in the table. + /// An error if the call fails. + public int JetGetColumnInfo( + JET_SESID sesid, + JET_DBID dbid, + string tablename, + string ignored, + out JET_COLUMNLIST columnlist) + { + TraceFunctionCall(); + columnlist = new JET_COLUMNLIST(); + CheckNotNull(tablename, "tablename"); + int err; + + var nativeColumnlist = new NATIVE_COLUMNLIST(); + nativeColumnlist.cbStruct = checked((uint)Marshal.SizeOf(typeof(NATIVE_COLUMNLIST))); + + // Technically, this should have worked in Vista. But there was a bug, and + // it was fixed after Windows 7. + if (this.Capabilities.SupportsWindows8Features) + { + err = Err(NativeMethods.JetGetColumnInfoW( + sesid.Value, + dbid.Value, + tablename, + ignored, + ref nativeColumnlist, + nativeColumnlist.cbStruct, + (uint)JET_ColInfo.List)); + } + else + { +#if MANAGEDESENT_ON_WSA + err = Err((int)JET_err.FeatureNotAvailable); +#else + err = Err(NativeMethods.JetGetColumnInfo( + sesid.Value, + dbid.Value, + tablename, + ignored, + ref nativeColumnlist, + nativeColumnlist.cbStruct, + (uint)JET_ColInfo.List)); +#endif + } + + columnlist.SetFromNativeColumnlist(nativeColumnlist); + + return err; + } + + /// + /// 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 name of the column. + /// Filled in with information about the columns in the table. + /// An error if the call fails. + public int JetGetColumnInfo( + JET_SESID sesid, + JET_DBID dbid, + string tablename, + string columnName, + out JET_COLUMNBASE columnbase) + { + TraceFunctionCall(); + CheckNotNull(tablename, "tablename"); + CheckNotNull(columnName, "columnName"); + int err; + + // Technically, this should have worked in Vista. But there was a bug, and + // it was fixed after Windows 7. + if (this.Capabilities.SupportsWindows8Features) + { + var nativeColumnbase = new NATIVE_COLUMNBASE_WIDE(); + nativeColumnbase.cbStruct = checked((uint)Marshal.SizeOf(typeof(NATIVE_COLUMNBASE_WIDE))); + + err = Err(NativeMethods.JetGetColumnInfoW( + sesid.Value, + dbid.Value, + tablename, + columnName, + ref nativeColumnbase, + nativeColumnbase.cbStruct, + (uint)JET_ColInfo.Base)); + + columnbase = new JET_COLUMNBASE(nativeColumnbase); + } + else + { + var nativeColumnbase = new NATIVE_COLUMNBASE(); + nativeColumnbase.cbStruct = checked((uint)Marshal.SizeOf(typeof(NATIVE_COLUMNBASE))); + +#if MANAGEDESENT_ON_WSA + err = Err((int)JET_err.FeatureNotAvailable); +#else + err = Err(NativeMethods.JetGetColumnInfo( + sesid.Value, + dbid.Value, + tablename, + columnName, + ref nativeColumnbase, + nativeColumnbase.cbStruct, + (uint)JET_ColInfo.Base)); +#endif + + columnbase = new JET_COLUMNBASE(nativeColumnbase); + } + + return err; + } + + /// + /// Retrieves information about a column. + /// + /// The session to use. + /// The database that contains the table. + /// The name of the table containing the column. + /// The columnid of the column. + /// Filled in with information about the columns in the table. + /// An error if the call fails. + public int JetGetColumnInfo( + JET_SESID sesid, + JET_DBID dbid, + string tablename, + JET_COLUMNID columnid, + out JET_COLUMNBASE columnbase) + { + TraceFunctionCall(); + this.CheckSupportsVistaFeatures("JetGetColumnInfo"); + CheckNotNull(tablename, "tablename"); + int err; + + // Technically, this should have worked in Vista. But there was a bug, and + // it was fixed after Windows 7. + if (this.Capabilities.SupportsWindows8Features) + { + var nativeColumnbase = new NATIVE_COLUMNBASE_WIDE(); + nativeColumnbase.cbStruct = checked((uint)Marshal.SizeOf(typeof(NATIVE_COLUMNBASE_WIDE))); + + err = Err(NativeMethods.JetGetColumnInfoW( + sesid.Value, + dbid.Value, + tablename, + ref columnid.Value, + ref nativeColumnbase, + nativeColumnbase.cbStruct, + (uint)VistaColInfo.BaseByColid)); + + columnbase = new JET_COLUMNBASE(nativeColumnbase); + } + else + { + var nativeColumnbase = new NATIVE_COLUMNBASE(); + nativeColumnbase.cbStruct = checked((uint)Marshal.SizeOf(typeof(NATIVE_COLUMNBASE))); + +#if MANAGEDESENT_ON_WSA + err = Err((int)JET_err.FeatureNotAvailable); +#else + err = Err(NativeMethods.JetGetColumnInfo( + sesid.Value, + dbid.Value, + tablename, + ref columnid.Value, + ref nativeColumnbase, + nativeColumnbase.cbStruct, + (uint)VistaColInfo.BaseByColid)); + +#endif + columnbase = new JET_COLUMNBASE(nativeColumnbase); + } + + return err; + } + + #endregion + + #region JetGetObjectInfo overloads + + /// + /// Retrieves information about database objects. + /// + /// The session to use. + /// The database to use. + /// Filled in with information about the objects in the database. + /// An error if the call fails. + public int JetGetObjectInfo(JET_SESID sesid, JET_DBID dbid, out JET_OBJECTLIST objectlist) + { + TraceFunctionCall(); + objectlist = new JET_OBJECTLIST(); + + var nativeObjectlist = new NATIVE_OBJECTLIST(); + nativeObjectlist.cbStruct = checked((uint)Marshal.SizeOf(typeof(NATIVE_OBJECTLIST))); + int err; + + if (this.Capabilities.SupportsVistaFeatures) + { + err = Err(NativeMethods.JetGetObjectInfoW( + sesid.Value, + dbid.Value, + (uint)JET_objtyp.Table, + null, + null, + ref nativeObjectlist, + nativeObjectlist.cbStruct, + (uint)JET_ObjInfo.ListNoStats)); + } + else + { +#if MANAGEDESENT_ON_WSA + err = Err((int)JET_err.FeatureNotAvailable); +#else + err = Err(NativeMethods.JetGetObjectInfo( + sesid.Value, + dbid.Value, + (uint)JET_objtyp.Table, + null, + null, + ref nativeObjectlist, + nativeObjectlist.cbStruct, + (uint)JET_ObjInfo.ListNoStats)); +#endif + } + + objectlist.SetFromNativeObjectlist(nativeObjectlist); + return err; + } + + /// + /// Retrieves information about database objects. + /// + /// The session to use. + /// The database to use. + /// The type of the object. + /// The object name about which to retrieve information. + /// Filled in with information about the objects in the database. + /// An error if the call fails. + public int JetGetObjectInfo( + JET_SESID sesid, + JET_DBID dbid, + JET_objtyp objtyp, + string objectName, + out JET_OBJECTINFO objectinfo) + { + TraceFunctionCall(); + objectinfo = new JET_OBJECTINFO(); + + var nativeObjectinfo = new NATIVE_OBJECTINFO(); + nativeObjectinfo.cbStruct = checked((uint)Marshal.SizeOf(typeof(NATIVE_OBJECTINFO))); + int err; + + if (this.Capabilities.SupportsVistaFeatures) + { + err = Err(NativeMethods.JetGetObjectInfoW( + sesid.Value, + dbid.Value, + (uint)objtyp, + null, + objectName, + ref nativeObjectinfo, + nativeObjectinfo.cbStruct, + (uint)JET_ObjInfo.NoStats)); + } + else + { +#if MANAGEDESENT_ON_WSA + err = Err((int)JET_err.FeatureNotAvailable); +#else + err = Err(NativeMethods.JetGetObjectInfo( + sesid.Value, + dbid.Value, + (uint)objtyp, + null, + objectName, + ref nativeObjectinfo, + nativeObjectinfo.cbStruct, + (uint)JET_ObjInfo.NoStats)); +#endif + } + + objectinfo.SetFromNativeObjectinfo(ref nativeObjectinfo); + return err; + } + + #endregion + + /// + /// JetGetCurrentIndex function determines the name of the current + /// index of a given cursor. This name is also used to later re-select + /// that index as the current index using . It can + /// also be used to discover the properties of that index using + /// JetGetTableIndexInfo. + /// + /// The session to use. + /// The cursor to get the index name for. + /// Returns the name of the index. + /// + /// The maximum length of the index name. Index names are no more than + /// Api.MaxNameLength characters. + /// + /// An error if the call fails. + public int JetGetCurrentIndex(JET_SESID sesid, JET_TABLEID tableid, out string indexName, int maxNameLength) + { + TraceFunctionCall(); + CheckNotNegative(maxNameLength, "maxNameLength"); + + var name = new StringBuilder(maxNameLength); +#if MANAGEDESENT_ON_WSA + int err = Err(NativeMethods.JetGetCurrentIndexW(sesid.Value, tableid.Value, name, checked((uint)maxNameLength))); +#else + int err = Err(NativeMethods.JetGetCurrentIndex(sesid.Value, tableid.Value, name, checked((uint)maxNameLength))); +#endif + indexName = name.ToString(); + indexName = StringCache.TryToIntern(indexName); + return err; + } + + #region JetGetTableInfo overloads + + /// + /// Retrieves various pieces of information about a table in a database. + /// + /// + /// This overload is used with . + /// + /// The session to use. + /// The table to retrieve information about. + /// Retrieved information. + /// The type of information to retrieve. + /// An error if the call fails. + public int JetGetTableInfo(JET_SESID sesid, JET_TABLEID tableid, out JET_OBJECTINFO result, JET_TblInfo infoLevel) + { + TraceFunctionCall(); + var nativeResult = new NATIVE_OBJECTINFO(); + int err; + + if (this.Capabilities.SupportsVistaFeatures) + { + err = Err( + NativeMethods.JetGetTableInfoW( + sesid.Value, + tableid.Value, + out nativeResult, + checked((uint)Marshal.SizeOf(typeof(NATIVE_OBJECTINFO))), + (uint)infoLevel)); + } + else + { +#if MANAGEDESENT_ON_WSA + err = Err((int)JET_err.FeatureNotAvailable); +#else + err = Err( + NativeMethods.JetGetTableInfo( + sesid.Value, + tableid.Value, + out nativeResult, + checked((uint)Marshal.SizeOf(typeof(NATIVE_OBJECTINFO))), + (uint)infoLevel)); +#endif + } + + result = new JET_OBJECTINFO(); + result.SetFromNativeObjectinfo(ref nativeResult); + return err; + } + + /// + /// Retrieves various pieces of information about a table in a database. + /// + /// + /// This overload is used with and + /// . + /// + /// The session to use. + /// The table to retrieve information about. + /// Retrieved information. + /// The type of information to retrieve. + /// An error if the call fails. + public int JetGetTableInfo(JET_SESID sesid, JET_TABLEID tableid, out string result, JET_TblInfo infoLevel) + { + TraceFunctionCall(); + var resultBuffer = new StringBuilder(SystemParameters.NameMost + 1); + int err; + + if (this.Capabilities.SupportsVistaFeatures) + { + err = Err(NativeMethods.JetGetTableInfoW( + sesid.Value, tableid.Value, resultBuffer, (uint)resultBuffer.Capacity * sizeof(char), (uint)infoLevel)); + } + else + { +#if MANAGEDESENT_ON_WSA + err = Err((int)JET_err.FeatureNotAvailable); +#else + err = Err(NativeMethods.JetGetTableInfo( + sesid.Value, tableid.Value, resultBuffer, (uint)resultBuffer.Capacity, (uint)infoLevel)); +#endif + } + + result = resultBuffer.ToString(); + result = StringCache.TryToIntern(result); + return err; + } + + /// + /// Retrieves various pieces of information about a table in a database. + /// + /// + /// This overload is used with . + /// + /// The session to use. + /// The table to retrieve information about. + /// Retrieved information. + /// The type of information to retrieve. + /// An error if the call fails. + public int JetGetTableInfo(JET_SESID sesid, JET_TABLEID tableid, out JET_DBID result, JET_TblInfo infoLevel) + { + TraceFunctionCall(); + result = JET_DBID.Nil; + + if (this.Capabilities.SupportsVistaFeatures) + { + return Err(NativeMethods.JetGetTableInfoW(sesid.Value, tableid.Value, out result.Value, sizeof(uint), (uint)infoLevel)); + } + else + { +#if MANAGEDESENT_ON_WSA + return Err((int)JET_err.FeatureNotAvailable); +#else + return Err(NativeMethods.JetGetTableInfo(sesid.Value, tableid.Value, out result.Value, sizeof(uint), (uint)infoLevel)); +#endif + } + } + + /// + /// Retrieves various pieces of information about a table in a database. + /// + /// + /// This overload is used with and + /// . + /// + /// The session to use. + /// The table to retrieve information about. + /// Retrieved information. + /// The type of information to retrieve. + /// An error if the call fails. + public int JetGetTableInfo(JET_SESID sesid, JET_TABLEID tableid, int[] result, JET_TblInfo infoLevel) + { + TraceFunctionCall(); + CheckNotNull(result, "result"); + + uint bytesResult = checked((uint)(result.Length * sizeof(int))); + if (this.Capabilities.SupportsVistaFeatures) + { + return Err(NativeMethods.JetGetTableInfoW(sesid.Value, tableid.Value, result, bytesResult, (uint)infoLevel)); + } + else + { +#if MANAGEDESENT_ON_WSA + return Err((int)JET_err.FeatureNotAvailable); +#else + return Err(NativeMethods.JetGetTableInfo(sesid.Value, tableid.Value, result, bytesResult, (uint)infoLevel)); +#endif + } + } + + /// + /// Retrieves various pieces of information about a table in a database. + /// + /// + /// This overload is used with and + /// . + /// + /// The session to use. + /// The table to retrieve information about. + /// Retrieved information. + /// The type of information to retrieve. + /// An error if the call fails. + public int JetGetTableInfo(JET_SESID sesid, JET_TABLEID tableid, out int result, JET_TblInfo infoLevel) + { + TraceFunctionCall(); + uint nativeResult; + int err; + if (this.Capabilities.SupportsVistaFeatures) + { + err = Err(NativeMethods.JetGetTableInfoW(sesid.Value, tableid.Value, out nativeResult, sizeof(uint), (uint)infoLevel)); + } + else + { +#if MANAGEDESENT_ON_WSA + nativeResult = 0; + err = Err((int)JET_err.FeatureNotAvailable); +#else + err = Err(NativeMethods.JetGetTableInfo(sesid.Value, tableid.Value, out nativeResult, sizeof(uint), (uint)infoLevel)); +#endif + } + + result = unchecked((int)nativeResult); + return err; + } + + #endregion + + #region JetGetIndexInfo overloads + + /// + /// Retrieves information about indexes on a table. + /// + /// The session to use. + /// The database to use. + /// The name of the table to retrieve index information about. + /// The name of the index to retrieve information about. + /// Filled in with information about indexes on the table. + /// The type of information to retrieve. + /// An error if the call fails. + public int JetGetIndexInfo( + JET_SESID sesid, + JET_DBID dbid, + string tablename, + string indexname, + out ushort result, + JET_IdxInfo infoLevel) + { + TraceFunctionCall(); + CheckNotNull(tablename, "tablename"); + int err; + + if (this.Capabilities.SupportsVistaFeatures) + { + err = Err(NativeMethods.JetGetIndexInfoW( + sesid.Value, + dbid.Value, + tablename, + indexname, + out result, + sizeof(ushort), + (uint)infoLevel)); + } + else + { +#if MANAGEDESENT_ON_WSA + result = 0; + err = Err((int)JET_err.FeatureNotAvailable); +#else + err = Err(NativeMethods.JetGetIndexInfo( + sesid.Value, + dbid.Value, + tablename, + indexname, + out result, + sizeof(ushort), + (uint)infoLevel)); +#endif + } + + return err; + } + + /// + /// Retrieves information about indexes on a table. + /// + /// The session to use. + /// The database to use. + /// The name of the table to retrieve index information about. + /// The name of the index to retrieve information about. + /// Filled in with information about indexes on the table. + /// The type of information to retrieve. + /// An error if the call fails. + public int JetGetIndexInfo( + JET_SESID sesid, + JET_DBID dbid, + string tablename, + string indexname, + out int result, + JET_IdxInfo infoLevel) + { + TraceFunctionCall(); + CheckNotNull(tablename, "tablename"); + + uint nativeResult; + int err; + + if (this.Capabilities.SupportsVistaFeatures) + { + err = Err(NativeMethods.JetGetIndexInfoW( + sesid.Value, + dbid.Value, + tablename, + indexname, + out nativeResult, + sizeof(uint), + (uint)infoLevel)); + } + else + { +#if MANAGEDESENT_ON_WSA + nativeResult = 0; + err = Err((int)JET_err.FeatureNotAvailable); +#else + err = Err(NativeMethods.JetGetIndexInfo( + sesid.Value, + dbid.Value, + tablename, + indexname, + out nativeResult, + sizeof(uint), + (uint)infoLevel)); +#endif + } + + result = unchecked((int)nativeResult); + return err; + } + + /// + /// Retrieves information about indexes on a table. + /// + /// The session to use. + /// The database to use. + /// The name of the table to retrieve index information about. + /// The name of the index to retrieve information about. + /// Filled in with information about indexes on the table. + /// The type of information to retrieve. + /// An error if the call fails. + public int JetGetIndexInfo( + JET_SESID sesid, + JET_DBID dbid, + string tablename, + string indexname, + out JET_INDEXID result, + JET_IdxInfo infoLevel) + { + TraceFunctionCall(); + CheckNotNull(tablename, "tablename"); + + int err; + + if (this.Capabilities.SupportsVistaFeatures) + { + err = Err(NativeMethods.JetGetIndexInfoW( + sesid.Value, + dbid.Value, + tablename, + indexname, + out result, + JET_INDEXID.SizeOfIndexId, + (uint)infoLevel)); + } + else + { +#if MANAGEDESENT_ON_WSA + result = new JET_INDEXID(); + err = Err((int)JET_err.FeatureNotAvailable); +#else + err = Err(NativeMethods.JetGetIndexInfo( + sesid.Value, + dbid.Value, + tablename, + indexname, + out result, + JET_INDEXID.SizeOfIndexId, + (uint)infoLevel)); +#endif + } + + return err; + } + + /// + /// Retrieves information about indexes on a table. + /// + /// The session to use. + /// The database to use. + /// The name of the table to retrieve index information about. + /// The name of the index to retrieve information about. + /// Filled in with information about indexes on the table. + /// The type of information to retrieve. + /// An error if the call fails. + public int JetGetIndexInfo( + JET_SESID sesid, + JET_DBID dbid, + string tablename, + string indexname, + out JET_INDEXLIST result, + JET_IdxInfo infoLevel) + { + TraceFunctionCall(); + CheckNotNull(tablename, "tablename"); + int err; + + var nativeIndexlist = new NATIVE_INDEXLIST(); + nativeIndexlist.cbStruct = checked((uint)Marshal.SizeOf(typeof(NATIVE_INDEXLIST))); + if (this.Capabilities.SupportsVistaFeatures) + { + err = Err(NativeMethods.JetGetIndexInfoW( + sesid.Value, + dbid.Value, + tablename, + indexname, + ref nativeIndexlist, + nativeIndexlist.cbStruct, + (uint)infoLevel)); + } + else + { +#if MANAGEDESENT_ON_WSA + err = Err((int)JET_err.FeatureNotAvailable); +#else + err = Err(NativeMethods.JetGetIndexInfo( + sesid.Value, + dbid.Value, + tablename, + indexname, + ref nativeIndexlist, + nativeIndexlist.cbStruct, + (uint)infoLevel)); +#endif + } + + result = new JET_INDEXLIST(); + result.SetFromNativeIndexlist(nativeIndexlist); + + return err; + } + + /// + /// Retrieves information about indexes on a table. + /// + /// The session to use. + /// The database to use. + /// The name of the table to retrieve index information about. + /// The name of the index to retrieve information about. + /// Filled in with information about indexes on the table. + /// The type of information to retrieve. + /// An error if the call fails. + public int JetGetIndexInfo( + JET_SESID sesid, + JET_DBID dbid, + string tablename, + string indexname, + out string result, + JET_IdxInfo infoLevel) + { + TraceFunctionCall(); + CheckNotNull(tablename, "tablename"); + int err; + + // Will need to check for Windows 8 Features. + // + // Currently only JET_IdxInfo.LocaleName is supported. + uint bytesMax = checked((uint)SystemParameters.LocaleNameMaxLength * sizeof(char)); + + var stringBuilder = new StringBuilder(SystemParameters.LocaleNameMaxLength); + err = Err(NativeMethods.JetGetIndexInfoW( + sesid.Value, + dbid.Value, + tablename, + indexname, + stringBuilder, + bytesMax, + (uint)infoLevel)); + + result = stringBuilder.ToString(); + result = StringCache.TryToIntern(result); + return err; + } + + #endregion + + #region JetGetTableIndexInfo overloads + + /// + /// Retrieves information about indexes on a table. + /// + /// The session to use. + /// The table to retrieve index information about. + /// The name of the index. + /// Filled in with information about indexes on the table. + /// The type of information to retrieve. + /// An error if the call fails. + public int JetGetTableIndexInfo( + JET_SESID sesid, + JET_TABLEID tableid, + string indexname, + out ushort result, + JET_IdxInfo infoLevel) + { + TraceFunctionCall(); + int err; + + if (this.Capabilities.SupportsVistaFeatures) + { + err = Err(NativeMethods.JetGetTableIndexInfoW( + sesid.Value, + tableid.Value, + indexname, + out result, + sizeof(ushort), + (uint)infoLevel)); + } + else + { +#if MANAGEDESENT_ON_WSA + result = 0; + err = Err((int)JET_err.FeatureNotAvailable); +#else + err = Err(NativeMethods.JetGetTableIndexInfo( + sesid.Value, + tableid.Value, + indexname, + out result, + sizeof(ushort), + (uint)infoLevel)); +#endif + } + + return err; + } + + /// + /// Retrieves information about indexes on a table. + /// + /// The session to use. + /// The table to retrieve index information about. + /// The name of the index. + /// Filled in with information about indexes on the table. + /// The type of information to retrieve. + /// An error if the call fails. + public int JetGetTableIndexInfo( + JET_SESID sesid, + JET_TABLEID tableid, + string indexname, + out int result, + JET_IdxInfo infoLevel) + { + TraceFunctionCall(); + + uint nativeResult; + int err; + + if (this.Capabilities.SupportsVistaFeatures) + { + err = Err(NativeMethods.JetGetTableIndexInfoW( + sesid.Value, + tableid.Value, + indexname, + out nativeResult, + sizeof(uint), + (uint)infoLevel)); + } + else + { +#if MANAGEDESENT_ON_WSA + nativeResult = 0; + err = Err((int)JET_err.FeatureNotAvailable); +#else + err = Err(NativeMethods.JetGetTableIndexInfo( + sesid.Value, + tableid.Value, + indexname, + out nativeResult, + sizeof(uint), + (uint)infoLevel)); +#endif + } + + result = unchecked((int)nativeResult); + return err; + } + + /// + /// Retrieves information about indexes on a table. + /// + /// The session to use. + /// The table to retrieve index information about. + /// The name of the index. + /// Filled in with information about indexes on the table. + /// The type of information to retrieve. + /// An error if the call fails. + public int JetGetTableIndexInfo( + JET_SESID sesid, + JET_TABLEID tableid, + string indexname, + out JET_INDEXID result, + JET_IdxInfo infoLevel) + { + TraceFunctionCall(); + int err; + + if (this.Capabilities.SupportsVistaFeatures) + { + err = Err(NativeMethods.JetGetTableIndexInfoW( + sesid.Value, + tableid.Value, + indexname, + out result, + JET_INDEXID.SizeOfIndexId, + (uint)infoLevel)); + } + else + { +#if MANAGEDESENT_ON_WSA + result = new JET_INDEXID(); + err = Err((int)JET_err.FeatureNotAvailable); +#else + err = Err(NativeMethods.JetGetTableIndexInfo( + sesid.Value, + tableid.Value, + indexname, + out result, + JET_INDEXID.SizeOfIndexId, + (uint)infoLevel)); +#endif + } + + return err; + } + + /// + /// Retrieves information about indexes on a table. + /// + /// The session to use. + /// The table to retrieve index information about. + /// The name of the index. + /// Filled in with information about indexes on the table. + /// The type of information to retrieve. + /// An error if the call fails. + public int JetGetTableIndexInfo( + JET_SESID sesid, + JET_TABLEID tableid, + string indexname, + out JET_INDEXLIST result, + JET_IdxInfo infoLevel) + { + TraceFunctionCall(); + + var nativeIndexlist = new NATIVE_INDEXLIST(); + nativeIndexlist.cbStruct = checked((uint)Marshal.SizeOf(typeof(NATIVE_INDEXLIST))); + int err; + + if (this.Capabilities.SupportsVistaFeatures) + { + err = Err(NativeMethods.JetGetTableIndexInfoW( + sesid.Value, + tableid.Value, + indexname, + ref nativeIndexlist, + nativeIndexlist.cbStruct, + (uint)infoLevel)); + } + else + { +#if MANAGEDESENT_ON_WSA + err = Err((int)JET_err.FeatureNotAvailable); +#else + err = Err(NativeMethods.JetGetTableIndexInfo( + sesid.Value, + tableid.Value, + indexname, + ref nativeIndexlist, + nativeIndexlist.cbStruct, + (uint)infoLevel)); +#endif + } + + result = new JET_INDEXLIST(); + result.SetFromNativeIndexlist(nativeIndexlist); + + return err; + } + + /// + /// Retrieves information about indexes on a table. + /// + /// The session to use. + /// The table to retrieve index information about. + /// The name of the index. + /// Filled in with information about indexes on the table. + /// The type of information to retrieve. + /// An error if the call fails. + public int JetGetTableIndexInfo( + JET_SESID sesid, + JET_TABLEID tableid, + string indexname, + out string result, + JET_IdxInfo infoLevel) + { + TraceFunctionCall(); + + // Will need to check for Windows 8 Features. + // + // Currently only JET_IdxInfo.LocaleName is supported. + uint bytesMax = checked((uint)SystemParameters.LocaleNameMaxLength * sizeof(char)); + + var stringBuilder = new StringBuilder(SystemParameters.LocaleNameMaxLength); + int err; + err = Err(NativeMethods.JetGetTableIndexInfoW( + sesid.Value, + tableid.Value, + indexname, + stringBuilder, + bytesMax, + (uint)infoLevel)); + + result = stringBuilder.ToString(); + result = StringCache.TryToIntern(result); + return err; + } + + #endregion + + /// + /// Changes the name of an existing table. + /// + /// The session to use. + /// The database containing the table. + /// The name of the table. + /// The new name of the table. + /// An error if the call fails. + public int JetRenameTable(JET_SESID sesid, JET_DBID dbid, string tableName, string newTableName) + { + TraceFunctionCall(); + CheckNotNull(tableName, "tableName"); + CheckNotNull(newTableName, "newTableName"); +#if MANAGEDESENT_ON_WSA + return Err(NativeMethods.JetRenameTableW(sesid.Value, dbid.Value, tableName, newTableName)); +#else + return Err(NativeMethods.JetRenameTable(sesid.Value, dbid.Value, tableName, newTableName)); +#endif + } + + /// + /// Changes the name of an existing column. + /// + /// The session to use. + /// The table containing the column. + /// The name of the column. + /// The new name of the column. + /// Column rename options. + /// An error if the call fails. + public int JetRenameColumn(JET_SESID sesid, JET_TABLEID tableid, string name, string newName, RenameColumnGrbit grbit) + { + TraceFunctionCall(); + CheckNotNull(name, "name"); + CheckNotNull(newName, "newName"); +#if MANAGEDESENT_ON_WSA + return Err( + NativeMethods.JetRenameColumnW(sesid.Value, tableid.Value, name, newName, (uint)grbit)); +#else + return Err( + NativeMethods.JetRenameColumn(sesid.Value, tableid.Value, name, newName, (uint)grbit)); +#endif + } + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + /// + /// Changes the default value of an existing column. + /// + /// The session to use. + /// The database containing the column. + /// The name of the table containing the column. + /// The name of the column. + /// The new default value. + /// Size of the new default value. + /// Column default value options. + /// An error if the call fails. + public int JetSetColumnDefaultValue( + JET_SESID sesid, JET_DBID dbid, string tableName, string columnName, byte[] data, int dataSize, SetColumnDefaultValueGrbit grbit) + { + TraceFunctionCall(); + CheckNotNull(tableName, "tableName"); + CheckNotNull(columnName, "columnName"); + CheckDataSize(data, dataSize, "dataSize"); + return Err( + NativeMethods.JetSetColumnDefaultValue( + sesid.Value, dbid.Value, tableName, columnName, data, checked((uint)dataSize), (uint)grbit)); + } +#endif // !MANAGEDESENT_ON_WSA + + #endregion + + #region Navigation + + /// + /// Positions a cursor to an index entry for the record that is associated with + /// the specified bookmark. The bookmark can be used with any index defined over + /// a table. The bookmark for a record can be retrieved using . + /// + /// The session to use. + /// The cursor to position. + /// The bookmark used to position the cursor. + /// The size of the bookmark. /// An error if the call fails. + public int JetGotoBookmark(JET_SESID sesid, JET_TABLEID tableid, byte[] bookmark, int bookmarkSize) + { + TraceFunctionCall(); + CheckNotNull(bookmark, "bookmark"); + CheckDataSize(bookmark, bookmarkSize, "bookmarkSize"); + + return + Err( + NativeMethods.JetGotoBookmark( + sesid.Value, tableid.Value, bookmark, checked((uint)bookmarkSize))); + } + + /// + /// Positions a cursor to an index entry that is associated with the + /// specified secondary index bookmark. The secondary index bookmark + /// must be used with the same index over the same table from which it + /// was originally retrieved. The secondary index bookmark for an index + /// entry can be retrieved using . + /// + /// The session to use. + /// The table cursor to position. + /// The buffer that contains the secondary key. + /// The size of the secondary key. + /// The buffer that contains the primary key. + /// The size of the primary key. + /// Options for positioning the bookmark. + /// An error if the call fails. + public int JetGotoSecondaryIndexBookmark( + JET_SESID sesid, + JET_TABLEID tableid, + byte[] secondaryKey, + int secondaryKeySize, + byte[] primaryKey, + int primaryKeySize, + GotoSecondaryIndexBookmarkGrbit grbit) + { + TraceFunctionCall(); + CheckNotNull(secondaryKey, "secondaryKey"); + CheckDataSize(secondaryKey, secondaryKeySize, "secondaryKeySize"); + CheckDataSize(primaryKey, primaryKeySize, "primaryKeySize"); + + return + Err( + NativeMethods.JetGotoSecondaryIndexBookmark( + sesid.Value, + tableid.Value, + secondaryKey, + checked((uint)secondaryKeySize), + primaryKey, + checked((uint)primaryKeySize), + (uint)grbit)); + } + + /// + /// Constructs search keys that may then be used by and . + /// + /// + /// The MakeKey functions provide datatype-specific make key functionality. + /// + /// The session to use. + /// The cursor to create the key on. + /// Column data for the current key column of the current index. + /// Size of the data. + /// Key options. + /// An error if the call fails. + public int JetMakeKey(JET_SESID sesid, JET_TABLEID tableid, IntPtr data, int dataSize, MakeKeyGrbit grbit) + { + TraceFunctionCall(); + CheckNotNegative(dataSize, "dataSize"); + return Err(NativeMethods.JetMakeKey(sesid.Value, tableid.Value, data, checked((uint)dataSize), unchecked((uint)grbit))); + } + + /// + /// Efficiently positions a cursor to an index entry that matches the search + /// criteria specified by the search key in that cursor and the specified + /// inequality. A search key must have been previously constructed using + /// JetMakeKey. + /// + /// The session to use. + /// The cursor to position. + /// Seek options. + /// An error or warning.. + public int JetSeek(JET_SESID sesid, JET_TABLEID tableid, SeekGrbit grbit) + { + TraceFunctionCall(); + return Err(NativeMethods.JetSeek(sesid.Value, tableid.Value, unchecked((uint)grbit))); + } + + /// + /// Navigate through an index. The cursor can be positioned at the start or + /// end of the index and moved backwards and forwards by a specified number + /// of index entries. + /// + /// The session to use for the call. + /// The cursor to position. + /// An offset which indicates how far to move the cursor. + /// Move options. + /// An error if the call fails. + public int JetMove(JET_SESID sesid, JET_TABLEID tableid, int numRows, MoveGrbit grbit) + { + TraceFunctionCall(); + return Err(NativeMethods.JetMove(sesid.Value, tableid.Value, numRows, unchecked((uint)grbit))); + } + + /// + /// Temporarily limits the set of index entries that the cursor can walk using + /// to those starting + /// from the current index entry and ending at the index entry that matches the + /// search criteria specified by the search key in that cursor and the specified + /// bound criteria. A search key must have been previously constructed using + /// JetMakeKey. + /// + /// The session to use. + /// The cursor to set the index range on. + /// Index range options. + /// An error if the call fails. + public int JetSetIndexRange(JET_SESID sesid, JET_TABLEID tableid, SetIndexRangeGrbit grbit) + { + TraceFunctionCall(); + return Err(NativeMethods.JetSetIndexRange(sesid.Value, tableid.Value, unchecked((uint)grbit))); + } + + /// + /// Computes the intersection between multiple sets of index entries from different secondary + /// indices over the same table. This operation is useful for finding the set of records in a + /// table that match two or more criteria that can be expressed using index ranges. + /// + /// The session to use. + /// + /// An the index ranges to intersect. The tableids in the ranges + /// must have index ranges set on them. + /// + /// + /// The number of index ranges. + /// + /// + /// Returns information about the temporary table containing the intersection results. + /// + /// Intersection options. + /// An error if the call fails. + public int JetIntersectIndexes( + JET_SESID sesid, + JET_INDEXRANGE[] ranges, + int numRanges, + out JET_RECORDLIST recordlist, + IntersectIndexesGrbit grbit) + { + TraceFunctionCall(); + CheckNotNull(ranges, "ranges"); + CheckDataSize(ranges, numRanges, "numRanges"); + if (numRanges < 2) + { + throw new ArgumentOutOfRangeException( + "numRanges", numRanges, "JetIntersectIndexes requires at least two index ranges."); + } + + var indexRanges = new NATIVE_INDEXRANGE[numRanges]; + for (int i = 0; i < numRanges; ++i) + { + indexRanges[i] = ranges[i].GetNativeIndexRange(); + } + + var nativeRecordlist = new NATIVE_RECORDLIST(); + nativeRecordlist.cbStruct = checked((uint)Marshal.SizeOf(typeof(NATIVE_RECORDLIST))); + + int err = Err( + NativeMethods.JetIntersectIndexes( + sesid.Value, + indexRanges, + checked((uint)indexRanges.Length), + ref nativeRecordlist, + (uint)grbit)); + recordlist = new JET_RECORDLIST(); + recordlist.SetFromNativeRecordlist(nativeRecordlist); + return err; + } + + /// + /// Set the current index of a cursor. + /// + /// The session to use. + /// The cursor to set the index on. + /// + /// The name of the index to be selected. If this is null or empty the primary + /// index will be selected. + /// + /// An error if the call fails. + public int JetSetCurrentIndex(JET_SESID sesid, JET_TABLEID tableid, string index) + { +#if MANAGEDESENT_ON_WSA + return this.JetSetCurrentIndex4(sesid, tableid, index, IntPtr.Zero, SetCurrentIndexGrbit.MoveFirst, 1); +#else + TraceFunctionCall(); + + // A null index name is valid here -- it will set the table to the primary index + return Err(NativeMethods.JetSetCurrentIndex(sesid.Value, tableid.Value, index)); +#endif + } + + /// + /// Set the current index of a cursor. + /// + /// The session to use. + /// The cursor to set the index on. + /// + /// The name of the index to be selected. If this is null or empty the primary + /// index will be selected. + /// + /// + /// Set index options. + /// + /// An error if the call fails. + public int JetSetCurrentIndex2(JET_SESID sesid, JET_TABLEID tableid, string index, SetCurrentIndexGrbit grbit) + { +#if MANAGEDESENT_ON_WSA + return this.JetSetCurrentIndex4(sesid, tableid, index, IntPtr.Zero, grbit, 1); +#else + TraceFunctionCall(); + + // A null index name is valid here -- it will set the table to the primary index + return Err(NativeMethods.JetSetCurrentIndex2(sesid.Value, tableid.Value, index, (uint)grbit)); +#endif + } + + /// + /// Set the current index of a cursor. + /// + /// The session to use. + /// The cursor to set the index on. + /// + /// The name of the index to be selected. If this is null or empty the primary + /// index will be selected. + /// + /// + /// Set index options. + /// + /// + /// Sequence number of the multi-valued column value which will be used + /// to position the cursor on the new index. This parameter is only used + /// in conjunction with . When + /// this parameter is not present or is set to zero, its value is presumed + /// to be 1. + /// + /// An error if the call fails. + public int JetSetCurrentIndex3(JET_SESID sesid, JET_TABLEID tableid, string index, SetCurrentIndexGrbit grbit, int itagSequence) + { +#if MANAGEDESENT_ON_WSA + return this.JetSetCurrentIndex4(sesid, tableid, index, IntPtr.Zero, grbit, itagSequence); +#else + TraceFunctionCall(); + + // A null index name is valid here -- it will set the table to the primary index + return Err(NativeMethods.JetSetCurrentIndex3(sesid.Value, tableid.Value, index, (uint)grbit, checked((uint)itagSequence))); +#endif + } + + /// + /// Set the current index of a cursor. + /// + /// The session to use. + /// The cursor to set the index on. + /// + /// The name of the index to be selected. If this is null or empty the primary + /// index will be selected. + /// + /// + /// The id of the index to select. This id can be obtained using JetGetIndexInfo + /// or JetGetTableIndexInfo with the option. + /// + /// + /// Set index options. + /// + /// + /// Sequence number of the multi-valued column value which will be used + /// to position the cursor on the new index. This parameter is only used + /// in conjunction with . When + /// this parameter is not present or is set to zero, its value is presumed + /// to be 1. + /// + /// An error if the call fails. + public int JetSetCurrentIndex4( + JET_SESID sesid, + JET_TABLEID tableid, + string index, + JET_INDEXID indexid, + SetCurrentIndexGrbit grbit, + int itagSequence) + { + TraceFunctionCall(); + + // A null index name is valid here -- it will set the table to the primary index +#if MANAGEDESENT_ON_WSA + return Err(NativeMethods.JetSetCurrentIndex4W(sesid.Value, tableid.Value, index, ref indexid, (uint)grbit, checked((uint)itagSequence))); +#else + return Err(NativeMethods.JetSetCurrentIndex4(sesid.Value, tableid.Value, index, ref indexid, (uint)grbit, checked((uint)itagSequence))); +#endif + } + + /// + /// Counts the number of entries in the current index from the current position forward. + /// The current position is included in the count. The count can be greater than the + /// total number of records in the table if the current index is over a multi-valued + /// column and instances of the column have multiple-values. If the table is empty, + /// then 0 will be returned for the count. + /// + /// The session to use. + /// The cursor to count the records in. + /// Returns the number of records. + /// + /// The maximum number of records to count. + /// + /// An error if the call fails. + public int JetIndexRecordCount(JET_SESID sesid, JET_TABLEID tableid, out int numRecords, int maxRecordsToCount) + { + TraceFunctionCall(); + CheckNotNegative(maxRecordsToCount, "maxRecordsToCount"); + uint crec = 0; + int err = Err(NativeMethods.JetIndexRecordCount(sesid.Value, tableid.Value, out crec, unchecked((uint)maxRecordsToCount))); // -1 is allowed + numRecords = checked((int)crec); + return err; + } + + /// + /// Counts the number of entries in the current index from the current position forward. + /// The current position is included in the count. The count can be greater than the + /// total number of records in the table if the current index is over a multi-valued + /// column and instances of the column have multiple-values. If the table is empty, + /// then 0 will be returned for the count. + /// + /// The session to use. + /// The cursor to count the records in. + /// Returns the number of records. + /// + /// The maximum number of records to count. + /// + /// An error if the call fails. + public int JetIndexRecordCount2(JET_SESID sesid, JET_TABLEID tableid, out long numRecords, long maxRecordsToCount) + { + TraceFunctionCall(); + CheckNotNegative(maxRecordsToCount, "maxRecordsToCount"); + ulong crec = 0; + int err = Err(NativeMethods.JetIndexRecordCount2(sesid.Value, tableid.Value, out crec, unchecked((ulong)maxRecordsToCount))); + numRecords = checked((long)crec); + return err; + } + + /// + /// Notifies the database engine that the application is scanning the entire + /// index that the cursor is positioned on. Consequently, the methods that + /// are used to access the index data will be tuned to make this scenario as + /// fast as possible. + /// + /// The session to use. + /// The cursor that will be accessing the data. + /// Reserved for future use. + /// An error if the call fails. + public int JetSetTableSequential(JET_SESID sesid, JET_TABLEID tableid, SetTableSequentialGrbit grbit) + { + TraceFunctionCall(); + return Err(NativeMethods.JetSetTableSequential(sesid.Value, tableid.Value, (uint)grbit)); + } + + /// + /// Notifies the database engine that the application is no longer scanning the + /// entire index the cursor is positioned on. This call reverses a notification + /// sent by JetSetTableSequential. + /// + /// The session to use. + /// The cursor that was accessing the data. + /// Reserved for future use. + /// An error if the call fails. + public int JetResetTableSequential(JET_SESID sesid, JET_TABLEID tableid, ResetTableSequentialGrbit grbit) + { + TraceFunctionCall(); + return Err(NativeMethods.JetResetTableSequential(sesid.Value, tableid.Value, (uint)grbit)); + } + + /// + /// Returns the fractional position of the current record in the current index + /// in the form of a JET_RECPOS structure. + /// + /// The session to use. + /// The cursor positioned on the record. + /// Returns the approximate fractional position of the record. + /// An error if the call fails. + public int JetGetRecordPosition(JET_SESID sesid, JET_TABLEID tableid, out JET_RECPOS recpos) + { + TraceFunctionCall(); + recpos = new JET_RECPOS(); + NATIVE_RECPOS native = recpos.GetNativeRecpos(); + int err = Err(NativeMethods.JetGetRecordPosition(sesid.Value, tableid.Value, out native, native.cbStruct)); + recpos.SetFromNativeRecpos(native); + return err; + } + + /// + /// Moves a cursor to a new location that is a fraction of the way through + /// the current index. + /// + /// The session to use. + /// The cursor to position. + /// The approximate position to move to. + /// An error if the call fails. + public int JetGotoPosition(JET_SESID sesid, JET_TABLEID tableid, JET_RECPOS recpos) + { + TraceFunctionCall(); + NATIVE_RECPOS native = recpos.GetNativeRecpos(); + return Err(NativeMethods.JetGotoPosition(sesid.Value, tableid.Value, ref native)); + } + + /// + /// If the records with the specified keys are not in the buffer cache + /// then start asynchronous reads to bring the records into the database + /// buffer cache. + /// + /// The session to use. + /// The table to issue the prereads against. + /// + /// The keys to preread. The keys must be sorted. + /// + /// The lengths of the keys to preread. + /// + /// The index of the first key in the keys array to read. + /// + /// + /// The maximum number of keys to preread. + /// + /// + /// Returns the number of keys to actually preread. + /// + /// + /// Preread options. Used to specify the direction of the preread. + /// + /// An error or warning. + public int JetPrereadKeys( + JET_SESID sesid, + JET_TABLEID tableid, + byte[][] keys, + int[] keyLengths, + int keyIndex, + int keyCount, + out int keysPreread, + PrereadKeysGrbit grbit) + { + TraceFunctionCall(); + this.CheckSupportsWindows7Features("JetPrereadKeys"); + CheckDataSize(keys, keyIndex, "keyIndex", keyCount, "keyCount"); + CheckDataSize(keyLengths, keyIndex, "keyIndex", keyCount, "keyCount"); + CheckNotNull(keys, "keys"); + CheckNotNull(keyLengths, "keyLengths"); + + int err; + unsafe + { + void** rgpvKeys = stackalloc void*[keyCount]; // [7/21/2010] StyleCop error? You need at least the 4.4 release of StyleCop + uint* rgcbKeys = stackalloc uint[keyCount]; + using (var gchandlecollection = new GCHandleCollection()) + { + gchandlecollection.SetCapacity(keyCount); + + for (int i = 0; i < keyCount; ++i) + { + rgpvKeys[i] = (void*)gchandlecollection.Add(keys[keyIndex + i]); + rgcbKeys[i] = checked((uint)keyLengths[keyIndex + i]); + } + + err = Err(NativeMethods.JetPrereadKeys( + sesid.Value, tableid.Value, rgpvKeys, rgcbKeys, keyCount, out keysPreread, (uint)grbit)); + } + } + + return err; + } + + #endregion + + #region Data Retrieval + + /// + /// Retrieves the bookmark for the record that is associated with the index entry + /// at the current position of a cursor. This bookmark can then be used to + /// reposition that cursor back to the same record using . + /// The bookmark will be no longer than + /// bytes. + /// + /// The session to use. + /// The cursor to retrieve the bookmark from. + /// Buffer to contain the bookmark. + /// Size of the bookmark buffer. + /// Returns the actual size of the bookmark. + /// An error if the call fails. + public int JetGetBookmark(JET_SESID sesid, JET_TABLEID tableid, byte[] bookmark, int bookmarkSize, out int actualBookmarkSize) + { + TraceFunctionCall(); + CheckDataSize(bookmark, bookmarkSize, "bookmarkSize"); + + uint bytesActual = 0; + int err = Err( + NativeMethods.JetGetBookmark( + sesid.Value, + tableid.Value, + bookmark, + checked((uint)bookmarkSize), + out bytesActual)); + + actualBookmarkSize = GetActualSize(bytesActual); + return err; + } + + /// + /// Retrieves a special bookmark for the secondary index entry at the + /// current position of a cursor. This bookmark can then be used to + /// efficiently reposition that cursor back to the same index entry + /// using JetGotoSecondaryIndexBookmark. This is most useful when + /// repositioning on a secondary index that contains duplicate keys or + /// that contains multiple index entries for the same record. + /// + /// The session to use. + /// The cursor to retrieve the bookmark from. + /// Output buffer for the secondary key. + /// Size of the secondary key buffer. + /// Returns the size of the secondary key. + /// Output buffer for the primary key. + /// Size of the primary key buffer. + /// Returns the size of the primary key. + /// Options for the call. + /// An error if the call fails. + public int JetGetSecondaryIndexBookmark( + JET_SESID sesid, + JET_TABLEID tableid, + byte[] secondaryKey, + int secondaryKeySize, + out int actualSecondaryKeySize, + byte[] primaryKey, + int primaryKeySize, + out int actualPrimaryKeySize, + GetSecondaryIndexBookmarkGrbit grbit) + { + TraceFunctionCall(); + CheckDataSize(secondaryKey, secondaryKeySize, "secondaryKeySize"); + CheckDataSize(primaryKey, primaryKeySize, "primaryKeySize"); + + uint bytesSecondaryKey = 0; + uint bytesPrimaryKey = 0; + int err = Err( + NativeMethods.JetGetSecondaryIndexBookmark( + sesid.Value, + tableid.Value, + secondaryKey, + checked((uint)secondaryKeySize), + out bytesSecondaryKey, + primaryKey, + checked((uint)primaryKeySize), + out bytesPrimaryKey, + (uint)grbit)); + + actualSecondaryKeySize = GetActualSize(bytesSecondaryKey); + actualPrimaryKeySize = GetActualSize(bytesPrimaryKey); + + return err; + } + + /// + /// Retrieves the key for the index entry at the current position of a cursor. + /// + /// The session to use. + /// The cursor to retrieve the key from. + /// The buffer to retrieve the key into. + /// The size of the buffer. + /// Returns the actual size of the data. + /// Retrieve key options. + /// An error if the call fails. + public int JetRetrieveKey(JET_SESID sesid, JET_TABLEID tableid, byte[] data, int dataSize, out int actualDataSize, RetrieveKeyGrbit grbit) + { + TraceFunctionCall(); + CheckDataSize(data, dataSize, "dataSize"); + + uint bytesActual = 0; + int err = Err(NativeMethods.JetRetrieveKey(sesid.Value, tableid.Value, data, checked((uint)dataSize), out bytesActual, unchecked((uint)grbit))); + + actualDataSize = GetActualSize(bytesActual); + return err; + } + + /// + /// Retrieves a single column value from the current record. The record is that + /// record associated with the index entry at the current position of the cursor. + /// Alternatively, this function can retrieve a column from a record being created + /// in the cursor copy buffer. This function can also retrieve column data from an + /// index entry that references the current record. In addition to retrieving the + /// actual column value, JetRetrieveColumn can also be used to retrieve the size + /// of a column, before retrieving the column data itself so that application + /// buffers can be sized appropriately. + /// + /// + /// The RetrieveColumnAs functions provide datatype-specific retrieval functions. + /// + /// The session to use. + /// The cursor to retrieve the column from. + /// The columnid to retrieve. + /// The data buffer to be retrieved into. + /// The size of the data buffer. + /// Returns the actual size of the data buffer. + /// Retrieve column options. + /// + /// If pretinfo is give as NULL then the function behaves as though an itagSequence + /// of 1 and an ibLongValue of 0 (zero) were given. This causes column retrieval to + /// retrieve the first value of a multi-valued column, and to retrieve long data at + /// offset 0 (zero). + /// + /// An error or warning. + public int JetRetrieveColumn(JET_SESID sesid, JET_TABLEID tableid, JET_COLUMNID columnid, IntPtr data, int dataSize, out int actualDataSize, RetrieveColumnGrbit grbit, JET_RETINFO retinfo) + { + TraceFunctionCall(); + CheckNotNegative(dataSize, "dataSize"); + + int err; + uint bytesActual = 0; + if (null != retinfo) + { + NATIVE_RETINFO nativeRetinfo = retinfo.GetNativeRetinfo(); + err = Err(NativeMethods.JetRetrieveColumn( + sesid.Value, + tableid.Value, + columnid.Value, + data, + checked((uint)dataSize), + out bytesActual, + unchecked((uint)grbit), + ref nativeRetinfo)); + retinfo.SetFromNativeRetinfo(nativeRetinfo); + } + else + { + err = Err(NativeMethods.JetRetrieveColumn( + sesid.Value, + tableid.Value, + columnid.Value, + data, + checked((uint)dataSize), + out bytesActual, + unchecked((uint)grbit), + IntPtr.Zero)); + } + + actualDataSize = checked((int)bytesActual); + return err; + } + + /// + /// The JetRetrieveColumns function retrieves multiple column values + /// from the current record in a single operation. An array of + /// structures is used to + /// describe the set of column values to be retrieved, and to describe + /// output buffers for each column value to be retrieved. + /// + /// The session to use. + /// The cursor to retrieve columns from. + /// + /// An array of one or more JET_RETRIEVECOLUMN structures. Each + /// structure includes descriptions of which column value to retrieve + /// and where to store returned data. + /// + /// + /// Number of structures in the array given by retrievecolumns. + /// + /// + /// An error or warning. + /// + public unsafe int JetRetrieveColumns(JET_SESID sesid, JET_TABLEID tableid, NATIVE_RETRIEVECOLUMN* retrievecolumns, int numColumns) + { + TraceFunctionCall(); + return Err(NativeMethods.JetRetrieveColumns(sesid.Value, tableid.Value, retrievecolumns, checked((uint)numColumns))); + } + + /// + /// Efficiently retrieves a set of columns and their values from the + /// current record of a cursor or the copy buffer of that cursor. The + /// columns and values retrieved can be restricted by a list of + /// column IDs, itagSequence numbers, and other characteristics. This + /// column retrieval API is unique in that it returns information in + /// dynamically allocated memory that is obtained using a + /// user-provided realloc compatible callback. This new flexibility + /// permits the efficient retrieval of column data with specific + /// characteristics (such as size and multiplicity) that are unknown + /// to the caller. This eliminates the need for the use of the discovery + /// modes of JetRetrieveColumn to determine those + /// characteristics in order to setup a final call to + /// JetRetrieveColumn that will successfully retrieve + /// the desired data. + /// + /// The session to use. + /// The cursor to retrieve data from. + /// The numbers of JET_ENUMCOLUMNIDS. + /// + /// An optional array of column IDs, each with an optional array of itagSequence + /// numbers to enumerate. + /// + /// + /// Returns the number of column values retrieved. + /// + /// + /// Returns the enumerated column values. + /// + /// + /// Callback used to allocate memory. + /// + /// + /// Context for the allocation callback. + /// + /// + /// Sets a cap on the amount of data to return from a long text or long + /// binary column. This parameter can be used to prevent the enumeration + /// of an extremely large column value. + /// + /// Retrieve options. + /// A warning, error or success. + public int JetEnumerateColumns( + JET_SESID sesid, + JET_TABLEID tableid, + int numColumnids, + JET_ENUMCOLUMNID[] columnids, + out int numColumnValues, + out JET_ENUMCOLUMN[] columnValues, + JET_PFNREALLOC allocator, + IntPtr allocatorContext, + int maxDataSize, + EnumerateColumnsGrbit grbit) + { + TraceFunctionCall(); + CheckNotNull(allocator, "allocator"); + CheckNotNegative(maxDataSize, "maxDataSize"); + CheckDataSize(columnids, numColumnids, "numColumnids"); + + unsafe + { + // Converting to the native structs is a bit complex because we + // do not want to allocate heap memory for this operations. We + // allocate the NATIVE_ENUMCOLUMNID array on the stack and + // convert the managed objects. During the conversion pass we + // calculate the total size of the tags. An array for the tags + // is then allocated and a second pass converts the tags. + // + // Because we are using stackalloc all the work has to be done + // in the same method. + NATIVE_ENUMCOLUMNID* nativecolumnids = stackalloc NATIVE_ENUMCOLUMNID[numColumnids]; + int totalNumTags = ConvertEnumColumnids(columnids, numColumnids, nativecolumnids); + + uint* tags = stackalloc uint[totalNumTags]; + ConvertEnumColumnidTags(columnids, numColumnids, nativecolumnids, tags); + + uint numEnumColumn; + NATIVE_ENUMCOLUMN* nativeenumcolumns; + int err = NativeMethods.JetEnumerateColumns( + sesid.Value, + tableid.Value, + checked((uint)numColumnids), + numColumnids > 0 ? nativecolumnids : null, + out numEnumColumn, + out nativeenumcolumns, + allocator, + allocatorContext, + checked((uint)maxDataSize), + (uint)grbit); + + ConvertEnumerateColumnsResult(allocator, allocatorContext, numEnumColumn, nativeenumcolumns, out numColumnValues, out columnValues); + + return Err(err); + } + } + + /// + /// Efficiently retrieves a set of columns and their values from the + /// current record of a cursor or the copy buffer of that cursor. + /// + /// The session to use. + /// The cursor to retrieve data from. + /// Enumerate options. + /// The discovered columns and their values. + /// A warning or success. + public int JetEnumerateColumns( + JET_SESID sesid, + JET_TABLEID tableid, + EnumerateColumnsGrbit grbit, + out IEnumerable enumeratedColumns) + { + unsafe + { + // NOTE: We must never throw an exception up through ESE or it will corrupt its internal state! + Exception allocatorException = null; + JET_PFNREALLOC allocator = (c, pv, cb) => + { + try + { + if (pv == IntPtr.Zero) + { + // NOTE: this will allocate memory if cb == 0 and that is what we want. + return Marshal.AllocHGlobal(new IntPtr(cb)); + } + + if (cb == 0) + { + Marshal.FreeHGlobal(pv); + return IntPtr.Zero; + } + + return Marshal.ReAllocHGlobal(pv, new IntPtr(cb)); + } + catch (OutOfMemoryException) + { + return IntPtr.Zero; + } +#if !MANAGEDESENT_ON_WSA // Thread model has changed in windows store apps. + catch (ThreadAbortException e) + { + LibraryHelpers.ThreadResetAbort(); + allocatorException = e; + return IntPtr.Zero; + } +#endif + catch (Exception e) + { + allocatorException = e; + return IntPtr.Zero; + } + }; + + uint nativeEnumColumnCount; + NATIVE_ENUMCOLUMN* nativeEnumColumns; + int err = Implementation.NativeMethods.JetEnumerateColumns( + sesid.Value, + tableid.Value, + 0, + null, + out nativeEnumColumnCount, + out nativeEnumColumns, + allocator, + IntPtr.Zero, + int.MaxValue, + (uint)(grbit & ~EnumerateColumnsGrbit.EnumerateCompressOutput)); + + var columns = new EnumeratedColumn[nativeEnumColumnCount]; + for (int i = 0; i < nativeEnumColumnCount; ++i) + { + columns[i] = new EnumeratedColumn(); + columns[i].Id = new JET_COLUMNID { Value = nativeEnumColumns[i].columnid }; + columns[i].Error = nativeEnumColumns[i].err < 0 ? (JET_err)nativeEnumColumns[i].err : JET_err.Success; + columns[i].Warning = nativeEnumColumns[i].err > 0 ? (JET_wrn)nativeEnumColumns[i].err : JET_wrn.Success; + if ((JET_wrn)nativeEnumColumns[i].err == JET_wrn.Success) + { + EnumeratedColumn.Value[] values = new EnumeratedColumn.Value[nativeEnumColumns[i].cEnumColumnValue]; + columns[i].Values = values; + for (int j = 0; j < nativeEnumColumns[i].cEnumColumnValue; j++) + { + values[j] = new EnumeratedColumn.Value(); + values[j].Ordinal = j + 1; + values[j].Warning = (JET_wrn)nativeEnumColumns[i].rgEnumColumnValue[j].err; + values[j].Bytes = new byte[(int)nativeEnumColumns[i].rgEnumColumnValue[j].cbData]; + Marshal.Copy( + nativeEnumColumns[i].rgEnumColumnValue[j].pvData, + values[j].Bytes, + 0, + (int)nativeEnumColumns[i].rgEnumColumnValue[j].cbData); + if (nativeEnumColumns[i].rgEnumColumnValue[j].pvData != IntPtr.Zero) + { + allocator(IntPtr.Zero, nativeEnumColumns[i].rgEnumColumnValue[j].pvData, 0); + } + } + + if (nativeEnumColumns[i].rgEnumColumnValue != null) + { + allocator(IntPtr.Zero, new IntPtr(nativeEnumColumns[i].rgEnumColumnValue), 0); + } + } + } + + if (nativeEnumColumns != null) + { + allocator(IntPtr.Zero, new IntPtr(nativeEnumColumns), 0); + } + + if (allocatorException != null) + { +#if !MANAGEDESENT_ON_WSA // Thread model has changed in Windows store apps. + if (allocatorException is ThreadAbortException) + { + Thread.CurrentThread.Abort(); + } +#endif + throw allocatorException; + } + + enumeratedColumns = columns; + return Err(err); + } + } + +#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. + /// A warning, error or success. + public int JetGetRecordSize(JET_SESID sesid, JET_TABLEID tableid, ref JET_RECSIZE recsize, GetRecordSizeGrbit grbit) + { + TraceFunctionCall(); + this.CheckSupportsVistaFeatures("JetGetRecordSize"); + int err; + + // Use JetGetRecordSize2 if available, otherwise JetGetRecordSize. + if (this.Capabilities.SupportsWindows7Features) + { + var native = recsize.GetNativeRecsize2(); + err = NativeMethods.JetGetRecordSize2(sesid.Value, tableid.Value, ref native, (uint)grbit); + recsize.SetFromNativeRecsize(native); + } + else + { + var native = recsize.GetNativeRecsize(); + err = NativeMethods.JetGetRecordSize(sesid.Value, tableid.Value, ref native, (uint)grbit); + recsize.SetFromNativeRecsize(native); + } + + return Err(err); + } +#endif // !MANAGEDESENT_ON_WSA + + #endregion + + #region DML + + /// + /// Deletes the current record in a database table. + /// + /// The session that opened the cursor. + /// The cursor on a database table. The current row will be deleted. + /// An error if the call fails. + public int JetDelete(JET_SESID sesid, JET_TABLEID tableid) + { + TraceFunctionCall(); + return Err(NativeMethods.JetDelete(sesid.Value, tableid.Value)); + } + + /// + /// Prepare a cursor for update. + /// + /// The session which is starting the update. + /// The cursor to start the update for. + /// The type of update to prepare. + /// An error if the call fails. + public int JetPrepareUpdate(JET_SESID sesid, JET_TABLEID tableid, JET_prep prep) + { + TraceFunctionCall(); + return Err(NativeMethods.JetPrepareUpdate(sesid.Value, tableid.Value, unchecked((uint)prep))); + } + + /// + /// The JetUpdate function performs an update operation including inserting a new row into + /// a table or updating an existing row. Deleting a table row is performed by calling + /// . + /// + /// The session which started the update. + /// The cursor to update. An update should be prepared. + /// Returns the bookmark of the updated record. This can be null. + /// The size of the bookmark buffer. + /// Returns the actual size of the bookmark. + /// + /// JetUpdate is the final step in performing an insert or an update. The update is begun by + /// calling and then by calling + /// JetSetColumn + /// one or more times to set the record state. Finally, JetUpdate + /// is called to complete the update operation. Indexes are updated only by JetUpdate or and not during JetSetColumn. + /// + /// An error if the call fails. + public int JetUpdate(JET_SESID sesid, JET_TABLEID tableid, byte[] bookmark, int bookmarkSize, out int actualBookmarkSize) + { + TraceFunctionCall(); +#if MANAGEDESENT_ON_WSA + return this.JetUpdate2(sesid, tableid, bookmark, bookmarkSize, out actualBookmarkSize, UpdateGrbit.None); +#else + CheckDataSize(bookmark, bookmarkSize, "bookmarkSize"); + + uint bytesActual; + int err = Err(NativeMethods.JetUpdate(sesid.Value, tableid.Value, bookmark, checked((uint)bookmarkSize), out bytesActual)); + actualBookmarkSize = GetActualSize(bytesActual); + + return err; +#endif + } + + /// + /// The JetUpdate2 function performs an update operation including inserting a new row into + /// a table or updating an existing row. Deleting a table row is performed by calling + /// . + /// + /// The session which started the update. + /// The cursor to update. An update should be prepared. + /// Returns the bookmark of the updated record. This can be null. + /// The size of the bookmark buffer. + /// Returns the actual size of the bookmark. + /// Update options. + /// + /// JetUpdate is the final step in performing an insert or an update. The update is begun by + /// calling and then by calling + /// JetSetColumn one or more times to set the record state. Finally, JetUpdate + /// is called to complete the update operation. Indexes are updated only by JetUpdate or and not during JetSetColumn. + /// + /// An error if the call fails. + public int JetUpdate2(JET_SESID sesid, JET_TABLEID tableid, byte[] bookmark, int bookmarkSize, out int actualBookmarkSize, UpdateGrbit grbit) + { + TraceFunctionCall(); + CheckDataSize(bookmark, bookmarkSize, "bookmarkSize"); + this.CheckSupportsServer2003Features("JetUpdate2"); + + uint bytesActual; + int err = Err(NativeMethods.JetUpdate2(sesid.Value, tableid.Value, bookmark, checked((uint)bookmarkSize), out bytesActual, (uint)grbit)); + actualBookmarkSize = GetActualSize(bytesActual); + + return err; + } + + /// + /// The JetSetColumn function modifies a single column value in a modified record to be inserted or to + /// update the current record. It can overwrite an existing value, add a new value to a sequence of + /// values in a multi-valued column, remove a value from a sequence of values in a multi-valued column, + /// or update all or part of a long value (a column of type + /// or ). + /// + /// + /// The SetColumn methods provide datatype-specific overrides which may be more efficient. + /// + /// The session which is performing the update. + /// The cursor to update. An update should be prepared. + /// The columnid to set. + /// The data to set. + /// The size of data to set. + /// SetColumn options. + /// Used to specify itag or long-value offset. + /// An error if the call fails. + public int JetSetColumn(JET_SESID sesid, JET_TABLEID tableid, JET_COLUMNID columnid, IntPtr data, int dataSize, SetColumnGrbit grbit, JET_SETINFO setinfo) + { + TraceFunctionCall(); + CheckNotNegative(dataSize, "dataSize"); + if (IntPtr.Zero == data) + { + if (dataSize > 0 && (SetColumnGrbit.SizeLV != (grbit & SetColumnGrbit.SizeLV))) + { + throw new ArgumentOutOfRangeException( + "dataSize", + dataSize, + "cannot be greater than the length of the data (unless the SizeLV option is used)"); + } + } + + if (null != setinfo) + { + NATIVE_SETINFO nativeSetinfo = setinfo.GetNativeSetinfo(); + return Err(NativeMethods.JetSetColumn(sesid.Value, tableid.Value, columnid.Value, data, checked((uint)dataSize), unchecked((uint)grbit), ref nativeSetinfo)); + } + + return Err(NativeMethods.JetSetColumn(sesid.Value, tableid.Value, columnid.Value, data, checked((uint)dataSize), unchecked((uint)grbit), IntPtr.Zero)); + } + + /// + /// Allows an application to set multiple column values in a single + /// operation. An array of structures is + /// used to describe the set of column values to be set, and to describe + /// input buffers for each column value to be set. + /// + /// The session to use. + /// The cursor to set the columns on. + /// + /// An array of structures describing the + /// data to set. + /// + /// + /// Number of entries in the setcolumns parameter. + /// + /// An error code or warning. + public unsafe int JetSetColumns(JET_SESID sesid, JET_TABLEID tableid, NATIVE_SETCOLUMN* setcolumns, int numColumns) + { + TraceFunctionCall(); + return Err(NativeMethods.JetSetColumns(sesid.Value, tableid.Value, setcolumns, checked((uint)numColumns))); + } + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + /// + /// Explicitly reserve the ability to update a row, write lock, or to explicitly prevent a row from + /// being updated by any other session, read lock. Normally, row write locks are acquired implicitly as a + /// result of updating rows. Read locks are usually not required because of record versioning. However, + /// in some cases a transaction may desire to explicitly lock a row to enforce serialization, or to ensure + /// that a subsequent operation will succeed. + /// + /// The session to use. + /// The cursor to use. A lock will be acquired on the current record. + /// Lock options, use this to specify which type of lock to obtain. + /// An error if the call fails. + public int JetGetLock(JET_SESID sesid, JET_TABLEID tableid, GetLockGrbit grbit) + { + TraceFunctionCall(); + return Err(NativeMethods.JetGetLock(sesid.Value, tableid.Value, unchecked((uint)grbit))); + } +#endif // !MANAGEDESENT_ON_WSA + + /// + /// Performs an atomic addition operation on one column. This function allows + /// multiple sessions to update the same record concurrently without conflicts. + /// + /// The session to use. + /// The cursor to update. + /// + /// The column to update. This must be an escrow updatable column. + /// + /// The buffer containing the addend. + /// The size of the addend. + /// + /// An output buffer that will recieve the current value of the column. This buffer + /// can be null. + /// + /// The size of the previousValue buffer. + /// Returns the actual size of the previousValue. + /// Escrow update options. + /// An error code if the operation fails. + public int JetEscrowUpdate( + JET_SESID sesid, + JET_TABLEID tableid, + JET_COLUMNID columnid, + byte[] delta, + int deltaSize, + byte[] previousValue, + int previousValueLength, + out int actualPreviousValueLength, + EscrowUpdateGrbit grbit) + { + TraceFunctionCall(); + CheckNotNull(delta, "delta"); + CheckDataSize(delta, deltaSize, "deltaSize"); + CheckDataSize(previousValue, previousValueLength, "previousValueLength"); + + uint bytesOldActual = 0; + int err = Err(NativeMethods.JetEscrowUpdate( + sesid.Value, + tableid.Value, + columnid.Value, + delta, + checked((uint)deltaSize), + previousValue, + checked((uint)previousValueLength), + out bytesOldActual, + unchecked((uint)grbit))); + actualPreviousValueLength = checked((int)bytesOldActual); + return err; + } + + #endregion + + #region Callbacks + + /// + /// Allows the application to configure the database engine to issue + /// notifications to the application for specific events. These + /// notifications are associated with a specific table and remain in + /// effect only until the instance containing the table is shut down + /// using . + /// + /// The session to use. + /// + /// A cursor opened on the table that the callback should be + /// registered on. + /// + /// + /// The callback reasons for which the application wishes to receive notifications. + /// + /// The callback function. + /// A context that will be given to the callback. + /// + /// A handle that can later be used to cancel the registration of the given + /// callback function using . + /// + /// An error if the call fails. + public int JetRegisterCallback( + JET_SESID sesid, + JET_TABLEID tableid, + JET_cbtyp cbtyp, + JET_CALLBACK callback, + IntPtr context, + out JET_HANDLE callbackId) + { + TraceFunctionCall(); + CheckNotNull(callback, "callback"); + + callbackId = JET_HANDLE.Nil; + return Err(NativeMethods.JetRegisterCallback( + sesid.Value, + tableid.Value, + unchecked((uint)cbtyp), + this.callbackWrappers.Add(callback).NativeCallback, + context, + out callbackId.Value)); + } + + /// + /// Configures the database engine to stop issuing notifications to the + /// application as previously requested through + /// . + /// + /// The session to use. + /// + /// A cursor opened on the table that the callback should be + /// registered on. + /// + /// + /// The callback reasons for which the application no longer wishes to receive notifications. + /// + /// + /// The handle of the registered callback that was returned by . + /// + /// An error if the call fails. + public int JetUnregisterCallback(JET_SESID sesid, JET_TABLEID tableid, JET_cbtyp cbtyp, JET_HANDLE callbackId) + { + TraceFunctionCall(); + this.callbackWrappers.Collect(); + return Err(NativeMethods.JetUnregisterCallback( + sesid.Value, + tableid.Value, + unchecked((uint)cbtyp), + callbackId.Value)); + } + + #endregion + + #region Online Maintenance + + /// + /// Starts and stops database defragmentation tasks that improves data + /// organization within a database. + /// + /// The session to use for the call. + /// The database to be defragmented. + /// + /// Under some options defragmentation is performed for the entire database described by the given + /// database ID, and other options (such as ) require + /// the name of the table to defragment. + /// + /// + /// When starting an online defragmentation task, this parameter sets the maximum number of defragmentation + /// passes. When stopping an online defragmentation task, this parameter is set to the number of passes + /// performed. This is not honored in all modes (such as ). + /// + /// + /// When starting an online defragmentation task, this parameter sets + /// the maximum time for defragmentation. When stopping an online + /// defragmentation task, this output buffer is set to the length of + /// time used for defragmentation. This is not honored in all modes (such as ). + /// + /// Defragmentation options. + /// An error code. + /// . + /// . + public int JetDefragment(JET_SESID sesid, JET_DBID dbid, string tableName, ref int passes, ref int seconds, DefragGrbit grbit) + { +#if MANAGEDESENT_ON_WSA + return this.JetDefragment2(sesid, dbid, tableName, ref passes, ref seconds, null, grbit); +#else + TraceFunctionCall(); + uint nativePasses = unchecked((uint)passes); + uint nativeSeconds = unchecked((uint)seconds); + int err = Err(NativeMethods.JetDefragment( + sesid.Value, dbid.Value, tableName, ref nativePasses, ref nativeSeconds, (uint)grbit)); + passes = unchecked((int)nativePasses); + seconds = unchecked((int)nativeSeconds); + return err; +#endif + } + + /// + /// Starts and stops database defragmentation tasks that improves data + /// organization within a database. + /// + /// The session to use for the call. + /// The database to be defragmented. + /// + /// Under some options defragmentation is performed for the entire database described by the given + /// database ID, and other options (such as ) require + /// the name of the table to defragment. + /// + /// Defragmentation options. + /// An error code. + /// . + public int Defragment( + JET_SESID sesid, + JET_DBID dbid, + string tableName, + DefragGrbit grbit) + { +#if MANAGEDESENT_ON_WSA + return this.Defragment2(sesid, dbid, tableName, null, grbit); +#else + TraceFunctionCall(); + int err = Err(NativeMethods.JetDefragment( + sesid.Value, dbid.Value, tableName, IntPtr.Zero, IntPtr.Zero, (uint)grbit)); + return err; +#endif + } + + /// + /// Starts and stops database defragmentation tasks that improves data + /// organization within a database. + /// + /// The session to use for the call. + /// The database to be defragmented. + /// + /// Under some options defragmentation is performed for the entire database described by the given + /// database ID, and other options (such as ) require + /// the name of the table to defragment. + /// + /// + /// When starting an online defragmentation task, this parameter sets the maximum number of defragmentation + /// passes. When stopping an online defragmentation task, this parameter is set to the number of passes + /// performed. This is not honored in all modes (such as ). + /// + /// + /// When starting an online defragmentation task, this parameter sets + /// the maximum time for defragmentation. When stopping an online + /// defragmentation task, this output buffer is set to the length of + /// time used for defragmentation. This is not honored in all modes (such as ). + /// + /// Callback function that defrag uses to report progress. + /// Defragmentation options. + /// An error code or warning. + /// . + public int JetDefragment2( + JET_SESID sesid, + JET_DBID dbid, + string tableName, + ref int passes, + ref int seconds, + JET_CALLBACK callback, + DefragGrbit grbit) + { + TraceFunctionCall(); + uint nativePasses = unchecked((uint)passes); + uint nativeSeconds = unchecked((uint)seconds); + + IntPtr functionPointer; + if (null == callback) + { + functionPointer = IntPtr.Zero; + } + else + { + JetCallbackWrapper callbackWrapper = this.callbackWrappers.Add(callback); + functionPointer = Marshal.GetFunctionPointerForDelegate(callbackWrapper.NativeCallback); +#if DEBUG + GC.Collect(); +#endif + } + +#if MANAGEDESENT_ON_WSA + int err = Err(NativeMethods.JetDefragment2W( + sesid.Value, dbid.Value, tableName, ref nativePasses, ref nativeSeconds, functionPointer, (uint)grbit)); +#else + int err = Err(NativeMethods.JetDefragment2( + sesid.Value, dbid.Value, tableName, ref nativePasses, ref nativeSeconds, functionPointer, (uint)grbit)); +#endif + passes = unchecked((int)nativePasses); + seconds = unchecked((int)nativeSeconds); + this.callbackWrappers.Collect(); + return err; + } + + //// Currently, this overload of JetDefragment2() is not used outside of WSA. +#if MANAGEDESENT_ON_WSA + /// + /// Starts and stops database defragmentation tasks that improves data + /// organization within a database. + /// + /// The session to use for the call. + /// The database to be defragmented. + /// + /// Under some options defragmentation is performed for the entire database described by the given + /// database ID, and other options (such as ) require + /// the name of the table to defragment. + /// + /// Callback function that defrag uses to report progress. + /// Defragmentation options. + /// An error code or warning. + /// . + public int Defragment2( + JET_SESID sesid, + JET_DBID dbid, + string tableName, + JET_CALLBACK callback, + DefragGrbit grbit) + { + TraceFunctionCall(); + + IntPtr functionPointer; + if (null == callback) + { + functionPointer = IntPtr.Zero; + } + else + { + JetCallbackWrapper callbackWrapper = this.callbackWrappers.Add(callback); + functionPointer = Marshal.GetFunctionPointerForDelegate(callbackWrapper.NativeCallback); +#if DEBUG + GC.Collect(); +#endif + } + +#if MANAGEDESENT_ON_WSA + int err = Err(NativeMethods.JetDefragment2W( + sesid.Value, dbid.Value, tableName, IntPtr.Zero, IntPtr.Zero, functionPointer, (uint)grbit)); +#else + int err = Err(NativeMethods.JetDefragment2( + sesid.Value, dbid.Value, tableName, IntPtr.Zero, IntPtr.Zero, functionPointer, (uint)grbit)); +#endif + this.callbackWrappers.Collect(); + return err; + } +#endif + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + /// + /// Performs idle cleanup tasks or checks the version store status in ESE. + /// + /// The session to use. + /// A combination of JetIdleGrbit flags. + /// An error code if the operation fails. + public int JetIdle(JET_SESID sesid, IdleGrbit grbit) + { + TraceFunctionCall(); + return Err(NativeMethods.JetIdle(sesid.Value, (uint)grbit)); + } +#endif // !MANAGEDESENT_ON_WSA + + #endregion + + #region Misc + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + /// + /// Crash dump options for Watson. + /// + /// Crash dump options. + /// An error code. + public int JetConfigureProcessForCrashDump(CrashDumpGrbit grbit) + { + TraceFunctionCall(); + this.CheckSupportsWindows7Features("JetConfigureProcessForCrashDump"); + return Err(NativeMethods.JetConfigureProcessForCrashDump((uint)grbit)); + } + + /// + /// Frees memory that was allocated by a database engine call. + /// + /// + /// The buffer allocated by a call to the database engine. + /// is acceptable, and will be ignored. + /// + /// An error code. + public int JetFreeBuffer(IntPtr buffer) + { + TraceFunctionCall(); + return Err(NativeMethods.JetFreeBuffer(buffer)); + } +#endif // !MANAGEDESENT_ON_WSA + + #endregion + + #region Internal Helper Methods + + /// + /// Given the size returned by ESENT, get the size + /// to return to the user. + /// + /// The size returned by ESENT. + /// The bookmark size to return to the user. + internal static int GetActualSize(uint numBytesActual) + { + // BUG: debug builds of ESENT can fill numBytesActual with this value in case of failure. + const uint CbActualDebugFill = 0xDDDDDDDD; + int actualSize; + if (CbActualDebugFill == numBytesActual) + { + actualSize = 0; + } + else + { + actualSize = checked((int)numBytesActual); + } + + return actualSize; + } + + #endregion Internal Helper Methods + + #region Parameter Checking and Tracing + + /// + /// Make sure the data, dataOffset and dataSize arguments match. + /// + /// The data buffer. + /// The offset into the data. + /// The name of the offset argument. + /// The size of the data. + /// The name of the size argument. + /// The type of the data. + private static void CheckDataSize(ICollection data, int dataOffset, string offsetArgumentName, int dataSize, string sizeArgumentName) + { + CheckNotNegative(dataSize, sizeArgumentName); + CheckNotNegative(dataOffset, offsetArgumentName); + + if ((null == data && 0 != dataOffset) || (null != data && dataOffset > data.Count)) + { + Trace.WriteLineIf(TraceSwitch.TraceError, "CheckDataSize failed"); + throw new ArgumentOutOfRangeException( + offsetArgumentName, + dataOffset, + "cannot be greater than the length of the buffer"); + } + + if ((null == data && 0 != dataSize) || (null != data && dataSize > data.Count - dataOffset)) + { + Trace.WriteLineIf(TraceSwitch.TraceError, "CheckDataSize failed"); + throw new ArgumentOutOfRangeException( + sizeArgumentName, + dataSize, + "cannot be greater than the length of the buffer"); + } + } + + /// + /// Make sure the data and dataSize arguments match. + /// + /// The data buffer. + /// The size of the data. + /// The name of the size argument. + /// The type of the data. + private static void CheckDataSize(ICollection data, int dataSize, string argumentName) + { + CheckDataSize(data, 0, string.Empty, dataSize, argumentName); + } + + /// + /// Make sure the given object isn't null. If it is + /// then throw an ArgumentNullException. + /// + /// The object to check. + /// The name of the parameter. + private static void CheckNotNull(object o, string paramName) + { + if (null == o) + { + Trace.WriteLineIf(TraceSwitch.TraceError, "CheckNotNull failed"); + throw new ArgumentNullException(paramName); + } + } + + /// + /// Make sure the given integer isn't negative. If it is + /// then throw an ArgumentOutOfRangeException. + /// + /// The integer to check. + /// The name of the parameter. + private static void CheckNotNegative(long i, string paramName) + { + if (i < 0) + { + Trace.WriteLineIf(TraceSwitch.TraceError, "CheckNotNegative failed"); + throw new ArgumentOutOfRangeException(paramName, i, "cannot be negative"); + } + } + + /// + /// Used when an unsupported API method is called. This + /// logs an error and returns an InvalidOperationException. + /// + /// The name of the method. + /// The exception to throw. + private static Exception UnsupportedApiException(string method) + { + string error = string.Format(CultureInfo.InvariantCulture, "Method {0} is not supported by this version of ESENT", method); + Trace.WriteLineIf(TraceSwitch.TraceError, error); + return new InvalidOperationException(error); + } + + /// + /// Trace a call to an ESENT function. + /// + /// The name of the function being called. + [Conditional("TRACE")] +#if DEBUG + // Disallow inlining so we can always get the name of the calling function. + [MethodImpl(MethodImplOptions.NoInlining)] +#endif + private static void TraceFunctionCall([System.Runtime.CompilerServices.CallerMemberName] string function = null) + { + Trace.WriteLineIf(TraceSwitch.TraceInfo, function); + } + + /// + /// Can be used to trap ESENT errors. + /// + /// The error being returned. + /// The error. + private static int Err(int err) + { + TraceErr(err); + return err; + } + + /// + /// Trace an error generated by a call to ESENT. + /// + /// The error to trace. + [Conditional("TRACE")] + private static void TraceErr(int err) + { + if (0 == err) + { + Trace.WriteLineIf(TraceSwitch.TraceVerbose, "JET_err.Success"); + } + else if (err > 0) + { + Trace.WriteLineIf(TraceSwitch.TraceWarning, unchecked((JET_wrn)err)); + } + else + { + Trace.WriteLineIf(TraceSwitch.TraceError, unchecked((JET_err)err)); + } + } + + #endregion Parameter Checking and Tracing + + #region Helper Methods + + /// + /// Convert managed JET_ENUMCOLUMNID objects to NATIVE_ENUMCOLUMNID + /// structures. + /// + /// The columnids to convert. + /// The number of columnids to convert. + /// The array to store the converted columnids. + /// The total number of tag entries in the converted structures. + private static unsafe int ConvertEnumColumnids(IList columnids, int numColumnids, NATIVE_ENUMCOLUMNID* nativecolumnids) + { + int totalNumTags = 0; + for (int i = 0; i < numColumnids; ++i) + { + nativecolumnids[i] = columnids[i].GetNativeEnumColumnid(); + checked + { + totalNumTags += columnids[i].ctagSequence; + } + } + + return totalNumTags; + } + + /// + /// Convert managed rgtagSequence to unmanaged rgtagSequence. + /// + /// The columnids to convert. + /// The number of columnids to covert. + /// The unmanaged columnids to add the tags to. + /// + /// Memory to use for converted rgtagSequence. This should be large enough to + /// hold all columnids. + /// + private static unsafe void ConvertEnumColumnidTags(IList columnids, int numColumnids, NATIVE_ENUMCOLUMNID* nativecolumnids, uint* tags) + { + for (int i = 0; i < numColumnids; ++i) + { + nativecolumnids[i].rgtagSequence = tags; + for (int j = 0; j < columnids[i].ctagSequence; ++j) + { + nativecolumnids[i].rgtagSequence[j] = checked((uint)columnids[i].rgtagSequence[j]); + } + + tags += columnids[i].ctagSequence; + } + } + + /// + /// Convert the native (unmanaged) results of JetEnumerateColumns to + /// managed objects. This uses the allocator callback to free some + /// memory as the data is converted. + /// + /// The allocator callback used. + /// The allocator callback context. + /// Number of NATIVE_ENUMCOLUMN structures returned. + /// NATIVE_ENUMCOLUMN structures. + /// Returns the number of converted JET_ENUMCOLUMN objects. + /// Returns the convertd column values. + private static unsafe void ConvertEnumerateColumnsResult(JET_PFNREALLOC allocator, IntPtr allocatorContext, uint numEnumColumn, NATIVE_ENUMCOLUMN* nativeenumcolumns, out int numColumnValues, out JET_ENUMCOLUMN[] columnValues) + { + numColumnValues = checked((int)numEnumColumn); + columnValues = new JET_ENUMCOLUMN[numColumnValues]; + for (int i = 0; i < numColumnValues; ++i) + { + columnValues[i] = new JET_ENUMCOLUMN(); + columnValues[i].SetFromNativeEnumColumn(nativeenumcolumns[i]); + if (JET_wrn.ColumnSingleValue != columnValues[i].err) + { + columnValues[i].rgEnumColumnValue = new JET_ENUMCOLUMNVALUE[columnValues[i].cEnumColumnValue]; + for (int j = 0; j < columnValues[i].cEnumColumnValue; ++j) + { + columnValues[i].rgEnumColumnValue[j] = new JET_ENUMCOLUMNVALUE(); + columnValues[i].rgEnumColumnValue[j].SetFromNativeEnumColumnValue(nativeenumcolumns[i].rgEnumColumnValue[j]); + } + + // the NATIVE_ENUMCOLUMNVALUES have been converted + // free their memory + allocator(allocatorContext, new IntPtr(nativeenumcolumns[i].rgEnumColumnValue), 0); + nativeenumcolumns[i].rgEnumColumnValue = null; + } + } + + // Now we have converted all the NATIVE_ENUMCOLUMNS we can + // free the memory they use + allocator(allocatorContext, new IntPtr(nativeenumcolumns), 0); + nativeenumcolumns = null; + } + + /// + /// Make an array of native columndefs from JET_COLUMNDEFs. + /// + /// Columndefs to convert. + /// Number of columndefs to convert. + /// An array of native columndefs. + private static NATIVE_COLUMNDEF[] GetNativecolumndefs(IList columns, int numColumns) + { + var nativecolumndefs = new NATIVE_COLUMNDEF[numColumns]; + for (int i = 0; i < numColumns; ++i) + { + nativecolumndefs[i] = columns[i].GetNativeColumndef(); + } + + return nativecolumndefs; + } + + /// + /// Make native conditionalcolumn structures from the managed ones. + /// + /// The conditional columns to convert. + /// Wehether to convert the strings with UTF-16. + /// The handle collection used to pin the data. + /// Pinned native versions of the conditional columns. + private static IntPtr GetNativeConditionalColumns( + IList conditionalColumns, + bool useUnicodeData, + ref GCHandleCollection handles) + { + if (null == conditionalColumns) + { + return IntPtr.Zero; + } + + var nativeConditionalcolumns = new NATIVE_CONDITIONALCOLUMN[conditionalColumns.Count]; + for (int i = 0; i < conditionalColumns.Count; ++i) + { + nativeConditionalcolumns[i] = conditionalColumns[i].GetNativeConditionalColumn(); + if (useUnicodeData) + { + nativeConditionalcolumns[i].szColumnName = handles.Add(Util.ConvertToNullTerminatedUnicodeByteArray(conditionalColumns[i].szColumnName)); + } + else + { + nativeConditionalcolumns[i].szColumnName = handles.Add(Util.ConvertToNullTerminatedAsciiByteArray(conditionalColumns[i].szColumnName)); + } + } + + return handles.Add(nativeConditionalcolumns); + } + + /// + /// Make native columncreate structures from the managed ones. + /// + /// Column create structures to convert. + /// Wehether to convert the strings with UTF-16. + /// The handle collection used to pin the data. + /// Pinned native versions of the column creates. + private static IntPtr GetNativeColumnCreates( + IList managedColumnCreates, + bool useUnicodeData, + ref GCHandleCollection handles) + { + IntPtr nativeBuffer = IntPtr.Zero; + + if (managedColumnCreates != null && managedColumnCreates.Count > 0) + { + var nativeColumns = new NATIVE_COLUMNCREATE[managedColumnCreates.Count]; + + for (int i = 0; i < managedColumnCreates.Count; ++i) + { + if (managedColumnCreates[i] != null) + { + JET_COLUMNCREATE managedColumn = managedColumnCreates[i]; + nativeColumns[i] = managedColumn.GetNativeColumnCreate(); + + if (useUnicodeData) + { + nativeColumns[i].szColumnName = handles.Add(Util.ConvertToNullTerminatedUnicodeByteArray(managedColumn.szColumnName)); + } + else + { + nativeColumns[i].szColumnName = handles.Add(Util.ConvertToNullTerminatedAsciiByteArray(managedColumn.szColumnName)); + } + + if (managedColumn.cbDefault > 0) + { + nativeColumns[i].pvDefault = handles.Add(managedColumn.pvDefault); + } + } + } + + nativeBuffer = handles.Add(nativeColumns); + } + + return nativeBuffer; + } + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + /// + /// Make native indexcreate structures from the managed ones. + /// Only supports Ascii data, since it could be used on XP. + /// + /// Index create structures to convert. + /// The handle collection used to pin the data. + /// Pinned native versions of the index creates. + private static unsafe JET_INDEXCREATE.NATIVE_INDEXCREATE[] GetNativeIndexCreates( + IList managedIndexCreates, + ref GCHandleCollection handles) + { + JET_INDEXCREATE.NATIVE_INDEXCREATE[] nativeIndices = null; + + if (managedIndexCreates != null && managedIndexCreates.Count > 0) + { + nativeIndices = new JET_INDEXCREATE.NATIVE_INDEXCREATE[managedIndexCreates.Count]; + + for (int i = 0; i < managedIndexCreates.Count; ++i) + { + nativeIndices[i] = managedIndexCreates[i].GetNativeIndexcreate(); + + if (null != managedIndexCreates[i].pidxUnicode) + { + NATIVE_UNICODEINDEX unicode = managedIndexCreates[i].pidxUnicode.GetNativeUnicodeIndex(); + nativeIndices[i].pidxUnicode = (NATIVE_UNICODEINDEX*)handles.Add(unicode); + nativeIndices[i].grbit |= (uint)VistaGrbits.IndexUnicode; + } + + nativeIndices[i].szKey = handles.Add(Util.ConvertToNullTerminatedAsciiByteArray(managedIndexCreates[i].szKey)); + nativeIndices[i].szIndexName = handles.Add(Util.ConvertToNullTerminatedAsciiByteArray(managedIndexCreates[i].szIndexName)); + nativeIndices[i].rgconditionalcolumn = GetNativeConditionalColumns(managedIndexCreates[i].rgconditionalcolumn, false, ref handles); + } + } + + return nativeIndices; + } + + /// + /// Make native indexcreate structures from the managed ones. + /// Only supports Unicode data, since it was introduced in Vista. + /// + /// Index create structures to convert. + /// The handle collection used to pin the data. + /// Pinned native versions of the index creates. + private static unsafe JET_INDEXCREATE.NATIVE_INDEXCREATE1[] GetNativeIndexCreate1s( + IList managedIndexCreates, + ref GCHandleCollection handles) + { + JET_INDEXCREATE.NATIVE_INDEXCREATE1[] nativeIndices = null; + + if (managedIndexCreates != null && managedIndexCreates.Count > 0) + { + nativeIndices = new JET_INDEXCREATE.NATIVE_INDEXCREATE1[managedIndexCreates.Count]; + + for (int i = 0; i < managedIndexCreates.Count; ++i) + { + nativeIndices[i] = managedIndexCreates[i].GetNativeIndexcreate1(); + + if (null != managedIndexCreates[i].pidxUnicode) + { + NATIVE_UNICODEINDEX unicode = managedIndexCreates[i].pidxUnicode.GetNativeUnicodeIndex(); + nativeIndices[i].indexcreate.pidxUnicode = (NATIVE_UNICODEINDEX*)handles.Add(unicode); + nativeIndices[i].indexcreate.grbit |= (uint)VistaGrbits.IndexUnicode; + } + + nativeIndices[i].indexcreate.szKey = handles.Add(Util.ConvertToNullTerminatedUnicodeByteArray(managedIndexCreates[i].szKey)); + nativeIndices[i].indexcreate.cbKey *= sizeof(char); + nativeIndices[i].indexcreate.szIndexName = handles.Add(Util.ConvertToNullTerminatedUnicodeByteArray(managedIndexCreates[i].szIndexName)); + nativeIndices[i].indexcreate.rgconditionalcolumn = GetNativeConditionalColumns(managedIndexCreates[i].rgconditionalcolumn, false, ref handles); + } + } + + return nativeIndices; + } + + /// + /// Make native indexcreate structures from the managed ones. + /// Only supports Unicode data, since it was introduced in Win7. + /// + /// Index create structures to convert. + /// The handle collection used to pin the data. + /// Pinned native versions of the index creates. + private static unsafe JET_INDEXCREATE.NATIVE_INDEXCREATE2[] GetNativeIndexCreate2s( + IList managedIndexCreates, + ref GCHandleCollection handles) + { + JET_INDEXCREATE.NATIVE_INDEXCREATE2[] nativeIndices = null; + + if (managedIndexCreates != null && managedIndexCreates.Count > 0) + { + nativeIndices = new JET_INDEXCREATE.NATIVE_INDEXCREATE2[managedIndexCreates.Count]; + + for (int i = 0; i < managedIndexCreates.Count; ++i) + { + nativeIndices[i] = managedIndexCreates[i].GetNativeIndexcreate2(); + + if (null != managedIndexCreates[i].pidxUnicode) + { + NATIVE_UNICODEINDEX unicode = managedIndexCreates[i].pidxUnicode.GetNativeUnicodeIndex(); + nativeIndices[i].indexcreate1.indexcreate.pidxUnicode = (NATIVE_UNICODEINDEX*)handles.Add(unicode); + nativeIndices[i].indexcreate1.indexcreate.grbit |= (uint)VistaGrbits.IndexUnicode; + } + + nativeIndices[i].indexcreate1.indexcreate.szKey = handles.Add(Util.ConvertToNullTerminatedUnicodeByteArray(managedIndexCreates[i].szKey)); + nativeIndices[i].indexcreate1.indexcreate.cbKey *= sizeof(char); + nativeIndices[i].indexcreate1.indexcreate.szIndexName = handles.Add(Util.ConvertToNullTerminatedUnicodeByteArray(managedIndexCreates[i].szIndexName)); + nativeIndices[i].indexcreate1.indexcreate.rgconditionalcolumn = GetNativeConditionalColumns(managedIndexCreates[i].rgconditionalcolumn, true, ref handles); + + // Convert pSpaceHints. + if (managedIndexCreates[i].pSpaceHints != null) + { + NATIVE_SPACEHINTS nativeSpaceHints = managedIndexCreates[i].pSpaceHints.GetNativeSpaceHints(); + + nativeIndices[i].pSpaceHints = handles.Add(nativeSpaceHints); + } + } + } + + return nativeIndices; + } +#endif // !MANAGEDESENT_ON_WSA + + /// + /// Set managed columnids from unmanaged columnids. This also sets the columnids + /// in the columndefs. + /// + /// The column definitions. + /// The columnids to set. + /// The native columnids. + /// The number of columnids to set. + private static void SetColumnids(IList columns, IList columnids, IList nativecolumnids, int numColumns) + { + for (int i = 0; i < numColumns; ++i) + { + columnids[i] = new JET_COLUMNID { Value = nativecolumnids[i] }; + columns[i].columnid = columnids[i]; + } + } + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + /// + /// Creates indexes over data in an ESE database. + /// + /// The session to use. + /// The table to create the index on. + /// Array of objects describing the indexes to be created. + /// Number of index description objects. + /// An error code. + private static int CreateIndexes(JET_SESID sesid, JET_TABLEID tableid, IList indexcreates, int numIndexCreates) + { + // pin the memory + var handles = new GCHandleCollection(); + try + { + JET_INDEXCREATE.NATIVE_INDEXCREATE[] nativeIndexcreates = GetNativeIndexCreates(indexcreates, ref handles); + return Err(NativeMethods.JetCreateIndex2(sesid.Value, tableid.Value, nativeIndexcreates, checked((uint)numIndexCreates))); + } + finally + { + handles.Dispose(); + } + } + + /// + /// Creates indexes over data in an ESE database. + /// + /// The session to use. + /// The table to create the index on. + /// Array of objects describing the indexes to be created. + /// Number of index description objects. + /// An error code. + private static int CreateIndexes1(JET_SESID sesid, JET_TABLEID tableid, IList indexcreates, int numIndexCreates) + { + // pin the memory + var handles = new GCHandleCollection(); + try + { + JET_INDEXCREATE.NATIVE_INDEXCREATE1[] nativeIndexcreates = GetNativeIndexCreate1s(indexcreates, ref handles); + return Err(NativeMethods.JetCreateIndex2W(sesid.Value, tableid.Value, nativeIndexcreates, checked((uint)numIndexCreates))); + } + finally + { + handles.Dispose(); + } + } + + /// + /// Creates indexes over data in an ESE database. + /// + /// The session to use. + /// The table to create the index on. + /// Array of objects describing the indexes to be created. + /// Number of index description objects. + /// An error code. + private static int CreateIndexes2(JET_SESID sesid, JET_TABLEID tableid, IList indexcreates, int numIndexCreates) + { + // pin the memory + var handles = new GCHandleCollection(); + try + { + JET_INDEXCREATE.NATIVE_INDEXCREATE2[] nativeIndexcreates = GetNativeIndexCreate2s(indexcreates, ref handles); + return Err(NativeMethods.JetCreateIndex3W(sesid.Value, tableid.Value, nativeIndexcreates, checked((uint)numIndexCreates))); + } + finally + { + handles.Dispose(); + } + } + + /// + /// Creates a table, adds columns, and indices on that table. + /// + /// The session to use. + /// The database to which to add the new table. + /// Object describing the table to create. + /// An error if the call fails. + private static int CreateTableColumnIndex3( + JET_SESID sesid, + JET_DBID dbid, + JET_TABLECREATE tablecreate) + { + JET_TABLECREATE.NATIVE_TABLECREATE3 nativeTableCreate = tablecreate.GetNativeTableCreate3(); + + unsafe + { + var handles = new GCHandleCollection(); + try + { + // Convert/pin the column definitions. + nativeTableCreate.rgcolumncreate = (NATIVE_COLUMNCREATE*)GetNativeColumnCreates(tablecreate.rgcolumncreate, true, ref handles); + + // Convert/pin the index definitions. + JET_INDEXCREATE.NATIVE_INDEXCREATE2[] nativeIndexCreates = GetNativeIndexCreate2s(tablecreate.rgindexcreate, ref handles); + nativeTableCreate.rgindexcreate = handles.Add(nativeIndexCreates); + + // Convert/pin the space hints. + if (tablecreate.pSeqSpacehints != null) + { + NATIVE_SPACEHINTS nativeSpaceHints = tablecreate.pSeqSpacehints.GetNativeSpaceHints(); + nativeTableCreate.pSeqSpacehints = (NATIVE_SPACEHINTS*)handles.Add(nativeSpaceHints); + } + + if (tablecreate.pLVSpacehints != null) + { + NATIVE_SPACEHINTS nativeSpaceHints = tablecreate.pLVSpacehints.GetNativeSpaceHints(); + nativeTableCreate.pLVSpacehints = (NATIVE_SPACEHINTS*)handles.Add(nativeSpaceHints); + } + + int err = NativeMethods.JetCreateTableColumnIndex3W(sesid.Value, dbid.Value, ref nativeTableCreate); + + // Modified fields. + tablecreate.tableid = new JET_TABLEID + { + Value = nativeTableCreate.tableid + }; + + tablecreate.cCreated = checked((int)nativeTableCreate.cCreated); + + if (tablecreate.rgcolumncreate != null) + { + for (int i = 0; i < tablecreate.rgcolumncreate.Length; ++i) + { + tablecreate.rgcolumncreate[i].SetFromNativeColumnCreate(ref nativeTableCreate.rgcolumncreate[i]); + } + } + + if (tablecreate.rgindexcreate != null) + { + for (int i = 0; i < tablecreate.rgindexcreate.Length; ++i) + { + tablecreate.rgindexcreate[i].SetFromNativeIndexCreate(nativeIndexCreates[i]); + } + } + + return Err(err); + } + finally + { + handles.Dispose(); + } + } + } + + /// + /// Convert native instance info structures to managed, treating the + /// unmanaged strings as Unicode. + /// + /// The number of native structures. + /// + /// A pointer to the native structures. This pointer will be freed with JetFreeBuffer. + /// + /// + /// An array of JET_INSTANCE_INFO structures created from the unmanaged. + /// + private unsafe JET_INSTANCE_INFO[] ConvertInstanceInfosUnicode(uint nativeNumInstance, NATIVE_INSTANCE_INFO* nativeInstanceInfos) + { + int numInstances = checked((int)nativeNumInstance); + var instances = new JET_INSTANCE_INFO[numInstances]; + for (int i = 0; i < numInstances; ++i) + { + instances[i] = new JET_INSTANCE_INFO(); + instances[i].SetFromNativeUnicode(nativeInstanceInfos[i]); + } + + this.JetFreeBuffer(new IntPtr(nativeInstanceInfos)); + + return instances; + } + + /// + /// Convert native instance info structures to managed, treating the + /// unmanaged string as Unicode. + /// + /// The number of native structures. + /// + /// A pointer to the native structures. This pointer will be freed with JetFreeBuffer. + /// + /// + /// An array of JET_INSTANCE_INFO structures created from the unmanaged. + /// + private unsafe JET_INSTANCE_INFO[] ConvertInstanceInfosAscii(uint nativeNumInstance, NATIVE_INSTANCE_INFO* nativeInstanceInfos) + { + int numInstances = checked((int)nativeNumInstance); + var instances = new JET_INSTANCE_INFO[numInstances]; + for (int i = 0; i < numInstances; ++i) + { + instances[i] = new JET_INSTANCE_INFO(); + instances[i].SetFromNativeAscii(nativeInstanceInfos[i]); + } + + this.JetFreeBuffer(new IntPtr(nativeInstanceInfos)); + + return instances; + } +#endif // !MANAGEDESENT_ON_WSA + + #endregion + + #region Capability Checking + + /// + /// Check that ESENT supports Server 2003 features. Throws an exception if Server 2003 features + /// aren't supported. + /// + /// The API that is being called. + private void CheckSupportsServer2003Features(string api) + { + if (!this.Capabilities.SupportsServer2003Features) + { + throw UnsupportedApiException(api); + } + } + + /// + /// Check that ESENT supports Vista features. Throws an exception if Vista features + /// aren't supported. + /// + /// The API that is being called. + private void CheckSupportsVistaFeatures(string api) + { + if (!this.Capabilities.SupportsVistaFeatures) + { + throw UnsupportedApiException(api); + } + } + + /// + /// Check that ESENT supports Windows7 features. Throws an exception if Windows7 features + /// aren't supported. + /// + /// The API that is being called. + private void CheckSupportsWindows7Features(string api) + { + if (!this.Capabilities.SupportsWindows7Features) + { + throw UnsupportedApiException(api); + } + } + + /// + /// Check that ESENT supports Windows8 features. Throws an exception if Windows8 features + /// aren't supported. + /// + /// The API that is being called. + private void CheckSupportsWindows8Features(string api) + { + if (!this.Capabilities.SupportsWindows8Features) + { + throw UnsupportedApiException(api); + } + } + + /// + /// Check that ESENT supports Windows10 features. Throws an exception if Windows10 features + /// aren't supported. + /// + /// The API that is being called. + private void CheckSupportsWindows10Features(string api) + { + if (!this.Capabilities.SupportsWindows10Features) + { + throw UnsupportedApiException(api); + } + } + + #endregion + + #region Non-static Helper Methods + + // This overload takes an IntPtr rather than a JET_INDEXID. It's meant to only be called by + // our JetSetCurrentIndex1-3, to 'up-cast' to JetSetCurrentIndex4(). +#if MANAGEDESENT_ON_WSA + /// + /// Set the current index of a cursor. + /// This overload takes an IntPtr rather than a JET_INDEXID. It's meant to only be called by + /// our JetSetCurrentIndex1-3, to 'up-cast' to JetSetCurrentIndex4(). + /// + /// The session to use. + /// The cursor to set the index on. + /// + /// The name of the index to be selected. If this is null or empty the primary + /// index will be selected. + /// + /// + /// Reserved. Must be IntPtr.Zero. + /// + /// + /// Set index options. + /// + /// + /// Sequence number of the multi-valued column value which will be used + /// to position the cursor on the new index. This parameter is only used + /// in conjunction with . When + /// this parameter is not present or is set to zero, its value is presumed + /// to be 1. + /// + /// An error if the call fails. + private int JetSetCurrentIndex4( + JET_SESID sesid, + JET_TABLEID tableid, + string index, + IntPtr indexid, + SetCurrentIndexGrbit grbit, + int itagSequence) + { + TraceFunctionCall(); + + if (indexid != IntPtr.Zero) + { + // If you have a valid indexid, you should be using the other overload! + throw new ArgumentException("indexid must be IntPtr.Zero.", "indexid"); + } + + // A null index name is valid here -- it will set the table to the primary index + return Err(NativeMethods.JetSetCurrentIndex4W(sesid.Value, tableid.Value, index, indexid, (uint)grbit, checked((uint)itagSequence))); + } +#endif // MANAGEDESENT_ON_WSA + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + /// + /// Creates a table, adds columns, and indices on that table. + /// + /// The session to use. + /// The database to which to add the new table. + /// Object describing the table to create. + /// An error if the call fails. + private int CreateTableColumnIndex2( + JET_SESID sesid, + JET_DBID dbid, + JET_TABLECREATE tablecreate) + { + JET_TABLECREATE.NATIVE_TABLECREATE2 nativeTableCreate = tablecreate.GetNativeTableCreate2(); + + unsafe + { + var handles = new GCHandleCollection(); + try + { + JET_INDEXCREATE.NATIVE_INDEXCREATE1[] nativeIndexCreate1s = null; + JET_INDEXCREATE.NATIVE_INDEXCREATE[] nativeIndexCreates = null; + int err; + + if (this.Capabilities.SupportsVistaFeatures) + { + // Convert/pin the column definitions. + nativeTableCreate.rgcolumncreate = (NATIVE_COLUMNCREATE*)GetNativeColumnCreates(tablecreate.rgcolumncreate, true, ref handles); + + // Convert/pin the index definitions. + nativeIndexCreate1s = GetNativeIndexCreate1s(tablecreate.rgindexcreate, ref handles); + nativeTableCreate.rgindexcreate = handles.Add(nativeIndexCreate1s); + err = NativeMethods.JetCreateTableColumnIndex2W(sesid.Value, dbid.Value, ref nativeTableCreate); + } + else + { + // Convert/pin the column definitions. + nativeTableCreate.rgcolumncreate = (NATIVE_COLUMNCREATE*)GetNativeColumnCreates(tablecreate.rgcolumncreate, false, ref handles); + + // Convert/pin the index definitions. + nativeIndexCreates = GetNativeIndexCreates(tablecreate.rgindexcreate, ref handles); + nativeTableCreate.rgindexcreate = handles.Add(nativeIndexCreates); + err = NativeMethods.JetCreateTableColumnIndex2(sesid.Value, dbid.Value, ref nativeTableCreate); + } + + // Modified fields. + tablecreate.tableid = new JET_TABLEID + { + Value = nativeTableCreate.tableid + }; + + tablecreate.cCreated = checked((int)nativeTableCreate.cCreated); + + if (tablecreate.rgcolumncreate != null) + { + for (int i = 0; i < tablecreate.rgcolumncreate.Length; ++i) + { + tablecreate.rgcolumncreate[i].SetFromNativeColumnCreate(ref nativeTableCreate.rgcolumncreate[i]); + } + } + + if (tablecreate.rgindexcreate != null) + { + for (int i = 0; i < tablecreate.rgindexcreate.Length; ++i) + { + if (null != nativeIndexCreate1s) + { + tablecreate.rgindexcreate[i].SetFromNativeIndexCreate(nativeIndexCreate1s[i]); + } + else + { + tablecreate.rgindexcreate[i].SetFromNativeIndexCreate(nativeIndexCreates[i]); + } + } + } + + return Err(err); + } + finally + { + handles.Dispose(); + } + } + } +#endif // !MANAGEDESENT_ON_WSA + + #endregion + + #region Hooks for not-yet-published APIs. + /// + /// Provides a hook to allow population of additional fields in + /// a different file. These additonal fields are not yet published + /// on MSDN. + /// + /// The name of the database about which to retrieve information. + /// The output structure to populate. + /// Specifies which information to retrieve. + /// Whether the additional fields specified by in + /// are populated. + /// The error code returned. + partial void NotYetPublishedGetDbinfomisc( + string databaseName, + ref JET_DBINFOMISC dbinfomisc, + JET_DbInfo infoLevel, + ref bool notYetPublishedSupported, + ref int err); + + /// + /// Provides a hook to allow population of additional fields in + /// a different file. These additonal fields are not yet published + /// on MSDN. + /// + /// The session to use. + /// The database identifier. + /// The output structure to populate. + /// Specifies which information to retrieve. + /// Whether the additional fields specified by in + /// are populated. + /// The error code returned. + partial void NotYetPublishedGetDbinfomisc( + JET_SESID sesid, + JET_DBID dbid, + ref JET_DBINFOMISC dbinfomisc, + JET_DbInfo infoLevel, + ref bool notYetPublishedSupported, + ref int err); + + #endregion + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/JetCallbackWrapper.cs b/WelsonJS.Toolkit/EsentInterop/JetCallbackWrapper.cs new file mode 100644 index 0000000..002c061 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/JetCallbackWrapper.cs @@ -0,0 +1,175 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Diagnostics; + using System.Globalization; + using System.Reflection; + using System.Runtime.CompilerServices; + + /// + /// A multi-purpose callback function used by the database engine to inform + /// the application of an event involving online defragmentation and cursor + /// state notifications. + /// + /// The session for which the callback is being made. + /// The database for which the callback is being made. + /// The cursor for which the callback is being made. + /// The operation for which the callback is being made. + /// First callback-specific argument. + /// Second callback-specific argument. + /// Callback context. + /// This parameter is not used. + /// An ESENT error code. + internal delegate JET_err NATIVE_CALLBACK( + IntPtr sesid, + uint dbid, + IntPtr tableid, + uint cbtyp, + IntPtr arg1, + IntPtr arg2, + IntPtr context, + IntPtr unused); + + /// + /// Wraps a NATIVE_CALLBACK callback around a JET_CALLBACK. This is + /// used to catch exceptions and provide argument conversion. + /// + internal sealed class JetCallbackWrapper + { + /// + /// API call tracing. + /// + private static readonly TraceSwitch TraceSwitch = new TraceSwitch("ESENT JetCallbackWrapper", "Wrapper around unmanaged ESENT callback"); + + /// + /// The wrapped status callback. + /// + private readonly WeakReference wrappedCallback; + + /// + /// The native version of the callback. This will actually be a closure + /// because we are calling a non-static method. Keep track of it here + /// to make sure that it isn't garbage collected. + /// + private readonly NATIVE_CALLBACK nativeCallback; + +#if !MANAGEDESENT_ON_WSA + /// + /// Initializes static members of the class. + /// + static JetCallbackWrapper() + { + // We don't want a JIT failure when trying to execute the callback + // because that would throw an exception through ESENT, corrupting it. + // It is fine for the wrapped callback to fail because CallbackImpl + // will catch the exception and deal with it. + RuntimeHelpers.PrepareMethod(typeof(StatusCallbackWrapper).GetMethod( + "CallbackImpl", + BindingFlags.NonPublic | BindingFlags.Instance).MethodHandle); + } +#endif // !MANAGEDESENT_ON_WSA + + /// + /// Initializes a new instance of the JetCallbackWrapper class. + /// + /// + /// The managed callback to use. + /// + public JetCallbackWrapper(JET_CALLBACK callback) + { + this.wrappedCallback = new WeakReference(callback); + this.nativeCallback = this.CallbackImpl; + Debug.Assert(this.wrappedCallback.IsAlive, "Callback isn't alive"); + } + + /// + /// Gets a value indicating whether the wrapped callback has been garbage + /// collected. + /// + public bool IsAlive + { + get + { + return this.wrappedCallback.IsAlive; + } + } + + /// + /// Gets a NATIVE_CALLBACK callback that wraps the managed callback. + /// + public NATIVE_CALLBACK NativeCallback + { + get + { + return this.nativeCallback; + } + } + + /// + /// Determine if the callback is wrapping the specified JET_CALLBACK. + /// + /// The callback. + /// True if this wrapper is wrapping the callback. + public bool IsWrapping(JET_CALLBACK callback) + { + return callback.Equals(this.wrappedCallback.Target); + } + + /// + /// Callback function for native code. We don't want to throw an exception through + /// unmanaged ESENT because that will corrupt ESENT's internal state. Instead we + /// catch all exceptions and return an error instead. We use a CER to make catching + /// the exceptions as reliable as possible. + /// + /// The session for which the callback is being made. + /// The database for which the callback is being made. + /// The cursor for which the callback is being made. + /// The operation for which the callback is being made. + /// First callback-specific argument. + /// Second callback-specific argument. + /// Callback context. + /// This parameter is not used. + /// An ESENT error code. + private JET_err CallbackImpl( + IntPtr nativeSesid, + uint nativeDbid, + IntPtr nativeTableid, + uint nativeCbtyp, + IntPtr arg1, + IntPtr arg2, + IntPtr nativeContext, + IntPtr unused) + { + RuntimeHelpers.PrepareConstrainedRegions(); + try + { + var sesid = new JET_SESID { Value = nativeSesid }; + var dbid = new JET_DBID { Value = nativeDbid }; + var tableid = new JET_TABLEID { Value = nativeTableid }; + JET_cbtyp cbtyp = (JET_cbtyp)nativeCbtyp; + + Debug.Assert(this.wrappedCallback.IsAlive, "Wrapped callback has been garbage collected"); + + // This will throw an exception if the wrapped callback has been collected. The exception + // will be handled below. + JET_CALLBACK callback = (JET_CALLBACK)this.wrappedCallback.Target; + return callback(sesid, dbid, tableid, cbtyp, null, null, nativeContext, IntPtr.Zero); + } + catch (Exception ex) + { + // Thread aborts aren't handled here. ESENT callbacks can execute on client threads or + // internal ESENT threads so it isn't clear what should be done on an abort. + Trace.WriteLineIf( + TraceSwitch.TraceWarning, + string.Format(CultureInfo.InvariantCulture, "Caught Exception {0}", ex)); + return JET_err.CallbackFailed; + } + } + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/JetCapabilities.cs b/WelsonJS.Toolkit/EsentInterop/JetCapabilities.cs new file mode 100644 index 0000000..5e9412d --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/JetCapabilities.cs @@ -0,0 +1,67 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop.Implementation +{ + /// + /// Describes the functionality exposed by an object which implements IJetApi. + /// + internal sealed class JetCapabilities + { + /// + /// Gets or sets a value indicating whether Windows Server 2003 features + /// (in the Interop.Server2003 namespace) are supported. + /// + public bool SupportsServer2003Features { get; set; } + + /// + /// Gets or sets a value indicating whether Vista features (in the + /// Interop.Vista namespace) are supported. + /// + public bool SupportsVistaFeatures { get; set; } + + /// + /// Gets or sets a value indicating whether Win7 features (in the + /// Interop.Windows7 namespace) are supported. + /// + public bool SupportsWindows7Features { get; set; } + + /// + /// Gets or sets a value indicating whether Win8 features (in the + /// Interop.Windows8 namespace) are supported. + /// + public bool SupportsWindows8Features { get; set; } + + /// + /// Gets or sets a value indicating whether Win8.1 features (in the + /// Interop.Windows81 namespace) are supported. + /// + public bool SupportsWindows81Features { get; set; } + + /// + /// Gets or sets a value indicating whether Win10 features (in the + /// Interop.Windows10 namespace) are supported. + /// + public bool SupportsWindows10Features { get; set; } + + /// + /// Gets or sets a value indicating whether unicode file paths are supported. + /// + public bool SupportsUnicodePaths { get; set; } + + /// + /// Gets or sets a value indicating whether large (> 255 byte) keys are supported. + /// The key size for an index can be specified in the + /// object. + /// + public bool SupportsLargeKeys { get; set; } + + /// + /// Gets or sets the maximum number of components in a sort or index key. + /// + public int ColumnsKeyMost { get; set; } + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/Jet_indexcreate3.cs b/WelsonJS.Toolkit/EsentInterop/Jet_indexcreate3.cs new file mode 100644 index 0000000..69ef259 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/Jet_indexcreate3.cs @@ -0,0 +1,191 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Diagnostics.CodeAnalysis; + using System.Runtime.InteropServices; + using Microsoft.Isam.Esent.Interop.Vista; + + /// + /// The native version of the JET_INDEXCREATE3 structure. + /// + [StructLayout(LayoutKind.Sequential)] + [SuppressMessage("Microsoft.StyleCop.CSharp.NamingRules", + "SA1305:FieldNamesMustNotUseHungarianNotation", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1307:AccessibleFieldsMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + internal unsafe struct NATIVE_INDEXCREATE3 + { + /// + /// Size of the structure. + /// + public uint cbStruct; + + /// + /// Name of the index. + /// + public IntPtr szIndexName; + + /// + /// Index key description. + /// + public IntPtr szKey; + + /// + /// Size of index key description. + /// + public uint cbKey; + + /// + /// Index options. + /// + public uint grbit; + + /// + /// Index density. + /// + public uint ulDensity; + + /// + /// Pointer to unicode sort options. + /// + public NATIVE_UNICODEINDEX2* pidxUnicode; + + /// + /// Maximum size of column data to index. This can also be + /// a pointer to a JET_TUPLELIMITS structure. + /// + public IntPtr cbVarSegMac; + + /// + /// Pointer to array of conditional columns. + /// + public IntPtr rgconditionalcolumn; + + /// + /// Count of conditional columns. + /// + public uint cConditionalColumn; + + /// + /// Returned error from index creation. + /// + public int err; + + /// + /// Maximum size of the key. + /// + public uint cbKeyMost; + + /// + /// A pointer. + /// + public IntPtr pSpaceHints; + } + + /// + /// Contains the information needed to create an index over data in an ESE database. + /// + public sealed partial class JET_INDEXCREATE : IContentEquatable, IDeepCloneable + { + /// + /// Gets the native (interop) version of this object, except for + /// and . + /// + /// The cbKey holds the length of the key in bytes, and does not need to be adjusted. + /// The native (interop) version of this object. + internal NATIVE_INDEXCREATE3 GetNativeIndexcreate3() + { + this.CheckMembersAreValid(); + var native = new NATIVE_INDEXCREATE3(); + + native.cbStruct = checked((uint)Marshal.SizeOf(typeof(NATIVE_INDEXCREATE3))); + + // szIndexName and szKey are converted at pinvoke time. + // + // native.szIndexName = this.szIndexName; + // native.szKey = this.szKey; + native.cbKey = checked((uint)this.cbKey * sizeof(char)); + native.grbit = unchecked((uint)this.grbit); + native.ulDensity = checked((uint)this.ulDensity); + + native.cbVarSegMac = new IntPtr(this.cbVarSegMac); + + native.cConditionalColumn = checked((uint)this.cConditionalColumn); + + if (0 != this.cbKeyMost) + { + native.cbKeyMost = checked((uint)this.cbKeyMost); + native.grbit |= unchecked((uint)VistaGrbits.IndexKeyMost); + } + + return native; + } + + /// + /// Sets only the output fields of the object from a struct, + /// specifically . + /// + /// + /// The native indexcreate to set the values from. + /// + internal void SetFromNativeIndexCreate(ref NATIVE_INDEXCREATE3 value) + { + this.err = (JET_err)value.err; + } + + /// + /// Sets all of the fields (not just output fields) of the object from a struct, + /// specifically . + /// + /// + /// The native indexcreate to set the values from. + /// + internal void SetAllFromNativeIndexCreate(ref NATIVE_INDEXCREATE3 value) + { + this.szIndexName = Marshal.PtrToStringUni(value.szIndexName); + this.cbKey = unchecked((int)value.cbKey / sizeof(char)); + this.szKey = Marshal.PtrToStringUni(value.szKey, this.cbKey); + if (this.cbKey != this.szKey.Length) + { + throw new ArgumentException(string.Format("cbKey {0} != szKey.Length {1}", this.cbKey, this.szKey.Length)); + } + + this.grbit = unchecked((CreateIndexGrbit)value.grbit); + this.ulDensity = unchecked((int)value.ulDensity); + + unsafe + { + this.pidxUnicode = new JET_UNICODEINDEX(ref *value.pidxUnicode); + } + + this.cbVarSegMac = (int)value.cbVarSegMac; + this.cConditionalColumn = unchecked((int)value.cConditionalColumn); + this.rgconditionalcolumn = new JET_CONDITIONALCOLUMN[this.cConditionalColumn]; + + int sizeofConditionalColumn = Marshal.SizeOf(typeof(NATIVE_CONDITIONALCOLUMN)); + for (int i = 0; i < this.cConditionalColumn; ++i) + { + IntPtr addressOfElement = value.rgconditionalcolumn + i * sizeofConditionalColumn; + NATIVE_CONDITIONALCOLUMN nativeConditionalColumn = + (NATIVE_CONDITIONALCOLUMN)Marshal.PtrToStructure(addressOfElement, typeof(NATIVE_CONDITIONALCOLUMN)); + this.rgconditionalcolumn[i] = new JET_CONDITIONALCOLUMN(ref nativeConditionalColumn); + } + + this.err = (JET_err)value.err; + this.cbKeyMost = unchecked((int)value.cbKeyMost); + + var nativeSpaceHints = (NATIVE_SPACEHINTS)Marshal.PtrToStructure(value.pSpaceHints, typeof(NATIVE_SPACEHINTS)); + this.pSpaceHints = new JET_SPACEHINTS(); + this.pSpaceHints.SetFromNativeSpaceHints(nativeSpaceHints); + } + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/Jet_opentemporarytable2.cs b/WelsonJS.Toolkit/EsentInterop/Jet_opentemporarytable2.cs new file mode 100644 index 0000000..6fd34c8 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/Jet_opentemporarytable2.cs @@ -0,0 +1,97 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop.Vista +{ + using System; + using System.Diagnostics.CodeAnalysis; + using System.Globalization; + using System.Runtime.InteropServices; + + /// + /// The native version of the JET_OPENTEMPORARYTABLE2 structure. + /// + [StructLayout(LayoutKind.Sequential)] + [SuppressMessage("Microsoft.StyleCop.CSharp.NamingRules", + "SA1305:FieldNamesMustNotUseHungarianNotation", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1307:AccessibleFieldsMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + internal unsafe struct NATIVE_OPENTEMPORARYTABLE2 + { + /// + /// Size of the structure. + /// + public uint cbStruct; + + /// + /// Columns to create. + /// + public NATIVE_COLUMNDEF* prgcolumndef; + + /// + /// Number of entries in prgcolumndef. + /// + public uint ccolumn; + + /// + /// Optional pointer to unicode index information. + /// + public NATIVE_UNICODEINDEX2* pidxunicode; + + /// + /// Table options. + /// + public uint grbit; + + /// + /// Pointer to array of returned columnids. This + /// should have at least ccolumn entries. + /// + public uint* rgcolumnid; + + /// + /// Maximum key size. + /// + public uint cbKeyMost; + + /// + /// Maximum amount of data used to construct a key. + /// + public uint cbVarSegMac; + + /// + /// Returns the tableid of the new table. + /// + public IntPtr tableid; + } + + /// + /// A collection of parameters for the JetOpenTemporaryTable method. + /// + public partial class JET_OPENTEMPORARYTABLE + { + /// + /// Returns the unmanaged opentemporarytable that represents this managed class. + /// + /// + /// A native (interop) version of the JET_OPENTEMPORARYTABLE. + /// + internal NATIVE_OPENTEMPORARYTABLE2 GetNativeOpenTemporaryTable2() + { + this.CheckDataSize(); + var openTemporaryTable = new NATIVE_OPENTEMPORARYTABLE2(); + openTemporaryTable.cbStruct = checked((uint)Marshal.SizeOf(typeof(NATIVE_OPENTEMPORARYTABLE2))); + openTemporaryTable.ccolumn = checked((uint)this.ccolumn); + openTemporaryTable.grbit = (uint)this.grbit; + openTemporaryTable.cbKeyMost = checked((uint)this.cbKeyMost); + openTemporaryTable.cbVarSegMac = checked((uint)this.cbVarSegMac); + return openTemporaryTable; + } + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/Jet_tablecreate4.cs b/WelsonJS.Toolkit/EsentInterop/Jet_tablecreate4.cs new file mode 100644 index 0000000..dd160e0 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/Jet_tablecreate4.cs @@ -0,0 +1,159 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Diagnostics; + using System.Diagnostics.CodeAnalysis; + using System.Globalization; + using System.Runtime.InteropServices; + using Microsoft.Isam.Esent.Interop.Implementation; + + /// + /// The native version of the structure. This includes callbacks, + /// space hints, and uses NATIVE_INDEXCREATE4. + /// + [StructLayout(LayoutKind.Sequential)] + [SuppressMessage("Microsoft.StyleCop.CSharp.NamingRules", + "SA1305:FieldNamesMustNotUseHungarianNotation", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1307:AccessibleFieldsMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + internal unsafe struct NATIVE_TABLECREATE4 + { + /// + /// Size of the structure. + /// + public uint cbStruct; + + /// + /// Name of the table to create. + /// + [MarshalAs(UnmanagedType.LPWStr)] + public string szTableName; + + /// + /// Name of the table from which to inherit base DDL. + /// + [MarshalAs(UnmanagedType.LPWStr)] + public string szTemplateTableName; + + /// + /// Initial pages to allocate for table. + /// + public uint ulPages; + + /// + /// Table density. + /// + public uint ulDensity; + + /// + /// Array of column creation info. + /// + public NATIVE_COLUMNCREATE* rgcolumncreate; + + /// + /// Number of columns to create. + /// + public uint cColumns; + + /// + /// Array of indices to create, pointer to . + /// + public IntPtr rgindexcreate; + + /// + /// Number of indices to create. + /// + public uint cIndexes; + + /// + /// Callback function to use for the table. + /// + [MarshalAs(UnmanagedType.LPWStr)] + public string szCallback; + + /// + /// Type of the callback function. + /// + public JET_cbtyp cbtyp; + + /// + /// Table options. + /// + public uint grbit; + + /// + /// Space allocation, maintenance, and usage hints for default sequential index. + /// + public NATIVE_SPACEHINTS* pSeqSpacehints; + + /// + /// Space allocation, maintenance, and usage hints for Separated LV tree. + /// + public NATIVE_SPACEHINTS* pLVSpacehints; + + /// + /// Heuristic size to separate a intrinsic LV from the primary record. + /// + public uint cbSeparateLV; + + /// + /// Returned tableid. + /// + public IntPtr tableid; + + /// + /// Count of objects created (columns+table+indexes+callbacks). + /// + public uint cCreated; + } + + /// + /// Contains the information needed to create a table in an ESE database. + /// + public partial class JET_TABLECREATE : IContentEquatable, IDeepCloneable + { + /// + /// Gets the native (interop) version of this object. The following members are + /// NOT converted: , , + /// , and . + /// + /// The native (interop) version of this object. + internal NATIVE_TABLECREATE4 GetNativeTableCreate4() + { + this.CheckMembersAreValid(); + + var native = new NATIVE_TABLECREATE4(); + native.cbStruct = checked((uint)Marshal.SizeOf(typeof(NATIVE_TABLECREATE4))); + native.szTableName = this.szTableName; + native.szTemplateTableName = this.szTemplateTableName; + native.ulPages = checked((uint)this.ulPages); + native.ulDensity = checked((uint)this.ulDensity); + + // native.rgcolumncreate is done at pinvoke time. + native.cColumns = checked((uint)this.cColumns); + + // native.rgindexcreate is done at pinvoke time. + native.cIndexes = checked((uint)this.cIndexes); + native.szCallback = this.szCallback; + native.cbtyp = this.cbtyp; + native.grbit = checked((uint)this.grbit); + + // native.pSeqSpacehints is done at pinvoke time. + // native.pLVSpacehints is done at pinvoke time. + native.cbSeparateLV = checked((uint)this.cbSeparateLV); + native.tableid = this.tableid.Value; + native.cCreated = checked((uint)this.cCreated); + + return native; + } + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/LegacyFileNames.cs b/WelsonJS.Toolkit/EsentInterop/LegacyFileNames.cs new file mode 100644 index 0000000..630760e --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/LegacyFileNames.cs @@ -0,0 +1,26 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop.Vista +{ + /// + /// Options for LegacyFileNames. + /// + public enum LegacyFileNames + { + /// + /// When this option is present then the database engine will use the following naming conventions for its files: + /// o Transaction Log files will use .LOG for their file extension. + /// o Checkpoint files will use .CHK for their file extension. + /// + ESE98FileNames = 0x00000001, + + /// + /// Preserve the 8.3 naming syntax for as long as possible. (this should not be changed, w/o ensuring there are no log files). + /// + EightDotThreeSoftCompat = 0x00000002, + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/LibraryHelpers.cs b/WelsonJS.Toolkit/EsentInterop/LibraryHelpers.cs new file mode 100644 index 0000000..5a9c913 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/LibraryHelpers.cs @@ -0,0 +1,273 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Globalization; + using System.Runtime.InteropServices; + using System.Security; + using System.Text; + using System.Threading; + + using Microsoft.Isam.Esent.Interop.Implementation; + + /// + /// Contains several helper functions that are useful in the test binary. + /// In particular, it contains functionality that is not available in + /// reduced-functionality environments (such as CoreClr). + /// + internal static class LibraryHelpers + { + /// Provides a platform-specific character used to separate directory levels in a path string that reflects a hierarchical file system organization. + /// 1 + public static readonly char DirectorySeparatorChar = '\\'; + + /// Provides a platform-specific alternate character used to separate directory levels in a path string that reflects a hierarchical file system organization. + /// 1 + public static readonly char AltDirectorySeparatorChar = '/'; + + /// + /// Gets an ASCII encoder. + /// + public static Encoding EncodingASCII + { + get + { +#if MANAGEDESENT_ON_CORECLR + return SlowAsciiEncoding.Encoding; +#else + return Encoding.ASCII; +#endif + } + } + + /// + /// Gets a new ASCII encoder. It's preferred to use EncodingASCII, but some applications (e.g. tests) + /// may want a different Encoding object. + /// + public static Encoding NewEncodingASCII + { + get + { +#if MANAGEDESENT_ON_CORECLR + return new SlowAsciiEncoding(); +#else + return new ASCIIEncoding(); +#endif + } + } + + // This should be dead code when running on Core CLR; This is only called by + // GetIndexInfoFromIndexlist() when called on a pre-Win8 system, and Core CLR + // is only on Win8 anyway. +#if !MANAGEDESENT_ON_CORECLR + /// + /// Creates a CultureInfo object when given the LCID. + /// + /// + /// The lcid passed in. + /// + /// + /// A CultureInfo object. + /// + public static CultureInfo CreateCultureInfoByLcid(int lcid) + { + return new CultureInfo(lcid); + } +#endif // !MANAGEDESENT_ON_CORECLR + + /// + /// Allocates memory on the native heap. + /// + /// A pointer to native memory. + /// The size of the memory desired. + public static IntPtr MarshalAllocHGlobal(int size) + { +#if MANAGEDESENT_ON_CORECLR && !MANAGEDESENT_ON_WSA + return Win32.NativeMethods.LocalAlloc(0, new UIntPtr((uint)size)); +#else + return Marshal.AllocHGlobal(size); +#endif + } + + /// + /// Frees memory that was allocated on the native heap. + /// + /// A pointer to native memory. + public static void MarshalFreeHGlobal(IntPtr buffer) + { +#if MANAGEDESENT_ON_CORECLR && !MANAGEDESENT_ON_WSA + Win32.NativeMethods.LocalFree(buffer); +#else + Marshal.FreeHGlobal(buffer); +#endif + } + + /// Copies the contents of a managed into unmanaged memory. + /// The address, in unmanaged memory, to where the was copied, or 0 if is null. + /// A managed string to be copied. + /// The method could not allocate enough native heap memory. + /// The parameter exceeds the maximum length allowed by the operating system. + public static IntPtr MarshalStringToHGlobalUni(string managedString) + { +#if MANAGEDESENT_ON_CORECLR && !MANAGEDESENT_ON_WSA + return MyStringToHGlobalUni(managedString); +#else + return Marshal.StringToHGlobalUni(managedString); +#endif + } + + /// + /// Retrieves the managed ID of the current thread. + /// + /// The ID of the current thread. + public static int GetCurrentManagedThreadId() + { +#if MANAGEDESENT_ON_CORECLR + return Environment.CurrentManagedThreadId; +#else + return Thread.CurrentThread.ManagedThreadId; +#endif + } + + /// + /// Cancels an requested for the current thread. + /// + /// Abort was not invoked on the current thread. The caller does not have the required security permission for the current thread. 2 + public static void ThreadResetAbort() + { +#if MANAGEDESENT_ON_CORECLR + // Do nothing. +#else + Thread.ResetAbort(); +#endif + } + + // FUTURE-2013/12/16-martinc. It appears that all of this hacking for running on Core CLR may no longer be necessary. + // We initially ported to an early version of Core CLR that had a lot of functionality missing. By the time + // Windows Store Apps came out in Windows 8, many of these functions were added back. +#if MANAGEDESENT_ON_CORECLR && !MANAGEDESENT_ON_WSA + // System.Runtime.InteropServices.Marshal + + /// Copies the contents of a managed into unmanaged memory. + /// The address, in unmanaged memory, to where the was copied, or 0 if is null. + /// A managed string to be copied. + /// The method could not allocate enough native heap memory. + /// The parameter exceeds the maximum length allowed by the operating system. + [SecurityCritical] + private static unsafe IntPtr MyStringToHGlobalUni(string managedString) + { + if (managedString == null) + { + return IntPtr.Zero; + } + + int charCountWithNull = managedString.Length + 1; + int byteCount = charCountWithNull * sizeof(char); + + if (byteCount < managedString.Length) + { + throw new ArgumentOutOfRangeException("managedString"); + } + + UIntPtr sizetdwBytes = new UIntPtr((uint)byteCount); + IntPtr rawBuffer = Win32.NativeMethods.LocalAlloc(0, sizetdwBytes); + if (rawBuffer == IntPtr.Zero) + { + throw new OutOfMemoryException(); + } + + fixed (char* sourcePointer = managedString) + { + byte* destPointer = (byte*)rawBuffer; + var unicodeEncoding = new System.Text.UnicodeEncoding(); + int bytesWritten = unicodeEncoding.GetBytes(sourcePointer, charCountWithNull, destPointer, byteCount); + } + + return rawBuffer; + } +#endif // MANAGEDESENT_ON_CORECLR && !MANAGEDESENT_ON_WSA + + /// Returns a equivalent to the specified OLE Automation Date. + /// A that represents the same date and time as . + /// An OLE Automation Date value. + /// The date is not a valid OLE Automation Date value. + /// 1 + public static DateTime FromOADate(double d) + { +#if MANAGEDESENT_ON_CORECLR + return new DateTime(DoubleDateToTicks(d), DateTimeKind.Unspecified); +#else + return DateTime.FromOADate(d); +#endif + } + +#if MANAGEDESENT_ON_CORECLR + /// + /// Copied from the reflected implementation. + /// + /// The date, as a 64bit integer. + /// The date, as a double representation. + internal static double TicksToOADate(long value) + { + if (value == 0L) + { + return 0.0; + } + + if (value < 864000000000L) + { + value += 599264352000000000L; + } + + if (value < 31241376000000000L) + { + throw new OverflowException(); + } + + long num = (value - 599264352000000000L) / 10000L; + if (num < 0L) + { + long num2 = num % 86400000L; + if (num2 != 0L) + { + num -= (86400000L + num2) * 2L; + } + } + + return (double)num / 86400000.0; + } + + /// + /// Copied from the reflected implementation. + /// + /// The date, as a double representation. + /// The date, as a 64bit integer. + internal static long DoubleDateToTicks(double value) + { + if (value >= 2958466.0 || value <= -657435.0) + { + throw new ArgumentException("value does not represent a valid date", "value"); + } + + long num = (long)((value * 86400000.0) + ((value >= 0.0) ? 0.5 : -0.5)); + if (num < 0L) + { + num -= (num % 86400000L) * 2L; + } + + num += 59926435200000L; + if (num < 0L || num >= 315537897600000L) + { + throw new ArgumentException("value does not represent a valid date", "value"); + } + + return num * 10000L; + } +#endif + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/MakeKeyHelpers.cs b/WelsonJS.Toolkit/EsentInterop/MakeKeyHelpers.cs new file mode 100644 index 0000000..50ecf5f --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/MakeKeyHelpers.cs @@ -0,0 +1,321 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Text; + + /// + /// Helper methods for the ESENT API. These do data conversion for + /// JetMakeKey. + /// + public static partial class Api + { + /// + /// Constructs a search key that may then be used by + /// and . + /// + /// The session to use. + /// The cursor to create the key on. + /// Column data for the current key column of the current index. + /// Key options. + public static void MakeKey(JET_SESID sesid, JET_TABLEID tableid, byte[] data, MakeKeyGrbit grbit) + { + if (null == data) + { + Api.JetMakeKey(sesid, tableid, null, 0, grbit); + } + else if (0 == data.Length) + { + Api.JetMakeKey(sesid, tableid, data, data.Length, grbit | MakeKeyGrbit.KeyDataZeroLength); + } + else + { + Api.JetMakeKey(sesid, tableid, data, data.Length, grbit); + } + } + + /// + /// Constructs a search key that may then be used by + /// and . + /// + /// The session to use. + /// The cursor to create the key on. + /// Column data for the current key column of the current index. + /// The encoding used to convert the string. + /// Key options. + public static void MakeKey(JET_SESID sesid, JET_TABLEID tableid, string data, Encoding encoding, MakeKeyGrbit grbit) + { + CheckEncodingIsValid(encoding); + + if (null == data) + { + Api.JetMakeKey(sesid, tableid, null, 0, grbit); + } + else if (0 == data.Length) + { + Api.JetMakeKey(sesid, tableid, null, 0, grbit | MakeKeyGrbit.KeyDataZeroLength); + } + else if (Encoding.Unicode == encoding) + { + // Optimization for Unicode strings + unsafe + { + fixed (char* buffer = data) + { + Api.JetMakeKey(sesid, tableid, new IntPtr(buffer), checked(data.Length * sizeof(char)), grbit); + } + } + } + else + { +#if MANAGEDESENT_ON_WSA + // Encoding.GetBytes(char*, int, byte*, int) overload is missing in new Windows UI. + // So we can't use the ColumnCache. We'll just use a different GetBytes() overload. + byte[] buffer = encoding.GetBytes(data); + Api.JetMakeKey(sesid, tableid, buffer, buffer.Length, grbit); +#else + // Convert the string using a cached column buffer. The column buffer is far larger + // than the maximum key size, so any data truncation here won't matter. + byte[] buffer = null; + try + { + buffer = Caches.ColumnCache.Allocate(); + int dataSize; + unsafe + { + fixed (char* chars = data) + fixed (byte* bytes = buffer) + { + dataSize = encoding.GetBytes(chars, data.Length, bytes, buffer.Length); + } + } + + JetMakeKey(sesid, tableid, buffer, dataSize, grbit); + } + finally + { + if (buffer != null) + { + Caches.ColumnCache.Free(ref buffer); + } + } +#endif + } + } + + /// + /// Constructs a search key that may then be used by + /// and . + /// + /// The session to use. + /// The cursor to create the key on. + /// Column data for the current key column of the current index. + /// Key options. + public static void MakeKey(JET_SESID sesid, JET_TABLEID tableid, bool data, MakeKeyGrbit grbit) + { + byte b = data ? (byte)0xff : (byte)0x0; + Api.MakeKey(sesid, tableid, b, grbit); + } + + /// + /// Constructs a search key that may then be used by + /// and . + /// + /// The session to use. + /// The cursor to create the key on. + /// Column data for the current key column of the current index. + /// Key options. + public static void MakeKey(JET_SESID sesid, JET_TABLEID tableid, byte data, MakeKeyGrbit grbit) + { + unsafe + { + const int DataSize = sizeof(byte); + var pointer = new IntPtr(&data); + Api.JetMakeKey(sesid, tableid, pointer, DataSize, grbit); + } + } + + /// + /// Constructs a search key that may then be used by + /// and . + /// + /// The session to use. + /// The cursor to create the key on. + /// Column data for the current key column of the current index. + /// Key options. + public static void MakeKey(JET_SESID sesid, JET_TABLEID tableid, short data, MakeKeyGrbit grbit) + { + unsafe + { + const int DataSize = sizeof(short); + var pointer = new IntPtr(&data); + Api.JetMakeKey(sesid, tableid, pointer, DataSize, grbit); + } + } + + /// + /// Constructs a search key that may then be used by + /// and . + /// + /// The session to use. + /// The cursor to create the key on. + /// Column data for the current key column of the current index. + /// Key options. + public static void MakeKey(JET_SESID sesid, JET_TABLEID tableid, int data, MakeKeyGrbit grbit) + { + unsafe + { + const int DataSize = sizeof(int); + var pointer = new IntPtr(&data); + Api.JetMakeKey(sesid, tableid, pointer, DataSize, grbit); + } + } + + /// + /// Constructs a search key that may then be used by + /// and . + /// + /// The session to use. + /// The cursor to create the key on. + /// Column data for the current key column of the current index. + /// Key options. + public static void MakeKey(JET_SESID sesid, JET_TABLEID tableid, long data, MakeKeyGrbit grbit) + { + unsafe + { + const int DataSize = sizeof(long); + var pointer = new IntPtr(&data); + Api.JetMakeKey(sesid, tableid, pointer, DataSize, grbit); + } + } + + /// + /// Constructs a search key that may then be used by + /// and . + /// + /// The session to use. + /// The cursor to create the key on. + /// Column data for the current key column of the current index. + /// Key options. + public static void MakeKey(JET_SESID sesid, JET_TABLEID tableid, Guid data, MakeKeyGrbit grbit) + { + unsafe + { + const int DataSize = 16 /* sizeof(Guid) */; + var pointer = new IntPtr(&data); + Api.JetMakeKey(sesid, tableid, pointer, DataSize, grbit); + } + } + + /// + /// Constructs a search key that may then be used by + /// and . + /// + /// The session to use. + /// The cursor to create the key on. + /// Column data for the current key column of the current index. + /// Key options. + public static void MakeKey(JET_SESID sesid, JET_TABLEID tableid, DateTime data, MakeKeyGrbit grbit) + { + Api.MakeKey(sesid, tableid, data.ToOADate(), grbit); + } + + /// + /// Constructs a search key that may then be used by + /// and . + /// + /// The session to use. + /// The cursor to create the key on. + /// Column data for the current key column of the current index. + /// Key options. + public static void MakeKey(JET_SESID sesid, JET_TABLEID tableid, float data, MakeKeyGrbit grbit) + { + unsafe + { + const int DataSize = sizeof(float); + var pointer = new IntPtr(&data); + Api.JetMakeKey(sesid, tableid, pointer, DataSize, grbit); + } + } + + /// + /// Constructs a search key that may then be used by + /// and . + /// + /// The session to use. + /// The cursor to create the key on. + /// Column data for the current key column of the current index. + /// Key options. + public static void MakeKey(JET_SESID sesid, JET_TABLEID tableid, double data, MakeKeyGrbit grbit) + { + unsafe + { + const int DataSize = sizeof(double); + var pointer = new IntPtr(&data); + Api.JetMakeKey(sesid, tableid, pointer, DataSize, grbit); + } + } + + /// + /// Constructs a search key that may then be used by + /// and . + /// + /// The session to use. + /// The cursor to create the key on. + /// Column data for the current key column of the current index. + /// Key options. + [CLSCompliant(false)] + public static void MakeKey(JET_SESID sesid, JET_TABLEID tableid, ushort data, MakeKeyGrbit grbit) + { + unsafe + { + const int DataSize = sizeof(ushort); + var pointer = new IntPtr(&data); + Api.JetMakeKey(sesid, tableid, pointer, DataSize, grbit); + } + } + + /// + /// Constructs a search key that may then be used by + /// and . + /// + /// The session to use. + /// The cursor to create the key on. + /// Column data for the current key column of the current index. + /// Key options. + [CLSCompliant(false)] + public static void MakeKey(JET_SESID sesid, JET_TABLEID tableid, uint data, MakeKeyGrbit grbit) + { + unsafe + { + const int DataSize = sizeof(uint); + var pointer = new IntPtr(&data); + Api.JetMakeKey(sesid, tableid, pointer, DataSize, grbit); + } + } + + /// + /// Constructs a search key that may then be used by + /// and . + /// + /// The session to use. + /// The cursor to create the key on. + /// Column data for the current key column of the current index. + /// Key options. + [CLSCompliant(false)] + public static void MakeKey(JET_SESID sesid, JET_TABLEID tableid, ulong data, MakeKeyGrbit grbit) + { + unsafe + { + const int DataSize = sizeof(ulong); + var pointer = new IntPtr(&data); + Api.JetMakeKey(sesid, tableid, pointer, DataSize, grbit); + } + } + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/MemoryCache.cs b/WelsonJS.Toolkit/EsentInterop/MemoryCache.cs new file mode 100644 index 0000000..2ac1dba --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/MemoryCache.cs @@ -0,0 +1,151 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Diagnostics; + using System.Threading; + + /// + /// Cache allocated chunks of memory that are needed for very short periods + /// of time. The memory is not zeroed on allocation. + /// + internal sealed class MemoryCache + { + /// + /// A zero-length array that should be used whenever we want to return one. + /// + private static readonly byte[] ZeroLengthArray = new byte[0]; + + /// + /// Default size for newly allocated buffers. + /// + private readonly int bufferSize; + + /// + /// Currently cached buffers. + /// + private readonly byte[][] cachedBuffers; + + /// + /// Initializes a new instance of the class. + /// + /// + /// The size of the buffers to cache. + /// + /// + /// The maximum number of buffers to cache. + /// + public MemoryCache(int bufferSize, int maxCachedBuffers) + { + this.bufferSize = bufferSize; + this.cachedBuffers = new byte[maxCachedBuffers][]; + } + + /// + /// Gets the size of the buffers that this cache returns. + /// + public int BufferSize + { + get + { + return this.bufferSize; + } + } + + /// + /// Creates a new array containing a copy of 'length' bytes of data. + /// + /// The data to copy. + /// The length of data to copy. + /// An array containing the first length bytes of data. + public static byte[] Duplicate(byte[] data, int length) + { + Debug.Assert(data.Length >= length, "length parameter is too long"); + if (0 == length) + { + return ZeroLengthArray; + } + + var output = new byte[length]; + Buffer.BlockCopy(data, 0, output, 0, length); + return output; + } + + /// + /// Allocates a chunk of memory. If memory is cached it is returned. If no memory + /// is cached then it is allocated. Check the size of the returned buffer to determine + /// how much memory was allocated. + /// + /// A new memory buffer. + public byte[] Allocate() + { + int offset = this.GetStartingOffset(); + for (int i = 0; i < this.cachedBuffers.Length; ++i) + { + int index = (i + offset) % this.cachedBuffers.Length; + byte[] buffer = Interlocked.Exchange(ref this.cachedBuffers[index], null); + if (null != buffer) + { + return buffer; + } + } + + return new byte[this.bufferSize]; + } + + /// + /// Frees an unused buffer. This may be added to the cache. + /// + /// The memory to free. + public void Free(ref byte[] data) + { + if (null == data) + { + throw new ArgumentNullException("data"); + } + + if (data.Length != this.bufferSize) + { + throw new ArgumentOutOfRangeException("data", data.Length, "buffer is not correct size for this MemoryCache"); + } + + int offset = this.GetStartingOffset(); + + // The buffers are garbage collected so we don't need to make Free() + // completely safe. In a multi-threaded situation we may see a null + // slot and then overwrite a buffer which was just freed into the slot. + // That will cause us to lose a buffer which could have been placed + // in a different slot, but in return we can do the Free() without + // expensive interlocked operations. + for (int i = 0; i < this.cachedBuffers.Length; ++i) + { + int index = (i + offset) % this.cachedBuffers.Length; + if (null == this.cachedBuffers[index]) + { + this.cachedBuffers[index] = data; + break; + } + } + + data = null; + } + + /// + /// Get the offset in the cached buffers array to start allocating or freeing + /// buffers to. This is done so that all threads don't start operating on + /// slot zero, which would increase contention. + /// + /// The starting offset for Allocate/Free operations. + private int GetStartingOffset() + { + // Using the current CPU number would be ideal, but there doesn't seem to + // be a cheap way to get that information in managed code. + return LibraryHelpers.GetCurrentManagedThreadId() % this.cachedBuffers.Length; + } + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/MetaDataHelpers.cs b/WelsonJS.Toolkit/EsentInterop/MetaDataHelpers.cs new file mode 100644 index 0000000..b2fc423 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/MetaDataHelpers.cs @@ -0,0 +1,294 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Collections.Generic; + using System.Diagnostics; + using System.Text; + using Microsoft.Isam.Esent.Interop.Implementation; + + /// + /// Helper methods for the ESENT API. These methods deal with database + /// meta-data. + /// + public static partial class Api + { + #region Simpler API. Overloads that omit unused/obsolete parameters. + /// + /// Initialize a new ESENT session. + /// + /// The initialized instance to create the session in. + /// Returns the created session. + public static void BeginSession(JET_INSTANCE instance, out JET_SESID sesid) + { + Api.JetBeginSession(instance, out sesid, null, null); + } + + /// + /// Creates and attaches a database file. + /// + /// The session to use. + /// The path to the database file to create. + /// Returns the dbid of the new database. + /// Database creation options. + public static void CreateDatabase(JET_SESID sesid, string database, out JET_DBID dbid, CreateDatabaseGrbit grbit) + { + Api.JetCreateDatabase(sesid, database, null, out dbid, grbit); + } + + /// + /// Opens a database previously attached with , + /// for use with a database session. This function can be called multiple times + /// for the same database. + /// + /// The session that is opening the database. + /// The database to open. + /// Returns the dbid of the attached database. + /// Open database options. + /// An ESENT warning code. + public static JET_wrn OpenDatabase( + JET_SESID sesid, + string database, + out JET_DBID dbid, + OpenDatabaseGrbit grbit) + { + return Api.JetOpenDatabase(sesid, database, null, out dbid, grbit); + } + + /// + /// Opens a cursor on a previously created table. + /// + /// The database session to use. + /// The database to open the table in. + /// The name of the table to open. + /// Table open options. + /// Returns the opened table. + /// An ESENT warning. + public static JET_wrn OpenTable( + JET_SESID sesid, + JET_DBID dbid, + string tablename, + OpenTableGrbit grbit, + out JET_TABLEID tableid) + { + return Api.JetOpenTable(sesid, dbid, tablename, null, 0, grbit, out tableid); + } + + #endregion + + /// + /// Try to open a table. + /// + /// The session to use. + /// The database to look for the table in. + /// The name of the table. + /// Table open options. + /// Returns the opened tableid. + /// True if the table was opened, false if the table doesn't exist. + public static bool TryOpenTable( + JET_SESID sesid, + JET_DBID dbid, + string tablename, + OpenTableGrbit grbit, + out JET_TABLEID tableid) + { + var err = (JET_err)Impl.JetOpenTable(sesid, dbid, tablename, null, 0, grbit, out tableid); + if (JET_err.ObjectNotFound == err) + { + return false; + } + + Api.Check((int)err); + Debug.Assert(err >= JET_err.Success, "Exception should have been thrown in case of error"); + return true; + } + + /// + /// Creates a dictionary which maps column names to their column IDs. + /// + /// The sesid to use. + /// The table to retrieve the information for. + /// A dictionary mapping column names to column IDs. + public static IDictionary GetColumnDictionary(JET_SESID sesid, JET_TABLEID tableid) + { + JET_COLUMNLIST columnlist; + JetGetTableColumnInfo(sesid, tableid, string.Empty, out columnlist); + + // As of Sep 2015, JetGetColumnInfoW is only called for Win8+. Even though Unicode should have + // worked in Win7, it wasn't reliable until Win8. + Encoding encodingOfTextColumns = EsentVersion.SupportsWindows8Features ? Encoding.Unicode : LibraryHelpers.EncodingASCII; + + try + { + // esent treats column names as case-insensitive, so we want the dictionary to be case insensitive as well + var dict = new Dictionary( + columnlist.cRecord, StringComparer.OrdinalIgnoreCase); + if (columnlist.cRecord > 0) + { + if (Api.TryMoveFirst(sesid, columnlist.tableid)) + { + do + { + string name = RetrieveColumnAsString( + sesid, + columnlist.tableid, + columnlist.columnidcolumnname, + encodingOfTextColumns, + RetrieveColumnGrbit.None); + name = StringCache.TryToIntern(name); + var columnidValue = + (uint)RetrieveColumnAsUInt32(sesid, columnlist.tableid, columnlist.columnidcolumnid); + + var columnid = new JET_COLUMNID { Value = columnidValue }; + dict.Add(name, columnid); + } + while (TryMoveNext(sesid, columnlist.tableid)); + } + } + + return dict; + } + finally + { + // Close the temporary table used to return the results + JetCloseTable(sesid, columnlist.tableid); + } + } + + /// + /// Get the columnid of the specified column. + /// + /// The session to use. + /// The table containing the column. + /// The name of the column. + /// The id of the column. + public static JET_COLUMNID GetTableColumnid(JET_SESID sesid, JET_TABLEID tableid, string columnName) + { + JET_COLUMNDEF columndef; + JetGetTableColumnInfo(sesid, tableid, columnName, out columndef); + return columndef.columnid; + } + + /// + /// Iterates over all the columns in the table, returning information about each one. + /// + /// The session to use. + /// The table to retrieve column information for. + /// An iterator over ColumnInfo for each column in the table. + public static IEnumerable GetTableColumns(JET_SESID sesid, JET_TABLEID tableid) + { + return new GenericEnumerable(() => new TableidColumnInfoEnumerator(sesid, tableid)); + } + + /// + /// Iterates over all the columns in the table, returning information about each one. + /// + /// The session to use. + /// The database containing the table. + /// The name of the table. + /// An iterator over ColumnInfo for each column in the table. + public static IEnumerable GetTableColumns(JET_SESID sesid, JET_DBID dbid, string tablename) + { + if (null == tablename) + { + throw new ArgumentNullException("tablename"); + } + + return new GenericEnumerable(() => new TableColumnInfoEnumerator(sesid, dbid, tablename)); + } + + /// + /// Iterates over all the indexes in the table, returning information about each one. + /// + /// The session to use. + /// The table to retrieve index information for. + /// An iterator over an IndexInfo for each index in the table. + public static IEnumerable GetTableIndexes(JET_SESID sesid, JET_TABLEID tableid) + { + return new GenericEnumerable(() => new TableidIndexInfoEnumerator(sesid, tableid)); + } + + /// + /// Iterates over all the indexs in the table, returning information about each one. + /// + /// The session to use. + /// The database containing the table. + /// The name of the table. + /// An iterator over an IndexInfo for each index in the table. + public static IEnumerable GetTableIndexes(JET_SESID sesid, JET_DBID dbid, string tablename) + { + if (null == tablename) + { + throw new ArgumentNullException("tablename"); + } + + return new GenericEnumerable(() => new TableIndexInfoEnumerator(sesid, dbid, tablename)); + } + + /// + /// Returns the names of the tables in the database. + /// + /// The session to use. + /// The database containing the table. + /// An iterator over the names of the tables in the database. + public static IEnumerable GetTableNames(JET_SESID sesid, JET_DBID dbid) + { + return new GenericEnumerable(() => new TableNameEnumerator(sesid, dbid)); + } + + /// + /// Retrieves information about indexes on a table. + /// + /// The session to use. + /// The table to retrieve index information about. + /// The name of the index. + /// Filled in with information about indexes on the table. + /// The type of information to retrieve. + /// true if there was no error, false if the index wasn't found. Throws for other Jet errors. + public static bool TryJetGetTableIndexInfo( + JET_SESID sesid, + JET_TABLEID tableid, + string indexname, + out JET_INDEXID result, + JET_IdxInfo infoLevel) + { + int err = Impl.JetGetTableIndexInfo(sesid, tableid, indexname, out result, infoLevel); + + if ((JET_err)err == JET_err.IndexNotFound) + { + return false; + } + + Api.Check(err); + + return true; + } + + /// + /// Determines the name of the current index of a given cursor. + /// + /// + /// This name is also used to later re-select that index as the current index using + /// . It can also be used to discover the properties of that index using + /// JetGetTableIndexInfo. + /// + /// The returned name of the index will be null if the current index is the clustered index and no primary + /// index was explicitly defined. + /// + /// The session to use. + /// The cursor to get the index name for. + /// Returns the name of the index. + public static string JetGetCurrentIndex(JET_SESID sesid, JET_TABLEID tableid) + { + string indexName; + Api.JetGetCurrentIndex(sesid, tableid, out indexName, SystemParameters.NameMost); + + return string.IsNullOrEmpty(indexName) ? null : indexName; + } + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/MoveHelpers.cs b/WelsonJS.Toolkit/EsentInterop/MoveHelpers.cs new file mode 100644 index 0000000..a93d751 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/MoveHelpers.cs @@ -0,0 +1,244 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Collections.Generic; + using System.Diagnostics; + + /// + /// Helper methods for the ESENT API. These aren't interop versions + /// of the API, but encapsulate very common uses of the functions. + /// + public static partial class Api + { + /// + /// Position the cursor before the first record in the table. A + /// subsequent move next will position the cursor on the first + /// record. + /// + /// The session to use. + /// The table to position. + public static void MoveBeforeFirst(JET_SESID sesid, JET_TABLEID tableid) + { + Api.TryMoveFirst(sesid, tableid); + Api.TryMovePrevious(sesid, tableid); + } + + /// + /// Position the cursor after the last record in the table. A + /// subsequent move previous will position the cursor on the + /// last record. + /// + /// The session to use. + /// The table to position. + public static void MoveAfterLast(JET_SESID sesid, JET_TABLEID tableid) + { + Api.TryMoveLast(sesid, tableid); + Api.TryMoveNext(sesid, tableid); + } + + /// + /// Try to navigate through an index. If the navigation succeeds this + /// method returns true. If there is no record to navigate to this + /// method returns false; an exception will be thrown for other errors. + /// + /// The session to use. + /// The cursor to position. + /// The direction to move in. + /// Move options. + /// True if the move was successful. + public static bool TryMove(JET_SESID sesid, JET_TABLEID tableid, JET_Move move, MoveGrbit grbit) + { + var err = (JET_err)Impl.JetMove(sesid, tableid, (int)move, grbit); + if (JET_err.NoCurrentRecord == err) + { + return false; + } + + Api.Check((int)err); + Debug.Assert(err >= JET_err.Success, "Exception should have been thrown in case of error"); + return true; + } + + /// + /// Try to move to the first record in the table. If the table is empty this + /// returns false, if a different error is encountered an exception is thrown. + /// + /// The session to use. + /// The cursor to position. + /// True if the move was successful. + public static bool TryMoveFirst(JET_SESID sesid, JET_TABLEID tableid) + { + return TryMove(sesid, tableid, JET_Move.First, MoveGrbit.None); + } + + /// + /// Try to move to the last record in the table. If the table is empty this + /// returns false, if a different error is encountered an exception is thrown. + /// + /// The session to use. + /// The cursor to position. + /// True if the move was successful. + public static bool TryMoveLast(JET_SESID sesid, JET_TABLEID tableid) + { + return TryMove(sesid, tableid, JET_Move.Last, MoveGrbit.None); + } + + /// + /// Try to move to the next record in the table. If there is not a next record + /// this returns false, if a different error is encountered an exception is thrown. + /// + /// The session to use. + /// The cursor to position. + /// True if the move was successful. + public static bool TryMoveNext(JET_SESID sesid, JET_TABLEID tableid) + { + return TryMove(sesid, tableid, JET_Move.Next, MoveGrbit.None); + } + + /// + /// Try to move to the previous record in the table. If there is not a previous record + /// this returns false, if a different error is encountered an exception is thrown. + /// + /// The session to use. + /// The cursor to position. + /// True if the move was successful. + public static bool TryMovePrevious(JET_SESID sesid, JET_TABLEID tableid) + { + return TryMove(sesid, tableid, JET_Move.Previous, MoveGrbit.None); + } + + /// + /// Efficiently positions a cursor to an index entry that matches the search + /// criteria specified by the search key in that cursor and the specified + /// inequality. A search key must have been previously constructed using JetMakeKey. + /// + /// The session to use. + /// The cursor to position. + /// Seek option. + /// True if a record matching the criteria was found. + public static bool TrySeek(JET_SESID sesid, JET_TABLEID tableid, SeekGrbit grbit) + { + var err = (JET_err)Impl.JetSeek(sesid, tableid, grbit); + if (JET_err.RecordNotFound == err) + { + return false; + } + + Api.Check((int)err); + Debug.Assert(err >= JET_err.Success, "Exception should have been thrown in case of error"); + return true; + } + + /// + /// Temporarily limits the set of index entries that the cursor can walk using + /// JetMove to those starting from the current index entry and ending at the index + /// entry that matches the search criteria specified by the search key in that cursor + /// and the specified bound criteria. A search key must have been previously constructed + /// using JetMakeKey. Returns true if the index range is non-empty, false otherwise. + /// + /// The session to use. + /// The cursor to position. + /// Seek option. + /// True if the seek was successful. + public static bool TrySetIndexRange(JET_SESID sesid, JET_TABLEID tableid, SetIndexRangeGrbit grbit) + { + var err = (JET_err)Impl.JetSetIndexRange(sesid, tableid, grbit); + if (JET_err.NoCurrentRecord == err) + { + return false; + } + + Api.Check((int)err); + Debug.Assert(err >= JET_err.Success, "Exception should have been thrown in case of error"); + return true; + } + + /// + /// Removes an index range created with or + /// . If no index range is present this + /// method does nothing. + /// + /// The session to use. + /// The cursor to remove the index range on. + public static void ResetIndexRange(JET_SESID sesid, JET_TABLEID tableid) + { + var err = (JET_err)Impl.JetSetIndexRange(sesid, tableid, SetIndexRangeGrbit.RangeRemove); + if (JET_err.InvalidOperation == err) + { + // this error is expected if there isn't currently an index range + return; + } + + Api.Check((int)err); + return; + } + + /// + /// Intersect a group of index ranges and return the bookmarks of the records which are found + /// in all the index ranges. + /// Also see . + /// + /// The session to use. + /// + /// The tableids to use. Each tableid must be from a different index on the same table and + /// have an active index range. Use + /// to create an index range. + /// + /// + /// The bookmarks of the records which are found in all the index ranges. The bookmarks + /// are returned in primary key order. + /// + public static IEnumerable IntersectIndexes(JET_SESID sesid, params JET_TABLEID[] tableids) + { + if (null == tableids) + { + throw new ArgumentNullException("tableids"); + } + + var ranges = new JET_INDEXRANGE[tableids.Length]; + for (int i = 0; i < tableids.Length; ++i) + { + ranges[i] = new JET_INDEXRANGE { tableid = tableids[i] }; + } + + return new GenericEnumerable(() => new IntersectIndexesEnumerator(sesid, ranges)); + } + + /// + /// Positions a cursor to an index entry for the record that is associated with + /// the specified bookmark. The bookmark can be used with any index defined over + /// a table. The bookmark for a record can be retrieved using . + /// + /// The session to use. + /// The cursor to position. + /// The bookmark used to position the cursor. + /// The size of the bookmark. + /// True if a record matching the bookmark was found. + public static bool TryGotoBookmark(JET_SESID sesid, JET_TABLEID tableid, byte[] bookmark, int bookmarkSize) + { + var err = (JET_err)Impl.JetGotoBookmark(sesid, tableid, bookmark, bookmarkSize); + + // Return false if the record no longer exists. + if (JET_err.RecordDeleted == err) + { + return false; + } + + // Return false if there is no entry for this record on the current (secondary) index. + if (JET_err.NoCurrentRecord == err) + { + return false; + } + + Api.Check((int)err); + Debug.Assert(err >= JET_err.Success, "Exception should have been thrown in case of error"); + return true; + } + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/NativeMethods.cs b/WelsonJS.Toolkit/EsentInterop/NativeMethods.cs new file mode 100644 index 0000000..160a524 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/NativeMethods.cs @@ -0,0 +1,1263 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop.Implementation +{ + using System; + using System.Runtime.InteropServices; + using System.Security; + using System.Text; + using Microsoft.Isam.Esent.Interop.Vista; + + /// + /// Native interop for functions in esent.dll. + /// + [SuppressUnmanagedCodeSecurity] + [BestFitMapping(false, ThrowOnUnmappableChar = true)] + internal static partial class NativeMethods + { + #region Configuration Constants + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + /// + /// The CharSet for the methods in the DLL. + /// + private const CharSet EsentCharSet = CharSet.Ansi; + + /// + /// Initializes static members of the NativeMethods class. + /// + static NativeMethods() + { + // This must be changed when the CharSet is changed. + NativeMethods.Encoding = LibraryHelpers.EncodingASCII; + } + + /// + /// Gets encoding to be used when converting data to/from byte arrays. + /// This should match the CharSet above. + /// + public static Encoding Encoding { get; private set; } +#endif // !MANAGEDESENT_ON_WSA + + #endregion Configuration Constants + + #region init/term + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + [DllImport(EsentDll, CharSet = EsentCharSet, ExactSpelling = true)] + public static extern int JetCreateInstance(out IntPtr instance, string szInstanceName); + + [DllImport(EsentDll, CharSet = CharSet.Unicode, ExactSpelling = true)] + public static extern int JetCreateInstanceW(out IntPtr instance, string szInstanceName); + + [DllImport(EsentDll, CharSet = EsentCharSet, ExactSpelling = true)] + public static extern int JetCreateInstance2(out IntPtr instance, string szInstanceName, string szDisplayName, uint grbit); +#endif // !MANAGEDESENT_ON_WSA + + [DllImport(EsentDll, CharSet = CharSet.Unicode, ExactSpelling = true)] + public static extern int JetCreateInstance2W(out IntPtr instance, string szInstanceName, string szDisplayName, uint grbit); + +#if !MANAGEDESENT_ON_WSA + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetInit(ref IntPtr instance); + + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetInit2(ref IntPtr instance, uint grbit); +#endif // !MANAGEDESENT_ON_WSA + + // JetInit3 was introduced in Vista, so therefore we'll only support the Unicode version. + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetInit3W(ref IntPtr instance, ref NATIVE_RSTINFO prstinfo, uint grbit); + + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetInit3W(ref IntPtr instance, IntPtr prstinfo, uint grbit); + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + [DllImport(EsentDll, ExactSpelling = true)] + public static extern unsafe int JetGetInstanceInfo(out uint pcInstanceInfo, out NATIVE_INSTANCE_INFO* prgInstanceInfo); + + // Returns unicode strings in the NATIVE_INSTANCE_INFO. + [DllImport(EsentDll, ExactSpelling = true)] + public static extern unsafe int JetGetInstanceInfoW(out uint pcInstanceInfo, out NATIVE_INSTANCE_INFO* prgInstanceInfo); + + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetGetInstanceMiscInfo(IntPtr instance, ref NATIVE_SIGNATURE pvResult, uint cbMax, uint infoLevel); + + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetStopBackupInstance(IntPtr instance); + + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetStopServiceInstance(IntPtr instance); + +#endif // !MANAGEDESENT_ON_WSA + + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetStopServiceInstance2(IntPtr instance, uint grbit); + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetTerm(IntPtr instance); +#endif // !MANAGEDESENT_ON_WSA + + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetTerm2(IntPtr instance, uint grbit); + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + [DllImport(EsentDll, CharSet = EsentCharSet, ExactSpelling = true)] + public static unsafe extern int JetSetSystemParameter(IntPtr* pinstance, IntPtr sesid, uint paramid, IntPtr lParam, string szParam); +#endif // !MANAGEDESENT_ON_WSA + + [DllImport(EsentDll, CharSet = CharSet.Unicode, ExactSpelling = true)] + public static unsafe extern int JetSetSystemParameterW(IntPtr* pinstance, IntPtr sesid, uint paramid, IntPtr lParam, string szParam); + + // The param is ref because it is an 'in' parameter when getting error text +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + [DllImport(EsentDll, CharSet = EsentCharSet, ExactSpelling = true)] + public static extern int JetGetSystemParameter(IntPtr instance, IntPtr sesid, uint paramid, ref IntPtr plParam, [Out] StringBuilder szParam, uint cbMax); +#endif // !MANAGEDESENT_ON_WSA + + [DllImport(EsentDll, CharSet = CharSet.Unicode, ExactSpelling = true)] + public static extern int JetGetSystemParameterW(IntPtr instance, IntPtr sesid, uint paramid, ref IntPtr plParam, [Out] StringBuilder szParam, uint cbMax); + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetGetVersion(IntPtr sesid, out uint dwVersion); +#endif // !MANAGEDESENT_ON_WSA + + #endregion + + #region Databases + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + [DllImport(EsentDll, CharSet = EsentCharSet, ExactSpelling = true)] + public static extern int JetCreateDatabase(IntPtr sesid, string szFilename, string szConnect, out uint dbid, uint grbit); + + [DllImport(EsentDll, CharSet = CharSet.Unicode, ExactSpelling = true)] + public static extern int JetCreateDatabaseW(IntPtr sesid, string szFilename, string szConnect, out uint dbid, uint grbit); + + [DllImport(EsentDll, CharSet = EsentCharSet, ExactSpelling = true)] + public static extern int JetCreateDatabase2(IntPtr sesid, string szFilename, uint cpgDatabaseSizeMax, out uint dbid, uint grbit); +#endif // !MANAGEDESENT_ON_WSA + + [DllImport(EsentDll, CharSet = CharSet.Unicode, ExactSpelling = true)] + public static extern int JetCreateDatabase2W(IntPtr sesid, string szFilename, uint cpgDatabaseSizeMax, out uint dbid, uint grbit); + +#if !MANAGEDESENT_ON_WSA + [DllImport(EsentDll, CharSet = EsentCharSet, ExactSpelling = true)] + public static extern int JetAttachDatabase(IntPtr sesid, string szFilename, uint grbit); + + [DllImport(EsentDll, CharSet = CharSet.Unicode, ExactSpelling = true)] + public static extern int JetAttachDatabaseW(IntPtr sesid, string szFilename, uint grbit); + + [DllImport(EsentDll, CharSet = EsentCharSet, ExactSpelling = true)] + public static extern int JetAttachDatabase2(IntPtr sesid, string szFilename, uint cpgDatabaseSizeMax, uint grbit); +#endif // !MANAGEDESENT_ON_WSA + + [DllImport(EsentDll, CharSet = CharSet.Unicode, ExactSpelling = true)] + public static extern int JetAttachDatabase2W(IntPtr sesid, string szFilename, uint cpgDatabaseSizeMax, uint grbit); + +#if !MANAGEDESENT_ON_WSA + [DllImport(EsentDll, CharSet = EsentCharSet, ExactSpelling = true)] + public static extern int JetDetachDatabase(IntPtr sesid, string szFilename); + + [DllImport(EsentDll, CharSet = EsentCharSet, ExactSpelling = true)] + public static extern int JetDetachDatabase2(IntPtr sesid, string szFilename, uint grbit); +#endif // !MANAGEDESENT_ON_WSA + + [DllImport(EsentDll, CharSet = CharSet.Unicode, ExactSpelling = true)] + public static extern int JetDetachDatabase2W(IntPtr sesid, string szFilename, uint grbit); + +#if !MANAGEDESENT_ON_WSA + [DllImport(EsentDll, CharSet = CharSet.Unicode, ExactSpelling = true)] + public static extern int JetDetachDatabaseW(IntPtr sesid, string szFilename); + + [DllImport(EsentDll, CharSet = EsentCharSet, ExactSpelling = true)] + public static extern int JetOpenDatabase(IntPtr sesid, string database, string szConnect, out uint dbid, uint grbit); +#endif // !MANAGEDESENT_ON_WSA + + [DllImport(EsentDll, CharSet = CharSet.Unicode, ExactSpelling = true)] + public static extern int JetOpenDatabaseW(IntPtr sesid, string database, string szConnect, out uint dbid, uint grbit); + + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetCloseDatabase(IntPtr sesid, uint dbid, uint grbit); + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + [DllImport(EsentDll, CharSet = EsentCharSet, ExactSpelling = true)] + public static extern int JetCompact( + IntPtr sesid, string szDatabaseSrc, string szDatabaseDest, IntPtr pfnStatus, IntPtr pconvert, uint grbit); + + [DllImport(EsentDll, CharSet = CharSet.Unicode, ExactSpelling = true)] + public static extern int JetCompactW( + IntPtr sesid, string szDatabaseSrc, string szDatabaseDest, IntPtr pfnStatus, IntPtr pconvert, uint grbit); + + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetGrowDatabase(IntPtr sesid, uint dbid, uint cpg, out uint pcpgReal); + + [DllImport(EsentDll, CharSet = EsentCharSet, ExactSpelling = true)] + public static extern int JetSetDatabaseSize(IntPtr sesid, string szDatabaseName, uint cpg, out uint pcpgReal); + + [DllImport(EsentDll, CharSet = CharSet.Unicode, ExactSpelling = true)] + public static extern int JetSetDatabaseSizeW(IntPtr sesid, string szDatabaseName, uint cpg, out uint pcpgReal); + + [DllImport(EsentDll, CharSet = EsentCharSet, ExactSpelling = true)] + public static extern int JetGetDatabaseInfo(IntPtr sesid, uint dbid, out int intValue, uint cbMax, uint InfoLevel); + + [DllImport(EsentDll, CharSet = EsentCharSet, ExactSpelling = true)] + public static extern int JetGetDatabaseInfo(IntPtr sesid, uint dbid, out NATIVE_DBINFOMISC dbinfomisc, uint cbMax, uint InfoLevel); + + [DllImport(EsentDll, CharSet = EsentCharSet, ExactSpelling = true)] + public static extern int JetGetDatabaseInfo(IntPtr sesid, uint dbid, out NATIVE_DBINFOMISC4 dbinfomisc, uint cbMax, uint InfoLevel); + + [DllImport(EsentDll, CharSet = EsentCharSet, ExactSpelling = true)] + public static extern int JetGetDatabaseInfo(IntPtr sesid, uint dbid, [Out] StringBuilder stringValue, uint cbMax, uint InfoLevel); +#endif // !MANAGEDESENT_ON_WSA + + [DllImport(EsentDll, CharSet = CharSet.Unicode, ExactSpelling = true)] + public static extern int JetGetDatabaseInfoW(IntPtr sesid, uint dbid, out int intValue, uint cbMax, uint InfoLevel); + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + [DllImport(EsentDll, CharSet = CharSet.Unicode, ExactSpelling = true)] + public static extern int JetGetDatabaseInfoW(IntPtr sesid, uint dbid, out NATIVE_DBINFOMISC dbinfomisc, uint cbMax, uint InfoLevel); +#endif // !MANAGEDESENT_ON_WSA + + [DllImport(EsentDll, CharSet = CharSet.Unicode, ExactSpelling = true)] + public static extern int JetGetDatabaseInfoW(IntPtr sesid, uint dbid, out NATIVE_DBINFOMISC4 dbinfomisc, uint cbMax, uint InfoLevel); + + [DllImport(EsentDll, CharSet = CharSet.Unicode, ExactSpelling = true)] + public static extern int JetGetDatabaseInfoW(IntPtr sesid, uint dbid, [Out] StringBuilder stringValue, uint cbMax, uint InfoLevel); + + #endregion + + #region JetGetDatabaseFileInfo + + // Unicode, int + [DllImport(EsentDll, CharSet = CharSet.Unicode, ExactSpelling = true)] + public static extern int JetGetDatabaseFileInfoW(string szFilename, out int intValue, uint cbMax, uint InfoLevel); + +#if !MANAGEDESENT_ON_WSA + // ASCII, int + [DllImport(EsentDll, CharSet = EsentCharSet, ExactSpelling = true)] + public static extern int JetGetDatabaseFileInfo(string szFilename, out int intValue, uint cbMax, uint InfoLevel); +#endif // !MANAGEDESENT_ON_WSA + + // Unicode, long + [DllImport(EsentDll, CharSet = CharSet.Unicode, ExactSpelling = true)] + public static extern int JetGetDatabaseFileInfoW(string szFilename, out long intValue, uint cbMax, uint InfoLevel); + +#if !MANAGEDESENT_ON_WSA + // ASCII, long + [DllImport(EsentDll, CharSet = EsentCharSet, ExactSpelling = true)] + public static extern int JetGetDatabaseFileInfo(string szFilename, out long intValue, uint cbMax, uint InfoLevel); +#endif // !MANAGEDESENT_ON_WSA + + // Unicode, JET_DBINFOMISC4 + [DllImport(EsentDll, CharSet = CharSet.Unicode, ExactSpelling = true)] + public static extern int JetGetDatabaseFileInfoW(string szFilename, out NATIVE_DBINFOMISC4 dbinfomisc, uint cbMax, uint InfoLevel); + +#if !MANAGEDESENT_ON_WSA + // ASCII, JET_DBINFOMISC + [DllImport(EsentDll, CharSet = EsentCharSet, ExactSpelling = true)] + public static extern int JetGetDatabaseFileInfo(string szFilename, out NATIVE_DBINFOMISC dbinfomisc, uint cbMax, uint InfoLevel); + + // Unicode, JET_DBINFOMISC + [DllImport(EsentDll, CharSet = CharSet.Unicode, ExactSpelling = true)] + public static extern int JetGetDatabaseFileInfoW(string szFilename, out NATIVE_DBINFOMISC dbinfomisc, uint cbMax, uint InfoLevel); +#endif // !MANAGEDESENT_ON_WSA + + #endregion + + #region Backup/Restore + +#if !MANAGEDESENT_ON_WSA + [DllImport(EsentDll, CharSet = EsentCharSet, ExactSpelling = true)] + public static extern int JetBackupInstance( + IntPtr instance, string szBackupPath, uint grbit, IntPtr pfnStatus); + + [DllImport(EsentDll, CharSet = CharSet.Unicode, ExactSpelling = true)] + public static extern int JetBackupInstanceW( + IntPtr instance, string szBackupPath, uint grbit, IntPtr pfnStatus); + + [DllImport(EsentDll, CharSet = EsentCharSet, ExactSpelling = true)] + public static extern int JetRestoreInstance(IntPtr instance, string sz, string szDest, IntPtr pfn); + + [DllImport(EsentDll, CharSet = CharSet.Unicode, ExactSpelling = true)] + public static extern int JetRestoreInstanceW(IntPtr instance, string sz, string szDest, IntPtr pfn); +#endif // !MANAGEDESENT_ON_WSA + + #endregion + + #region Snapshot Backup + +#if !MANAGEDESENT_ON_WSA + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetOSSnapshotPrepare(out IntPtr snapId, uint grbit); + + // Introduced in Windows Vista + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetOSSnapshotPrepareInstance(IntPtr snapId, IntPtr instance, uint grbit); + + [DllImport(EsentDll, ExactSpelling = true)] + public static extern unsafe int JetOSSnapshotFreeze( + IntPtr snapId, + out uint pcInstanceInfo, + out NATIVE_INSTANCE_INFO* prgInstanceInfo, + uint grbit); + + // Returns unicode strings in the NATIVE_INSTANCE_INFO. + [DllImport(EsentDll, ExactSpelling = true)] + public static extern unsafe int JetOSSnapshotFreezeW( + IntPtr snapId, + out uint pcInstanceInfo, + out NATIVE_INSTANCE_INFO* prgInstanceInfo, + uint grbit); + + // Introduced in Windows Vista + // Returns unicode strings in the NATIVE_INSTANCE_INFO. + [DllImport(EsentDll, ExactSpelling = true)] + public static extern unsafe int JetOSSnapshotGetFreezeInfoW( + IntPtr snapId, + out uint pcInstanceInfo, + out NATIVE_INSTANCE_INFO* prgInstanceInfo, + uint grbit); + + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetOSSnapshotThaw(IntPtr snapId, uint grbit); + + // Introduced in Windows Vista + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetOSSnapshotTruncateLog(IntPtr snapId, uint grbit); + + // Introduced in Windows Vista + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetOSSnapshotTruncateLogInstance(IntPtr snapId, IntPtr instance, uint grbit); + + // Introduced in Windows Vista + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetOSSnapshotEnd(IntPtr snapId, uint grbit); + + // Introduced in Windows Server 2003 + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetOSSnapshotAbort(IntPtr snapId, uint grbit); +#endif // !MANAGEDESENT_ON_WSA + #endregion + + #region Snapshot Backup/Restore + +#if !MANAGEDESENT_ON_WSA + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetBeginExternalBackupInstance(IntPtr instance, uint grbit); + + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetCloseFileInstance(IntPtr instance, IntPtr handle); + + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetEndExternalBackupInstance(IntPtr instance); + + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetEndExternalBackupInstance2(IntPtr instance, uint grbit); + + [DllImport(EsentDll, CharSet = EsentCharSet, ExactSpelling = true)] + public static extern int JetGetAttachInfoInstance(IntPtr instance, [Out] byte[] szz, uint cbMax, out uint pcbActual); + + [DllImport(EsentDll, CharSet = CharSet.Unicode, ExactSpelling = true)] + public static extern int JetGetAttachInfoInstanceW(IntPtr instance, [Out] byte[] szz, uint cbMax, out uint pcbActual); + + [DllImport(EsentDll, CharSet = EsentCharSet, ExactSpelling = true)] + public static extern int JetGetLogInfoInstance(IntPtr instance, [Out] byte[] szz, uint cbMax, out uint pcbActual); + + [DllImport(EsentDll, CharSet = CharSet.Unicode, ExactSpelling = true)] + public static extern int JetGetLogInfoInstanceW(IntPtr instance, [Out] byte[] szz, uint cbMax, out uint pcbActual); + + [DllImport(EsentDll, CharSet = EsentCharSet, ExactSpelling = true)] + public static extern int JetGetTruncateLogInfoInstance(IntPtr instance, [Out] byte[] szz, uint cbMax, out uint pcbActual); + + [DllImport(EsentDll, CharSet = CharSet.Unicode, ExactSpelling = true)] + public static extern int JetGetTruncateLogInfoInstanceW(IntPtr instance, [Out] byte[] szz, uint cbMax, out uint pcbActual); + + [DllImport(EsentDll, CharSet = EsentCharSet, ExactSpelling = true)] + public static extern int JetOpenFileInstance( + IntPtr instance, string szFileName, out IntPtr phfFile, out uint pulFileSizeLow, out uint pulFileSizeHigh); + + [DllImport(EsentDll, CharSet = CharSet.Unicode, ExactSpelling = true)] + public static extern int JetOpenFileInstanceW( + IntPtr instance, string szFileName, out IntPtr phfFile, out uint pulFileSizeLow, out uint pulFileSizeHigh); + + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetReadFileInstance( + IntPtr instance, IntPtr handle, IntPtr pv, uint cb, out uint pcbActual); + + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetTruncateLogInstance(IntPtr instance); +#endif // !MANAGEDESENT_ON_WSA + #endregion + + #region sessions + +#if MANAGEDESENT_ON_WSA // Not exposed in MSDK + [DllImport(EsentDll, CharSet = CharSet.Unicode, ExactSpelling = true)] + public static extern int JetBeginSessionW(IntPtr instance, out IntPtr session, string username, string password); +#else + [DllImport(EsentDll, CharSet = EsentCharSet, ExactSpelling = true)] + public static extern int JetBeginSession(IntPtr instance, out IntPtr session, string username, string password); +#endif + + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetSetSessionContext(IntPtr session, IntPtr context); + + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetResetSessionContext(IntPtr session); + + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetEndSession(IntPtr sesid, uint grbit); + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetDupSession(IntPtr sesid, out IntPtr newSesid); +#endif + + [DllImport(EsentDll, ExactSpelling = true)] + public static unsafe extern int JetGetThreadStats(JET_THREADSTATS* pvResult, uint cbMax); + + #endregion + + #region tables + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + [DllImport(EsentDll, CharSet = EsentCharSet, ExactSpelling = true)] + public static extern int JetOpenTable(IntPtr sesid, uint dbid, string tablename, byte[] pvParameters, uint cbParameters, uint grbit, out IntPtr tableid); +#endif + + [DllImport(EsentDll, CharSet = CharSet.Unicode, ExactSpelling = true)] + public static extern int JetOpenTableW(IntPtr sesid, uint dbid, string tablename, byte[] pvParameters, uint cbParameters, uint grbit, out IntPtr tableid); + + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetCloseTable(IntPtr sesid, IntPtr tableid); + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetDupCursor(IntPtr sesid, IntPtr tableid, out IntPtr tableidNew, uint grbit); + + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetComputeStats(IntPtr sesid, IntPtr tableid); + + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetSetLS(IntPtr sesid, IntPtr tableid, IntPtr ls, uint grbit); + + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetGetLS(IntPtr sesid, IntPtr tableid, out IntPtr pls, uint grbit); + + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetGetCursorInfo(IntPtr sesid, IntPtr tableid, IntPtr pvResult, uint cbMax, uint infoLevel); +#endif // !MANAGEDESENT_ON_WSA + #endregion + + #region transactions + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetBeginTransaction(IntPtr sesid); + + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetBeginTransaction2(IntPtr sesid, uint grbit); +#endif // !MANAGEDESENT_ON_WSA + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetBeginTransaction3(IntPtr sesid, long trxid, uint grbit); + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetCommitTransaction(IntPtr sesid, uint grbit); +#endif + + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetRollback(IntPtr sesid, uint grbit); + + #endregion + + #region DDL + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + [DllImport(EsentDll, CharSet = EsentCharSet, ExactSpelling = true)] + public static extern int JetCreateTable(IntPtr sesid, uint dbid, string szTableName, int pages, int density, out IntPtr tableid); +#endif + +#if MANAGEDESENT_ON_WSA + [DllImport(EsentDll, CharSet = CharSet.Unicode, ExactSpelling = true)] + public static extern int JetAddColumnW(IntPtr sesid, IntPtr tableid, string szColumnName, [In] ref NATIVE_COLUMNDEF columndef, [In] byte[] pvDefault, uint cbDefault, out uint columnid); +#else + [DllImport(EsentDll, CharSet = EsentCharSet, ExactSpelling = true)] + public static extern int JetAddColumn(IntPtr sesid, IntPtr tableid, string szColumnName, [In] ref NATIVE_COLUMNDEF columndef, [In] byte[] pvDefault, uint cbDefault, out uint columnid); +#endif + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + [DllImport(EsentDll, CharSet = EsentCharSet, ExactSpelling = true)] + public static extern int JetDeleteColumn(IntPtr sesid, IntPtr tableid, string szColumnName); +#endif + +#if MANAGEDESENT_ON_WSA + [DllImport(EsentDll, CharSet = CharSet.Unicode, ExactSpelling = true)] + public static extern int JetDeleteColumn2W(IntPtr sesid, IntPtr tableid, string szColumnName, uint grbit); +#else + [DllImport(EsentDll, CharSet = EsentCharSet, ExactSpelling = true)] + public static extern int JetDeleteColumn2(IntPtr sesid, IntPtr tableid, string szColumnName, uint grbit); +#endif + +#if MANAGEDESENT_ON_WSA + [DllImport(EsentDll, CharSet = CharSet.Unicode, ExactSpelling = true)] + public static extern int JetDeleteIndexW(IntPtr sesid, IntPtr tableid, string szIndexName); +#else + [DllImport(EsentDll, CharSet = EsentCharSet, ExactSpelling = true)] + public static extern int JetDeleteIndex(IntPtr sesid, IntPtr tableid, string szIndexName); +#endif + +#if MANAGEDESENT_ON_WSA + [DllImport(EsentDll, CharSet = CharSet.Unicode, ExactSpelling = true)] + public static extern int JetDeleteTableW(IntPtr sesid, uint dbid, string szTableName); +#else + [DllImport(EsentDll, CharSet = EsentCharSet, ExactSpelling = true)] + public static extern int JetDeleteTable(IntPtr sesid, uint dbid, string szTableName); +#endif + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + [DllImport(EsentDll, CharSet = EsentCharSet, ExactSpelling = true)] + public static extern int JetCreateIndex(IntPtr sesid, IntPtr tableid, string szIndexName, uint grbit, string szKey, uint cbKey, uint lDensity); + + [DllImport(EsentDll, CharSet = EsentCharSet, ExactSpelling = true)] + public static extern int JetCreateIndex2( + IntPtr sesid, IntPtr tableid, [In] JET_INDEXCREATE.NATIVE_INDEXCREATE[] pindexcreate, uint cIndexCreate); + + // Introduced in Windows Vista, this version takes the larger NATIVE_INDEXCREATE1 structure. + [DllImport(EsentDll, CharSet = CharSet.Unicode, ExactSpelling = true)] + public static extern int JetCreateIndex2W( + IntPtr sesid, IntPtr tableid, [In] JET_INDEXCREATE.NATIVE_INDEXCREATE1[] pindexcreate, uint cIndexCreate); + + // Introduced in Windows 7, this version takes the larger NATIVE_INDEXCREATE2 structure, supporting + // space hints. + [DllImport(EsentDll, CharSet = CharSet.Unicode, ExactSpelling = true)] + public static extern int JetCreateIndex3W( + IntPtr sesid, IntPtr tableid, [In] JET_INDEXCREATE.NATIVE_INDEXCREATE2[] pindexcreate, uint cIndexCreate); + + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetOpenTempTable( + IntPtr sesid, + [In] NATIVE_COLUMNDEF[] rgcolumndef, + uint ccolumn, + uint grbit, + out IntPtr ptableid, + [Out] uint[] rgcolumnid); + + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetOpenTempTable2( + IntPtr sesid, + [In] NATIVE_COLUMNDEF[] rgcolumndef, + uint ccolumn, + uint lcid, + uint grbit, + out IntPtr ptableid, + [Out] uint[] rgcolumnid); +#endif // !MANAGEDESENT_ON_WSA + + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetOpenTempTable3( + IntPtr sesid, + [In] NATIVE_COLUMNDEF[] rgcolumndef, + uint ccolumn, + [In] ref NATIVE_UNICODEINDEX pidxunicode, + uint grbit, + out IntPtr ptableid, + [Out] uint[] rgcolumnid); + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + // Introduced in Windows Vista + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetOpenTemporaryTable(IntPtr sesid, [In] [Out] ref NATIVE_OPENTEMPORARYTABLE popentemporarytable); +#endif // !MANAGEDESENT_ON_WSA + + // Overload to allow for null pidxunicode + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetOpenTempTable3( + IntPtr sesid, + [In] NATIVE_COLUMNDEF[] rgcolumndef, + uint ccolumn, + IntPtr pidxunicode, + uint grbit, + out IntPtr ptableid, + [Out] uint[] rgcolumnid); + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + [DllImport(EsentDll, CharSet = EsentCharSet, ExactSpelling = true)] + public static extern int JetCreateTableColumnIndex2(IntPtr sesid, uint dbid, ref JET_TABLECREATE.NATIVE_TABLECREATE2 tablecreate3); + + // Introduced in Vista. + [DllImport(EsentDll, CharSet = CharSet.Unicode, ExactSpelling = true)] + public static extern int JetCreateTableColumnIndex2W(IntPtr sesid, uint dbid, ref JET_TABLECREATE.NATIVE_TABLECREATE2 tablecreate3); + + // Introduced in Windows 7 + [DllImport(EsentDll, CharSet = CharSet.Unicode, ExactSpelling = true)] + public static extern int JetCreateTableColumnIndex3W(IntPtr sesid, uint dbid, ref JET_TABLECREATE.NATIVE_TABLECREATE3 tablecreate3); +#endif // !MANAGEDESENT_ON_WSA + + #region JetGetTableColumnInfo overlaods. +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + [DllImport(EsentDll, CharSet = EsentCharSet, ExactSpelling = true)] + public static extern int JetGetTableColumnInfo(IntPtr sesid, IntPtr tableid, string szColumnName, ref NATIVE_COLUMNDEF columndef, uint cbMax, uint InfoLevel); + + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetGetTableColumnInfo(IntPtr sesid, IntPtr tableid, ref uint pcolumnid, ref NATIVE_COLUMNDEF columndef, uint cbMax, uint InfoLevel); + + [DllImport(EsentDll, CharSet = EsentCharSet, ExactSpelling = true)] + public static extern int JetGetTableColumnInfo(IntPtr sesid, IntPtr tableid, string szColumnName, ref NATIVE_COLUMNBASE columnbase, uint cbMax, uint InfoLevel); + + [DllImport(EsentDll, CharSet = EsentCharSet, ExactSpelling = true)] + public static extern int JetGetTableColumnInfo(IntPtr sesid, IntPtr tableid, string szIgnored, ref NATIVE_COLUMNLIST columnlist, uint cbMax, uint InfoLevel); +#endif // !MANAGEDESENT_ON_WSA + + [DllImport(EsentDll, CharSet = CharSet.Unicode, ExactSpelling = true)] + public static extern int JetGetTableColumnInfoW(IntPtr sesid, IntPtr tableid, string szColumnName, ref NATIVE_COLUMNDEF columndef, uint cbMax, uint InfoLevel); + + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetGetTableColumnInfoW(IntPtr sesid, IntPtr tableid, ref uint pcolumnid, ref NATIVE_COLUMNDEF columndef, uint cbMax, uint InfoLevel); + + [DllImport(EsentDll, CharSet = CharSet.Unicode, ExactSpelling = true)] + public static extern int JetGetTableColumnInfoW(IntPtr sesid, IntPtr tableid, string szColumnName, ref NATIVE_COLUMNBASE_WIDE columnbase, uint cbMax, uint InfoLevel); + + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetGetTableColumnInfoW(IntPtr sesid, IntPtr tableid, ref uint pcolumnid, ref NATIVE_COLUMNBASE_WIDE columnbase, uint cbMax, uint InfoLevel); + + [DllImport(EsentDll, CharSet = CharSet.Unicode, ExactSpelling = true)] + public static extern int JetGetTableColumnInfoW(IntPtr sesid, IntPtr tableid, string szIgnored, ref NATIVE_COLUMNLIST columnlist, uint cbMax, uint InfoLevel); + #endregion + + #region JetGetColumnInfo overlaods. +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + [DllImport(EsentDll, CharSet = EsentCharSet, ExactSpelling = true)] + public static extern int JetGetColumnInfo(IntPtr sesid, uint dbid, string szTableName, string szColumnName, ref NATIVE_COLUMNDEF columndef, uint cbMax, uint InfoLevel); + + [DllImport(EsentDll, CharSet = EsentCharSet, ExactSpelling = true)] + public static extern int JetGetColumnInfo(IntPtr sesid, uint dbid, string szTableName, string szColumnName, ref NATIVE_COLUMNLIST columnlist, uint cbMax, uint InfoLevel); + + [DllImport(EsentDll, CharSet = EsentCharSet, ExactSpelling = true)] + public static extern int JetGetColumnInfo(IntPtr sesid, uint dbid, string szTableName, string szColumnName, ref NATIVE_COLUMNBASE columnbase, uint cbMax, uint InfoLevel); + + [DllImport(EsentDll, CharSet = EsentCharSet, ExactSpelling = true)] + public static extern int JetGetColumnInfo(IntPtr sesid, uint dbid, string szTableName, ref uint pcolumnid, ref NATIVE_COLUMNBASE columnbase, uint cbMax, uint InfoLevel); +#endif // !MANAGEDESENT_ON_WSA + + [DllImport(EsentDll, CharSet = CharSet.Unicode, ExactSpelling = true)] + public static extern int JetGetColumnInfoW(IntPtr sesid, uint dbid, string szTableName, string szColumnName, ref NATIVE_COLUMNDEF columndef, uint cbMax, uint InfoLevel); + + [DllImport(EsentDll, CharSet = CharSet.Unicode, ExactSpelling = true)] + public static extern int JetGetColumnInfoW(IntPtr sesid, uint dbid, string szTableName, string szColumnName, ref NATIVE_COLUMNLIST columnlist, uint cbMax, uint InfoLevel); + + [DllImport(EsentDll, CharSet = CharSet.Unicode, ExactSpelling = true)] + public static extern int JetGetColumnInfoW(IntPtr sesid, uint dbid, string szTableName, string szColumnName, ref NATIVE_COLUMNBASE_WIDE columnbase, uint cbMax, uint InfoLevel); + + [DllImport(EsentDll, CharSet = CharSet.Unicode, ExactSpelling = true)] + public static extern int JetGetColumnInfoW(IntPtr sesid, uint dbid, string szTableName, ref uint pcolumnid, ref NATIVE_COLUMNBASE_WIDE columnbase, uint cbMax, uint InfoLevel); + #endregion + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + [DllImport(EsentDll, CharSet = EsentCharSet, ExactSpelling = true)] + public static extern int JetGetObjectInfo( + IntPtr sesid, + uint dbid, + uint objtyp, + string szContainerName, + string szObjectName, + [In] [Out] ref NATIVE_OBJECTLIST objectlist, + uint cbMax, + uint InfoLevel); +#endif // !MANAGEDESENT_ON_WSA + + [DllImport(EsentDll, CharSet = CharSet.Unicode, ExactSpelling = true)] + public static extern int JetGetObjectInfoW( + IntPtr sesid, + uint dbid, + uint objtyp, + string szContainerName, + string szObjectName, + [In] [Out] ref NATIVE_OBJECTLIST objectlist, + uint cbMax, + uint InfoLevel); + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + [DllImport(EsentDll, CharSet = EsentCharSet, ExactSpelling = true)] + public static extern int JetGetObjectInfo( + IntPtr sesid, + uint dbid, + uint objtyp, + string szContainerName, + string szObjectName, + [In] [Out] ref NATIVE_OBJECTINFO objectinfo, + uint cbMax, + uint InfoLevel); +#endif // !MANAGEDESENT_ON_WSA + + [DllImport(EsentDll, CharSet = CharSet.Unicode, ExactSpelling = true)] + public static extern int JetGetObjectInfoW( + IntPtr sesid, + uint dbid, + uint objtyp, + string szContainerName, + string szObjectName, + [In] [Out] ref NATIVE_OBJECTINFO objectinfo, + uint cbMax, + uint InfoLevel); + +#if MANAGEDESENT_ON_WSA + [DllImport(EsentDll, CharSet = CharSet.Unicode, ExactSpelling = true)] + public static extern int JetGetCurrentIndexW(IntPtr sesid, IntPtr tableid, [Out] StringBuilder szIndexName, uint cchIndexName); +#else + [DllImport(EsentDll, CharSet = EsentCharSet, ExactSpelling = true)] + public static extern int JetGetCurrentIndex(IntPtr sesid, IntPtr tableid, [Out] StringBuilder szIndexName, uint cchIndexName); +#endif + + #region JetGetTableInfo overloads + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + [DllImport(EsentDll, CharSet = EsentCharSet, ExactSpelling = true)] + public static extern int JetGetTableInfo( + IntPtr sesid, + IntPtr tableid, + [Out] out NATIVE_OBJECTINFO pvResult, + uint cbMax, + uint infoLevel); + + [DllImport(EsentDll, CharSet = EsentCharSet, ExactSpelling = true)] + public static extern int JetGetTableInfo( + IntPtr sesid, + IntPtr tableid, + [Out] out uint pvResult, + uint cbMax, + uint infoLevel); + + [DllImport(EsentDll, CharSet = EsentCharSet, ExactSpelling = true)] + public static extern int JetGetTableInfo( + IntPtr sesid, + IntPtr tableid, + [Out] int[] pvResult, + uint cbMax, + uint infoLevel); + + [DllImport(EsentDll, CharSet = EsentCharSet, ExactSpelling = true)] + public static extern int JetGetTableInfo( + IntPtr sesid, + IntPtr tableid, + [Out] StringBuilder pvResult, + uint cbMax, + uint infoLevel); +#endif // !MANAGEDESENT_ON_WSA + + [DllImport(EsentDll, CharSet = CharSet.Unicode, ExactSpelling = true)] + public static extern int JetGetTableInfoW( + IntPtr sesid, + IntPtr tableid, + [Out] out NATIVE_OBJECTINFO pvResult, + uint cbMax, + uint infoLevel); + + [DllImport(EsentDll, CharSet = CharSet.Unicode, ExactSpelling = true)] + public static extern int JetGetTableInfoW( + IntPtr sesid, + IntPtr tableid, + [Out] out uint pvResult, + uint cbMax, + uint infoLevel); + + [DllImport(EsentDll, CharSet = CharSet.Unicode, ExactSpelling = true)] + public static extern int JetGetTableInfoW( + IntPtr sesid, + IntPtr tableid, + [Out] int[] pvResult, + uint cbMax, + uint infoLevel); + + [DllImport(EsentDll, CharSet = CharSet.Unicode, ExactSpelling = true)] + public static extern int JetGetTableInfoW( + IntPtr sesid, + IntPtr tableid, + [Out] StringBuilder pvResult, + uint cbMax, + uint infoLevel); + + #endregion + + #region JetGetIndexInfo overloads + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + [DllImport(EsentDll, CharSet = EsentCharSet, ExactSpelling = true)] + public static extern int JetGetIndexInfo( + IntPtr sesid, + uint dbid, + string szTableName, + string szIndexName, + [Out] out ushort result, + uint cbResult, + uint InfoLevel); + + [DllImport(EsentDll, CharSet = EsentCharSet, ExactSpelling = true)] + public static extern int JetGetIndexInfo( + IntPtr sesid, + uint dbid, + string szTableName, + string szIndexName, + [Out] out uint result, + uint cbResult, + uint InfoLevel); + + [DllImport(EsentDll, CharSet = EsentCharSet, ExactSpelling = true)] + public static extern int JetGetIndexInfo( + IntPtr sesid, + uint dbid, + string szTableName, + string szIndexName, + [Out] out JET_INDEXID result, + uint cbResult, + uint InfoLevel); + + [DllImport(EsentDll, CharSet = EsentCharSet, ExactSpelling = true)] + public static extern int JetGetIndexInfo( + IntPtr sesid, + uint dbid, + string szTableName, + string szIndexName, + [In] [Out] ref NATIVE_INDEXLIST result, + uint cbResult, + uint InfoLevel); +#endif // !MANAGEDESENT_ON_WSA + + [DllImport(EsentDll, CharSet = CharSet.Unicode, ExactSpelling = true)] + public static extern int JetGetIndexInfoW( + IntPtr sesid, + uint dbid, + string szTableName, + string szIndexName, + [Out] out ushort result, + uint cbResult, + uint InfoLevel); + + [DllImport(EsentDll, CharSet = CharSet.Unicode, ExactSpelling = true)] + public static extern int JetGetIndexInfoW( + IntPtr sesid, + uint dbid, + string szTableName, + string szIndexName, + [Out] out uint result, + uint cbResult, + uint InfoLevel); + + [DllImport(EsentDll, CharSet = CharSet.Unicode, ExactSpelling = true)] + public static extern int JetGetIndexInfoW( + IntPtr sesid, + uint dbid, + string szTableName, + string szIndexName, + [Out] out JET_INDEXID result, + uint cbResult, + uint InfoLevel); + + [DllImport(EsentDll, CharSet = CharSet.Unicode, ExactSpelling = true)] + public static extern int JetGetIndexInfoW( + IntPtr sesid, + uint dbid, + string szTableName, + string szIndexName, + [In] [Out] ref NATIVE_INDEXLIST result, + uint cbResult, + uint InfoLevel); + + // Meant for NATIVE_INDEXCREATE3. I had some trouble doing [In] [Out] ref NATIVE_INDEXCREATE3. + [DllImport(EsentDll, CharSet = CharSet.Unicode, ExactSpelling = true)] + public static extern int JetGetIndexInfoW( + IntPtr sesid, + uint dbid, + string szTableName, + string szIndexName, + [In] IntPtr result, + uint cbResult, + uint InfoLevel); + + [DllImport(EsentDll, CharSet = CharSet.Unicode, ExactSpelling = true)] + public static extern int JetGetIndexInfoW( + IntPtr sesid, + uint dbid, + string szTableName, + string szIndexName, + [Out] StringBuilder result, + uint cbResult, + uint InfoLevel); + + #endregion + + #region JetGetTableIndexInfo overloads + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + [DllImport(EsentDll, CharSet = EsentCharSet, ExactSpelling = true)] + public static extern int JetGetTableIndexInfo( + IntPtr sesid, + IntPtr tableid, + string szIndexName, + [Out] out ushort result, + uint cbResult, + uint InfoLevel); + + [DllImport(EsentDll, CharSet = EsentCharSet, ExactSpelling = true)] + public static extern int JetGetTableIndexInfo( + IntPtr sesid, + IntPtr tableid, + string szIndexName, + [Out] out uint result, + uint cbResult, + uint InfoLevel); + + [DllImport(EsentDll, CharSet = EsentCharSet, ExactSpelling = true)] + public static extern int JetGetTableIndexInfo( + IntPtr sesid, + IntPtr tableid, + string szIndexName, + [Out] out JET_INDEXID result, + uint cbResult, + uint InfoLevel); + + [DllImport(EsentDll, CharSet = EsentCharSet, ExactSpelling = true)] + public static extern int JetGetTableIndexInfo( + IntPtr sesid, + IntPtr tableid, + string szIndexName, + [In] [Out] ref NATIVE_INDEXLIST result, + uint cbResult, + uint InfoLevel); +#endif // !MANAGEDESENT_ON_WSA + + [DllImport(EsentDll, CharSet = CharSet.Unicode, ExactSpelling = true)] + public static extern int JetGetTableIndexInfoW( + IntPtr sesid, + IntPtr tableid, + string szIndexName, + [Out] out ushort result, + uint cbResult, + uint InfoLevel); + + [DllImport(EsentDll, CharSet = CharSet.Unicode, ExactSpelling = true)] + public static extern int JetGetTableIndexInfoW( + IntPtr sesid, + IntPtr tableid, + string szIndexName, + [Out] out uint result, + uint cbResult, + uint InfoLevel); + + [DllImport(EsentDll, CharSet = CharSet.Unicode, ExactSpelling = true)] + public static extern int JetGetTableIndexInfoW( + IntPtr sesid, + IntPtr tableid, + string szIndexName, + [Out] out JET_INDEXID result, + uint cbResult, + uint InfoLevel); + + [DllImport(EsentDll, CharSet = CharSet.Unicode, ExactSpelling = true)] + public static extern int JetGetTableIndexInfoW( + IntPtr sesid, + IntPtr tableid, + string szIndexName, + [In] [Out] ref NATIVE_INDEXLIST result, + uint cbResult, + uint InfoLevel); + + [DllImport(EsentDll, CharSet = CharSet.Unicode, ExactSpelling = true)] + public static extern int JetGetTableIndexInfoW( + IntPtr sesid, + IntPtr tableid, + string szIndexName, + [In] IntPtr result, + uint cbResult, + uint InfoLevel); + + [DllImport(EsentDll, CharSet = CharSet.Unicode, ExactSpelling = true)] + public static extern int JetGetTableIndexInfoW( + IntPtr sesid, + IntPtr tableid, + string szIndexName, + [Out] StringBuilder result, + uint cbResult, + uint InfoLevel); + + #endregion + +#if MANAGEDESENT_ON_WSA + [DllImport(EsentDll, CharSet = CharSet.Unicode, ExactSpelling = true)] + public static extern int JetRenameTableW(IntPtr sesid, uint dbid, string szName, string szNameNew); +#else + [DllImport(EsentDll, CharSet = EsentCharSet, ExactSpelling = true)] + public static extern int JetRenameTable(IntPtr sesid, uint dbid, string szName, string szNameNew); +#endif // !MANAGEDESENT_ON_WSA + +#if MANAGEDESENT_ON_WSA + [DllImport(EsentDll, CharSet = CharSet.Unicode, ExactSpelling = true)] + public static extern int JetRenameColumnW(IntPtr sesid, IntPtr tableid, string szName, string szNameNew, uint grbit); +#else + [DllImport(EsentDll, CharSet = EsentCharSet, ExactSpelling = true)] + public static extern int JetRenameColumn(IntPtr sesid, IntPtr tableid, string szName, string szNameNew, uint grbit); +#endif // !MANAGEDESENT_ON_WSA + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + [DllImport(EsentDll, CharSet = EsentCharSet, ExactSpelling = true)] + public static extern int JetSetColumnDefaultValue( + IntPtr sesid, uint tableid, [MarshalAs(UnmanagedType.LPStr)] string szTableName, [MarshalAs(UnmanagedType.LPStr)] string szColumnName, byte[] pvData, uint cbData, uint grbit); +#endif // !MANAGEDESENT_ON_WSA + + #endregion + + #region Navigation + + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetGotoBookmark(IntPtr sesid, IntPtr tableid, [In] byte[] pvBookmark, uint cbBookmark); + + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetGotoSecondaryIndexBookmark( + IntPtr sesid, + IntPtr tableid, + [In] byte[] pvSecondaryKey, + uint cbSecondaryKey, + [In] byte[] pvPrimaryBookmark, + uint cbPrimaryBookmark, + uint grbit); + + // This has IntPtr and NATIVE_RETINFO versions because the parameter can be null + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetMove(IntPtr sesid, IntPtr tableid, int cRow, uint grbit); + + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetMakeKey(IntPtr sesid, IntPtr tableid, IntPtr pvData, uint cbData, uint grbit); + + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetSeek(IntPtr sesid, IntPtr tableid, uint grbit); + + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetSetIndexRange(IntPtr sesid, IntPtr tableid, uint grbit); + + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetIntersectIndexes( + IntPtr sesid, + [In] NATIVE_INDEXRANGE[] rgindexrange, + uint cindexrange, + [In] [Out] ref NATIVE_RECORDLIST recordlist, + uint grbit); + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + [DllImport(EsentDll, CharSet = EsentCharSet, ExactSpelling = true)] + public static extern int JetSetCurrentIndex(IntPtr sesid, IntPtr tableid, string szIndexName); + + [DllImport(EsentDll, CharSet = EsentCharSet, ExactSpelling = true)] + public static extern int JetSetCurrentIndex2(IntPtr sesid, IntPtr tableid, string szIndexName, uint grbit); + + [DllImport(EsentDll, CharSet = EsentCharSet, ExactSpelling = true)] + public static extern int JetSetCurrentIndex3(IntPtr sesid, IntPtr tableid, string szIndexName, uint grbit, uint itagSequence); + + [DllImport(EsentDll, CharSet = EsentCharSet, ExactSpelling = true)] + public static extern int JetSetCurrentIndex4(IntPtr sesid, IntPtr tableid, string szIndexName, [In] ref JET_INDEXID indexid, uint grbit, uint itagSequence); +#else + [DllImport(EsentDll, CharSet = CharSet.Unicode, ExactSpelling = true)] + public static extern int JetSetCurrentIndex4W(IntPtr sesid, IntPtr tableid, string szIndexName, [In] ref JET_INDEXID indexid, uint grbit, uint itagSequence); + + // This overload allows a null indexid. + [DllImport(EsentDll, CharSet = CharSet.Unicode, ExactSpelling = true)] + public static extern int JetSetCurrentIndex4W(IntPtr sesid, IntPtr tableid, string szIndexName, [In] IntPtr indexid, uint grbit, uint itagSequence); +#endif // !MANAGEDESENT_ON_WSA + + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetIndexRecordCount(IntPtr sesid, IntPtr tableid, out uint crec, uint crecMax); + + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetIndexRecordCount2(IntPtr sesid, IntPtr tableid, out ulong crec, ulong crecMax); + + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetSetTableSequential(IntPtr sesid, IntPtr tableid, uint grbit); + + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetResetTableSequential(IntPtr sesid, IntPtr tableid, uint grbit); + + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetGetRecordPosition(IntPtr sesid, IntPtr tableid, out NATIVE_RECPOS precpos, uint cbRecpos); + + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetGotoPosition(IntPtr sesid, IntPtr tableid, [In] ref NATIVE_RECPOS precpos); + + [DllImport(EsentDll, ExactSpelling = true)] + public static unsafe extern int JetPrereadKeys( + IntPtr sesid, IntPtr tableid, void** rgpvKeys, uint* rgcbKeys, int ckeys, out int pckeysPreread, uint grbit); + + #endregion + + #region Data Retrieval + + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetGetBookmark(IntPtr sesid, IntPtr tableid, [Out] byte[] pvBookmark, uint cbMax, out uint cbActual); + + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetGetSecondaryIndexBookmark( + IntPtr sesid, + IntPtr tableid, + [Out] byte[] secondaryKey, + uint secondaryKeySize, + out uint actualSecondaryKeySize, + [Out] byte[] primaryKey, + uint primaryKeySize, + out uint actualPrimaryKeySize, + uint grbit); + + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetRetrieveColumn(IntPtr sesid, IntPtr tableid, uint columnid, IntPtr pvData, uint cbData, out uint cbActual, uint grbit, IntPtr pretinfo); + + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetRetrieveColumn( + IntPtr sesid, + IntPtr tableid, + uint columnid, + IntPtr pvData, + uint cbData, + out uint cbActual, + uint grbit, + [In] [Out] ref NATIVE_RETINFO pretinfo); + + [DllImport(EsentDll, ExactSpelling = true)] + public static unsafe extern int JetRetrieveColumns( + IntPtr sesid, IntPtr tableid, [In] [Out] NATIVE_RETRIEVECOLUMN* psetcolumn, uint csetcolumn); + + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetRetrieveKey(IntPtr sesid, IntPtr tableid, [Out] byte[] pvData, uint cbMax, out uint cbActual, uint grbit); + + [DllImport(EsentDll, ExactSpelling = true)] + public static extern unsafe int JetEnumerateColumns( + IntPtr sesid, + IntPtr tableid, + uint cEnumColumnId, + NATIVE_ENUMCOLUMNID* rgEnumColumnId, + out uint pcEnumColumn, + out NATIVE_ENUMCOLUMN* prgEnumColumn, + JET_PFNREALLOC pfnRealloc, + IntPtr pvReallocContext, + uint cbDataMost, + uint grbit); + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetGetRecordSize( + IntPtr sesid, IntPtr tableid, ref NATIVE_RECSIZE precsize, uint grbit); + + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetGetRecordSize2( + IntPtr sesid, IntPtr tableid, ref NATIVE_RECSIZE2 precsize, uint grbit); +#endif // !MANAGEDESENT_ON_WSA + + #endregion + + #region DML + + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetDelete(IntPtr sesid, IntPtr tableid); + + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetPrepareUpdate(IntPtr sesid, IntPtr tableid, uint prep); + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetUpdate(IntPtr sesid, IntPtr tableid, [Out] byte[] pvBookmark, uint cbBookmark, out uint cbActual); +#endif // !MANAGEDESENT_ON_WSA + + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetUpdate2(IntPtr sesid, IntPtr tableid, [Out] byte[] pvBookmark, uint cbBookmark, out uint cbActual, uint grbit); + + // This has IntPtr and NATIVE_SETINFO versions because the parameter can be null + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetSetColumn(IntPtr sesid, IntPtr tableid, uint columnid, IntPtr pvData, uint cbData, uint grbit, IntPtr psetinfo); + + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetSetColumn(IntPtr sesid, IntPtr tableid, uint columnid, IntPtr pvData, uint cbData, uint grbit, [In] ref NATIVE_SETINFO psetinfo); + + [DllImport(EsentDll, ExactSpelling = true)] + public static unsafe extern int JetSetColumns( + IntPtr sesid, IntPtr tableid, [In] [Out] NATIVE_SETCOLUMN* psetcolumn, uint csetcolumn); + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetGetLock(IntPtr sesid, IntPtr tableid, uint grbit); +#endif // !MANAGEDESENT_ON_WSA + + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetEscrowUpdate( + IntPtr sesid, + IntPtr tableid, + uint columnid, + [In] byte[] pv, + uint cbMax, + [Out] byte[] pvOld, + uint cbOldMax, + out uint cbOldActual, + uint grbit); + + #endregion + + #region Callbacks + + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetRegisterCallback( + IntPtr sesid, IntPtr tableid, uint cbtyp, NATIVE_CALLBACK callback, IntPtr pvContext, out IntPtr pCallbackId); + + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetUnregisterCallback(IntPtr sesid, IntPtr tableid, uint cbtyp, IntPtr hCallbackId); + + #endregion + + #region Online Maintenance + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + [DllImport(EsentDll, CharSet = EsentCharSet, ExactSpelling = true)] + public static extern int JetDefragment( + IntPtr sesid, uint dbid, string szTableName, ref uint pcPasses, ref uint pcSeconds, uint grbit); + + [DllImport(EsentDll, CharSet = EsentCharSet, ExactSpelling = true)] + public static extern int JetDefragment( + IntPtr sesid, uint dbid, string szTableName, IntPtr pcPasses, IntPtr pcSeconds, uint grbit); + + [DllImport(EsentDll, CharSet = EsentCharSet, ExactSpelling = true)] + public static extern int JetDefragment2( + IntPtr sesid, uint dbid, string szTableName, ref uint pcPasses, ref uint pcSeconds, IntPtr callback, uint grbit); + + [DllImport(EsentDll, CharSet = EsentCharSet, ExactSpelling = true)] + public static extern int JetDefragment2( + IntPtr sesid, uint dbid, string szTableName, IntPtr pcPasses, IntPtr pcSeconds, IntPtr callback, uint grbit); +#endif // !MANAGEDESENT_ON_WSA + + [DllImport(EsentDll, CharSet = CharSet.Unicode, ExactSpelling = true)] + public static extern int JetDefragment2W( + IntPtr sesid, uint dbid, string szTableName, ref uint pcPasses, ref uint pcSeconds, IntPtr callback, uint grbit); + + [DllImport(EsentDll, CharSet = CharSet.Unicode, ExactSpelling = true)] + public static extern int JetDefragment2W( + IntPtr sesid, uint dbid, string szTableName, IntPtr pcPasses, IntPtr pcSeconds, IntPtr callback, uint grbit); + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetIdle(IntPtr sesid, uint grbit); +#endif // !MANAGEDESENT_ON_WSA + + #endregion + + #region Misc + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetConfigureProcessForCrashDump(uint grbit); + + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetFreeBuffer(IntPtr pbBuf); +#endif // !MANAGEDESENT_ON_WSA + + #endregion + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/ObjectInfoFlags.cs b/WelsonJS.Toolkit/EsentInterop/ObjectInfoFlags.cs new file mode 100644 index 0000000..1717c59 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/ObjectInfoFlags.cs @@ -0,0 +1,53 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + + /// + /// Flags for ESENT objects (tables). Used in . + /// + [Flags] + public enum ObjectInfoFlags + { + /// + /// Default options. + /// + None = 0, + + /// + /// Object is for internal use only. + /// + System = -2147483648, // 0x80000000 + // It's possible to use bit shift to avoid triggering fxcop CA2217. + // System = (long)0x1L << 31, // 0x80000000; + // (http://social.msdn.microsoft.com/Forums/en-US/vstscode/thread/a44aa5c1-c62a-46b7-8009-dc46ba21ba93) + // But we don't want to change the type of the enum to a long. + + /// + /// Table's DDL is fixed. + /// + TableFixedDDL = 0x40000000, + + /// + /// Table's DDL is inheritable. + /// + TableTemplate = 0x20000000, + + /// + /// Table's DDL is inherited from a template table. + /// + TableDerived = 0x10000000, + + /// + /// Fixed or variable columns in derived tables (so that fixed or variable + /// columns can be added to the template in the future). + /// Used in conjunction with . + /// + TableNoFixedVarColumnsInDerivedTables = 0x04000000, + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/ObsoleteApi.cs b/WelsonJS.Toolkit/EsentInterop/ObsoleteApi.cs new file mode 100644 index 0000000..2177372 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/ObsoleteApi.cs @@ -0,0 +1,52 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + + /// + /// API members that are marked as obsolete. + /// + public static partial class Api + { + /// + /// Retrieves information about indexes on a table. + /// + /// The session to use. + /// The database to use. + /// The name of the table to retrieve index information about. + /// This parameter is ignored. + /// Filled in with information about indexes on the table. + [Obsolete("Use the overload that takes a JET_IdxInfo parameter, passing in JET_IdxInfo.List")] + public static void JetGetIndexInfo( + JET_SESID sesid, + JET_DBID dbid, + string tablename, + string ignored, + out JET_INDEXLIST indexlist) + { + Api.JetGetIndexInfo(sesid, dbid, tablename, ignored, out indexlist, JET_IdxInfo.List); + } + + /// + /// Retrieves information about indexes on a table. + /// + /// The session to use. + /// The table to retrieve index information about. + /// This parameter is ignored. + /// Filled in with information about indexes on the table. + [Obsolete("Use the overload that takes a JET_IdxInfo parameter, passing in JET_IdxInfo.List")] + public static void JetGetTableIndexInfo( + JET_SESID sesid, + JET_TABLEID tableid, + string indexname, + out JET_INDEXLIST indexlist) + { + Api.JetGetTableIndexInfo(sesid, tableid, indexname, out indexlist, JET_IdxInfo.List); + } + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/OnlineMaintenanceHelpers.cs b/WelsonJS.Toolkit/EsentInterop/OnlineMaintenanceHelpers.cs new file mode 100644 index 0000000..f94cc3c --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/OnlineMaintenanceHelpers.cs @@ -0,0 +1,44 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Collections.Generic; + using System.Diagnostics; + using System.Text; + using Microsoft.Isam.Esent.Interop.Implementation; + + /// + /// Helper methods for the ESENT API. These methods deal with database + /// meta-data. + /// + public static partial class Api + { + /// + /// Starts and stops database defragmentation tasks that improves data + /// organization within a database. + /// + /// The session to use for the call. + /// The database to be defragmented. + /// + /// Under some options defragmentation is performed for the entire database described by the given + /// database ID, and other options (such as ) require + /// the name of the table to defragment. + /// + /// Defragmentation options. + /// A warning code. + /// + public static JET_wrn Defragment( + JET_SESID sesid, + JET_DBID dbid, + string tableName, + DefragGrbit grbit) + { + return Api.Check(Impl.Defragment(sesid, dbid, tableName, grbit)); + } + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/RetrieveColumnHelpers.cs b/WelsonJS.Toolkit/EsentInterop/RetrieveColumnHelpers.cs new file mode 100644 index 0000000..1a5153c --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/RetrieveColumnHelpers.cs @@ -0,0 +1,1172 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Collections.Generic; + using System.Diagnostics; + using System.Diagnostics.CodeAnalysis; + using System.Globalization; +#if MANAGEDESENT_SUPPORTS_SERIALIZATION + using System.Runtime.Serialization.Formatters.Binary; +#endif + using System.Text; + + /// + /// Helper methods for the ESENT API. These aren't interop versions + /// of the API, but encapsulate very common uses of the functions. + /// + public static partial class Api + { + /// + /// Encoding to use to decode ASCII text. We use this because + /// UTF8.GetString is faster than ASCII.GetString. + /// + private static readonly Encoding AsciiDecoder = new UTF8Encoding(false, true); + + /// + /// Retrieves the bookmark for the record that is associated with the index entry + /// at the current position of a cursor. This bookmark can then be used to + /// reposition that cursor back to the same record using JetGotoBookmark. + /// + /// The session to use. + /// The cursor to retrieve the bookmark from. + /// The bookmark of the record. + public static byte[] GetBookmark(JET_SESID sesid, JET_TABLEID tableid) + { + byte[] buffer = null; + byte[] bookmark; + + try + { + buffer = Caches.BookmarkCache.Allocate(); + int bookmarkSize; + Api.JetGetBookmark(sesid, tableid, buffer, buffer.Length, out bookmarkSize); + bookmark = MemoryCache.Duplicate(buffer, bookmarkSize); + } + finally + { + if (buffer != null) + { + Caches.BookmarkCache.Free(ref buffer); + } + } + + return bookmark; + } + + /// + /// Retrieves the bookmark for the record that is associated with the index entry + /// at the current position of a cursor. This bookmark can then be used to + /// reposition that cursor back to the same record using JetGotoBookmark. + /// + /// The session to use. + /// The cursor to retrieve the bookmark from. + /// Returns the primary bookmark. + /// The secondary bookmark of the record. + public static byte[] GetSecondaryBookmark( + JET_SESID sesid, + JET_TABLEID tableid, + out byte[] primaryBookmark) + { + byte[] bufferPrimary = null; + byte[] bufferSecondary = null; + byte[] secondaryBookmark; + primaryBookmark = null; + + try + { + bufferPrimary = Caches.BookmarkCache.Allocate(); + bufferSecondary = Caches.SecondaryBookmarkCache.Allocate(); + int bookmarkSizePrimary; + int bookmarkSizeSecondary; + + Api.JetGetSecondaryIndexBookmark( + sesid, + tableid, + bufferSecondary, + bufferSecondary.Length, + out bookmarkSizeSecondary, + bufferPrimary, + bufferPrimary.Length, + out bookmarkSizePrimary, + GetSecondaryIndexBookmarkGrbit.None); + + primaryBookmark = MemoryCache.Duplicate(bufferPrimary, bookmarkSizePrimary); + secondaryBookmark = MemoryCache.Duplicate(bufferSecondary, bookmarkSizeSecondary); + } + finally + { + if (bufferPrimary != null) + { + Caches.BookmarkCache.Free(ref bufferPrimary); + } + + if (bufferSecondary != null) + { + Caches.BookmarkCache.Free(ref bufferSecondary); + } + } + + return secondaryBookmark; + } + + /// + /// Retrieves the key for the index entry at the current position of a cursor. + /// + /// The session to use. + /// The cursor to retrieve the key from. + /// Retrieve key options. + /// The retrieved key. + public static byte[] RetrieveKey(JET_SESID sesid, JET_TABLEID tableid, RetrieveKeyGrbit grbit) + { + byte[] buffer = null; + byte[] key; + + try + { + buffer = Caches.BookmarkCache.Allocate(); + int keySize; + Api.JetRetrieveKey(sesid, tableid, buffer, buffer.Length, out keySize, grbit); + key = MemoryCache.Duplicate(buffer, keySize); + } + finally + { + if (buffer != null) + { + Caches.BookmarkCache.Free(ref buffer); + } + } + + return key; + } + + /// + /// Retrieves the size of a single column value from the current record. + /// The record is that record associated with the index entry at the + /// current position of the cursor. Alternatively, this function can + /// retrieve a column from a record being created in the cursor copy + /// buffer. This function can also retrieve column data from an index + /// entry that references the current record. + /// + /// The session to use. + /// The cursor to retrieve the column from. + /// The columnid to retrieve. + /// The size of the column. 0 if the column is null. + public static int? RetrieveColumnSize(JET_SESID sesid, JET_TABLEID tableid, JET_COLUMNID columnid) + { + return RetrieveColumnSize(sesid, tableid, columnid, 1, RetrieveColumnGrbit.None); + } + + /// + /// Retrieves the size of a single column value from the current record. + /// The record is that record associated with the index entry at the + /// current position of the cursor. Alternatively, this function can + /// retrieve a column from a record being created in the cursor copy + /// buffer. This function can also retrieve column data from an index + /// entry that references the current record. + /// + /// The session to use. + /// The cursor to retrieve the column from. + /// The columnid to retrieve. + /// + /// The sequence number of value in a multi-valued column. + /// The array of values is one-based. The first value is + /// sequence 1, not 0. If the record column has only one value then + /// 1 should be passed as the itagSequence. + /// + /// Retrieve column options. + /// The size of the column. 0 if the column is null. + public static int? RetrieveColumnSize( + JET_SESID sesid, JET_TABLEID tableid, JET_COLUMNID columnid, int itagSequence, RetrieveColumnGrbit grbit) + { + // We cannot support this request when there is no way to indicate that a column reference is returned. + if ((grbit & (RetrieveColumnGrbit)0x00020000) != 0) // UnpublishedGrbits.RetrieveAsRefIfNotInRecord + { + throw new EsentInvalidGrbitException(); + } + + var retinfo = new JET_RETINFO { itagSequence = itagSequence }; + int dataSize; + JET_wrn wrn = JetRetrieveColumn( + sesid, tableid, columnid, null, 0, out dataSize, grbit, retinfo); + if (JET_wrn.ColumnNull == wrn) + { + return null; + } + + return dataSize; + } + + /// + /// Retrieves a single column value from the current record. The record is that + /// record associated with the index entry at the current position of the cursor. + /// Alternatively, this function can retrieve a column from a record being created + /// in the cursor copy buffer. This function can also retrieve column data from an + /// index entry that references the current record. In addition to retrieving the + /// actual column value, JetRetrieveColumn can also be used to retrieve the size + /// of a column, before retrieving the column data itself so that application + /// buffers can be sized appropriately. + /// + /// The session to use. + /// The cursor to retrieve the column from. + /// The columnid to retrieve. + /// Retrieve column options. + /// + /// If pretinfo is give as NULL then the function behaves as though an itagSequence + /// of 1 and an ibLongValue of 0 (zero) were given. This causes column retrieval to + /// retrieve the first value of a multi-valued column, and to retrieve long data at + /// offset 0 (zero). + /// + /// The data retrieved from the column. Null if the column is null. + public static byte[] RetrieveColumn( + JET_SESID sesid, JET_TABLEID tableid, JET_COLUMNID columnid, RetrieveColumnGrbit grbit, JET_RETINFO retinfo) + { + // We cannot support this request when there is no way to indicate that a column reference is returned. + if ((grbit & (RetrieveColumnGrbit)0x00020000) != 0) // UnpublishedGrbits.RetrieveAsRefIfNotInRecord + { + throw new EsentInvalidGrbitException(); + } + + // We expect most column values retrieved this way to be small (retrieving a 1GB LV as one + // chunk is a bit extreme!). Allocate a cached buffer and use that, allocating a larger one + // if needed. + byte[] cache = null; + byte[] data; + + try + { + cache = Caches.ColumnCache.Allocate(); + data = cache; + int dataSize; + JET_wrn wrn = JetRetrieveColumn( + sesid, tableid, columnid, data, data.Length, out dataSize, grbit, retinfo); + + if (JET_wrn.ColumnNull == wrn) + { + // null column + data = null; + } + else if (JET_wrn.Success == wrn) + { + data = MemoryCache.Duplicate(data, dataSize); + } + else + { + // there is more data to retrieve + Debug.Assert(JET_wrn.BufferTruncated == wrn, "Unexpected warning: " + wrn.ToString()); + data = new byte[dataSize]; + wrn = JetRetrieveColumn( + sesid, tableid, columnid, data, data.Length, out dataSize, grbit, retinfo); + if (JET_wrn.BufferTruncated == wrn) + { + string error = string.Format( + CultureInfo.CurrentCulture, + "Column size changed from {0} to {1}. The record was probably updated by another thread.", + data.Length, + dataSize); + Trace.TraceError(error); + throw new InvalidOperationException(error); + } + } + } + finally + { + if (cache != null) + { + Caches.ColumnCache.Free(ref cache); + } + } + + return data; + } + + /// + /// Retrieves a single column value from the current record. The record is that + /// record associated with the index entry at the current position of the cursor. + /// Alternatively, this function can retrieve a column from a record being created + /// in the cursor copy buffer. This function can also retrieve column data from an + /// index entry that references the current record. In addition to retrieving the + /// actual column value, JetRetrieveColumn can also be used to retrieve the size + /// of a column, before retrieving the column data itself so that application + /// buffers can be sized appropriately. + /// + /// The session to use. + /// The cursor to retrieve the column from. + /// The columnid to retrieve. + /// The data buffer to be retrieved into. + /// The size of the data buffer. + /// Returns the actual size of the data buffer. + /// Retrieve column options. + /// + /// If pretinfo is give as NULL then the function behaves as though an itagSequence + /// of 1 and an ibLongValue of 0 (zero) were given. This causes column retrieval to + /// retrieve the first value of a multi-valued column, and to retrieve long data at + /// offset 0 (zero). + /// + /// The data retrieved from the column. Null if the column is null. + public static JET_wrn RetrieveColumn( + JET_SESID sesid, JET_TABLEID tableid, JET_COLUMNID columnid, byte[] data, int dataSize, out int actualDataSize, RetrieveColumnGrbit grbit, JET_RETINFO retinfo) + { + // We cannot support this request when there is no way to indicate that a column reference is returned. + if ((grbit & (RetrieveColumnGrbit)0x00020000) != 0) // UnpublishedGrbits.RetrieveAsRefIfNotInRecord + { + throw new EsentInvalidGrbitException(); + } + + return JetRetrieveColumn(sesid, tableid, columnid, data, dataSize, out actualDataSize, grbit, retinfo); + } + + /// + /// Retrieves a single column value from the current record. The record is that + /// record associated with the index entry at the current position of the cursor. + /// + /// The session to use. + /// The cursor to retrieve the column from. + /// The columnid to retrieve. + /// The data retrieved from the column. Null if the column is null. + public static byte[] RetrieveColumn(JET_SESID sesid, JET_TABLEID tableid, JET_COLUMNID columnid) + { + return RetrieveColumn(sesid, tableid, columnid, RetrieveColumnGrbit.None, null); + } + + /// + /// Retrieves a single column value from the current record. The record is that + /// record associated with the index entry at the current position of the cursor. + /// The Unicode encoding is used. + /// + /// The session to use. + /// The cursor to retrieve the column from. + /// The columnid to retrieve. + /// The data retrieved from the column as a string. Null if the column is null. + public static string RetrieveColumnAsString(JET_SESID sesid, JET_TABLEID tableid, JET_COLUMNID columnid) + { + return RetrieveColumnAsString(sesid, tableid, columnid, Encoding.Unicode, RetrieveColumnGrbit.None); + } + + /// + /// Retrieves a string column value from the current record. The record is that + /// record associated with the index entry at the current position of the cursor. + /// + /// The session to use. + /// The cursor to retrieve the column from. + /// The columnid to retrieve. + /// The string encoding to use when converting data. + /// The data retrieved from the column as a string. Null if the column is null. + public static string RetrieveColumnAsString( + JET_SESID sesid, JET_TABLEID tableid, JET_COLUMNID columnid, Encoding encoding) + { + return RetrieveColumnAsString(sesid, tableid, columnid, encoding, RetrieveColumnGrbit.None); + } + + /// + /// Retrieves a string column value from the current record. The record is that + /// record associated with the index entry at the current position of the cursor. + /// + /// The session to use. + /// The cursor to retrieve the column from. + /// The columnid to retrieve. + /// The string encoding to use when converting data. + /// Retrieval options. + /// The data retrieved from the column as a string. Null if the column is null. + public static string RetrieveColumnAsString( + JET_SESID sesid, JET_TABLEID tableid, JET_COLUMNID columnid, Encoding encoding, RetrieveColumnGrbit grbit) + { + // We cannot support this request when there is no way to indicate that a column reference is returned. + if ((grbit & (RetrieveColumnGrbit)0x00020000) != 0) // UnpublishedGrbits.RetrieveAsRefIfNotInRecord + { + throw new EsentInvalidGrbitException(); + } + + // This is an optimization for retrieving Unicode strings + if (Encoding.Unicode == encoding) + { + return RetrieveUnicodeString(sesid, tableid, columnid, grbit); + } + + // Retrieving a string happens in two stages: first the data is retrieved into a data + // buffer and then the buffer is converted to a string. The buffer isn't needed for + // very long so we try to use a cached buffer. + byte[] cachedBuffer = null; + string s; + + try + { + cachedBuffer = Caches.ColumnCache.Allocate(); + byte[] data = cachedBuffer; + + int dataSize; + JET_wrn wrn = JetRetrieveColumn(sesid, tableid, columnid, data, data.Length, out dataSize, grbit, null); + if (JET_wrn.ColumnNull == wrn) + { + return null; + } + + if (JET_wrn.BufferTruncated == wrn) + { + Debug.Assert(dataSize > data.Length, "Expected column to be bigger than buffer"); + data = new byte[dataSize]; + wrn = JetRetrieveColumn(sesid, tableid, columnid, data, data.Length, out dataSize, grbit, null); + if (JET_wrn.BufferTruncated == wrn) + { + string error = string.Format( + CultureInfo.CurrentCulture, + "Column size changed from {0} to {1}. The record was probably updated by another thread.", + data.Length, + dataSize); + Trace.TraceError(error); + throw new InvalidOperationException(error); + } + } + +#if MANAGEDESENT_SUPPORTS_ANSI + // If we are about to decode ASCII data then use the UTF8 decoder instead. This + // is done because the UTF8 decoder is faster and will produce the same results + // on ASCII data. Different results will be produced on invalid data, but that + // behaviour can be considered undefined. + Encoding decoder = (encoding is ASCIIEncoding) ? AsciiDecoder : encoding; +#else + Encoding decoder = encoding; +#endif + s = decoder.GetString(data, 0, dataSize); + } + finally + { + if (cachedBuffer != null) + { + // Now we have extracted the string from the buffer we can free (cache) the buffer. + Caches.ColumnCache.Free(ref cachedBuffer); + } + } + + return s; + } + + /// + /// Retrieves a single column value from the current record. The record is that + /// record associated with the index entry at the current position of the cursor. + /// + /// The session to use. + /// The cursor to retrieve the column from. + /// The columnid to retrieve. + /// The data retrieved from the column as a short. Null if the column is null. + public static short? RetrieveColumnAsInt16(JET_SESID sesid, JET_TABLEID tableid, JET_COLUMNID columnid) + { + return RetrieveColumnAsInt16(sesid, tableid, columnid, RetrieveColumnGrbit.None); + } + + /// + /// Retrieves an int16 column value from the current record. The record is that + /// record associated with the index entry at the current position of the cursor. + /// + /// The session to use. + /// The cursor to retrieve the column from. + /// The columnid to retrieve. + /// Retrieval options. + /// The data retrieved from the column as a short. Null if the column is null. + public static short? RetrieveColumnAsInt16( + JET_SESID sesid, JET_TABLEID tableid, JET_COLUMNID columnid, RetrieveColumnGrbit grbit) + { + // We cannot support this request when there is no way to indicate that a column reference is returned. + if ((grbit & (RetrieveColumnGrbit)0x00020000) != 0) // UnpublishedGrbits.RetrieveAsRefIfNotInRecord + { + throw new EsentInvalidGrbitException(); + } + + unsafe + { + const int DataSize = sizeof(short); + short data; + var pointer = new IntPtr(&data); + int actualDataSize; + JET_wrn wrn = JetRetrieveColumn( + sesid, tableid, columnid, pointer, DataSize, out actualDataSize, grbit, null); + return CreateReturnValue(data, DataSize, wrn, actualDataSize); + } + } + + /// + /// Retrieves a single column value from the current record. The record is that + /// record associated with the index entry at the current position of the cursor. + /// + /// The session to use. + /// The cursor to retrieve the column from. + /// The columnid to retrieve. + /// The data retrieved from the column as an int. Null if the column is null. + public static int? RetrieveColumnAsInt32(JET_SESID sesid, JET_TABLEID tableid, JET_COLUMNID columnid) + { + return RetrieveColumnAsInt32(sesid, tableid, columnid, RetrieveColumnGrbit.None); + } + + /// + /// Retrieves an int32 column value from the current record. The record is that + /// record associated with the index entry at the current position of the cursor. + /// + /// The session to use. + /// The cursor to retrieve the column from. + /// The columnid to retrieve. + /// Retrieval options. + /// The data retrieved from the column as an int. Null if the column is null. + public static int? RetrieveColumnAsInt32( + JET_SESID sesid, JET_TABLEID tableid, JET_COLUMNID columnid, RetrieveColumnGrbit grbit) + { + // We cannot support this request when there is no way to indicate that a column reference is returned. + if ((grbit & (RetrieveColumnGrbit)0x00020000) != 0) // UnpublishedGrbits.RetrieveAsRefIfNotInRecord + { + throw new EsentInvalidGrbitException(); + } + + unsafe + { + const int DataSize = sizeof(int); + int data; + var pointer = new IntPtr(&data); + int actualDataSize; + JET_wrn wrn = JetRetrieveColumn( + sesid, tableid, columnid, pointer, DataSize, out actualDataSize, grbit, null); + return CreateReturnValue(data, DataSize, wrn, actualDataSize); + } + } + + /// + /// Retrieves a single column value from the current record. The record is that + /// record associated with the index entry at the current position of the cursor. + /// + /// The session to use. + /// The cursor to retrieve the column from. + /// The columnid to retrieve. + /// The data retrieved from the column as a long. Null if the column is null. + public static long? RetrieveColumnAsInt64(JET_SESID sesid, JET_TABLEID tableid, JET_COLUMNID columnid) + { + return RetrieveColumnAsInt64(sesid, tableid, columnid, RetrieveColumnGrbit.None); + } + + /// + /// Retrieves a single column value from the current record. The record is that + /// record associated with the index entry at the current position of the cursor. + /// + /// The session to use. + /// The cursor to retrieve the column from. + /// The columnid to retrieve. + /// Retrieval options. + /// The data retrieved from the column as a long. Null if the column is null. + public static long? RetrieveColumnAsInt64( + JET_SESID sesid, JET_TABLEID tableid, JET_COLUMNID columnid, RetrieveColumnGrbit grbit) + { + // We cannot support this request when there is no way to indicate that a column reference is returned. + if ((grbit & (RetrieveColumnGrbit)0x00020000) != 0) // UnpublishedGrbits.RetrieveAsRefIfNotInRecord + { + throw new EsentInvalidGrbitException(); + } + + unsafe + { + const int DataSize = sizeof(long); + long data; + var pointer = new IntPtr(&data); + int actualDataSize; + JET_wrn wrn = JetRetrieveColumn( + sesid, tableid, columnid, pointer, DataSize, out actualDataSize, grbit, null); + return CreateReturnValue(data, DataSize, wrn, actualDataSize); + } + } + + /// + /// Retrieves a float column value from the current record. The record is that + /// record associated with the index entry at the current position of the cursor. + /// + /// The session to use. + /// The cursor to retrieve the column from. + /// The columnid to retrieve. + /// The data retrieved from the column as a float. Null if the column is null. + public static float? RetrieveColumnAsFloat(JET_SESID sesid, JET_TABLEID tableid, JET_COLUMNID columnid) + { + return RetrieveColumnAsFloat(sesid, tableid, columnid, RetrieveColumnGrbit.None); + } + + /// + /// Retrieves a float column value from the current record. The record is that + /// record associated with the index entry at the current position of the cursor. + /// + /// The session to use. + /// The cursor to retrieve the column from. + /// The columnid to retrieve. + /// Retrieval options. + /// The data retrieved from the column as a float. Null if the column is null. + public static float? RetrieveColumnAsFloat( + JET_SESID sesid, JET_TABLEID tableid, JET_COLUMNID columnid, RetrieveColumnGrbit grbit) + { + // We cannot support this request when there is no way to indicate that a column reference is returned. + if ((grbit & (RetrieveColumnGrbit)0x00020000) != 0) // UnpublishedGrbits.RetrieveAsRefIfNotInRecord + { + throw new EsentInvalidGrbitException(); + } + + unsafe + { + const int DataSize = sizeof(float); + float data; + var pointer = new IntPtr(&data); + int actualDataSize; + JET_wrn wrn = JetRetrieveColumn( + sesid, tableid, columnid, pointer, DataSize, out actualDataSize, grbit, null); + return CreateReturnValue(data, DataSize, wrn, actualDataSize); + } + } + + /// + /// Retrieves a double column value from the current record. The record is that + /// record associated with the index entry at the current position of the cursor. + /// + /// The session to use. + /// The cursor to retrieve the column from. + /// The columnid to retrieve. + /// The data retrieved from the column as a double. Null if the column is null. + public static double? RetrieveColumnAsDouble(JET_SESID sesid, JET_TABLEID tableid, JET_COLUMNID columnid) + { + return RetrieveColumnAsDouble(sesid, tableid, columnid, RetrieveColumnGrbit.None); + } + + /// + /// Retrieves a double column value from the current record. The record is that + /// record associated with the index entry at the current position of the cursor. + /// + /// The session to use. + /// The cursor to retrieve the column from. + /// The columnid to retrieve. + /// Retrieval options. + /// The data retrieved from the column as a double. Null if the column is null. + public static double? RetrieveColumnAsDouble( + JET_SESID sesid, JET_TABLEID tableid, JET_COLUMNID columnid, RetrieveColumnGrbit grbit) + { + // We cannot support this request when there is no way to indicate that a column reference is returned. + if ((grbit & (RetrieveColumnGrbit)0x00020000) != 0) // UnpublishedGrbits.RetrieveAsRefIfNotInRecord + { + throw new EsentInvalidGrbitException(); + } + + unsafe + { + const int DataSize = sizeof(double); + double data; + var pointer = new IntPtr(&data); + int actualDataSize; + JET_wrn wrn = JetRetrieveColumn( + sesid, tableid, columnid, pointer, DataSize, out actualDataSize, grbit, null); + return CreateReturnValue(data, DataSize, wrn, actualDataSize); + } + } + + /// + /// Retrieves a boolean column value from the current record. The record is that + /// record associated with the index entry at the current position of the cursor. + /// + /// The session to use. + /// The cursor to retrieve the column from. + /// The columnid to retrieve. + /// The data retrieved from the column as a boolean. Null if the column is null. + public static bool? RetrieveColumnAsBoolean(JET_SESID sesid, JET_TABLEID tableid, JET_COLUMNID columnid) + { + return RetrieveColumnAsBoolean(sesid, tableid, columnid, RetrieveColumnGrbit.None); + } + + /// + /// Retrieves a boolean column value from the current record. The record is that + /// record associated with the index entry at the current position of the cursor. + /// + /// The session to use. + /// The cursor to retrieve the column from. + /// The columnid to retrieve. + /// Retrieval options. + /// The data retrieved from the column as a boolean. Null if the column is null. + public static bool? RetrieveColumnAsBoolean( + JET_SESID sesid, JET_TABLEID tableid, JET_COLUMNID columnid, RetrieveColumnGrbit grbit) + { + byte? b = RetrieveColumnAsByte(sesid, tableid, columnid, grbit); + if (b.HasValue) + { + return 0 != b.Value; + } + + return new bool?(); + } + + /// + /// Retrieves a byte column value from the current record. The record is that + /// record associated with the index entry at the current position of the cursor. + /// + /// The session to use. + /// The cursor to retrieve the column from. + /// The columnid to retrieve. + /// The data retrieved from the column as a byte. Null if the column is null. + public static byte? RetrieveColumnAsByte(JET_SESID sesid, JET_TABLEID tableid, JET_COLUMNID columnid) + { + return RetrieveColumnAsByte(sesid, tableid, columnid, RetrieveColumnGrbit.None); + } + + /// + /// Retrieves a byte column value from the current record. The record is that + /// record associated with the index entry at the current position of the cursor. + /// + /// The session to use. + /// The cursor to retrieve the column from. + /// The columnid to retrieve. + /// Retrieval options. + /// The data retrieved from the column as a byte. Null if the column is null. + public static byte? RetrieveColumnAsByte( + JET_SESID sesid, JET_TABLEID tableid, JET_COLUMNID columnid, RetrieveColumnGrbit grbit) + { + // We cannot support this request when there is no way to indicate that a column reference is returned. + if ((grbit & (RetrieveColumnGrbit)0x00020000) != 0) // UnpublishedGrbits.RetrieveAsRefIfNotInRecord + { + throw new EsentInvalidGrbitException(); + } + + unsafe + { + const int DataSize = sizeof(byte); + byte data; + var pointer = new IntPtr(&data); + int actualDataSize; + JET_wrn wrn = JetRetrieveColumn( + sesid, tableid, columnid, pointer, DataSize, out actualDataSize, grbit, null); + return CreateReturnValue(data, DataSize, wrn, actualDataSize); + } + } + + /// + /// Retrieves a guid column value from the current record. The record is that + /// record associated with the index entry at the current position of the cursor. + /// + /// The session to use. + /// The cursor to retrieve the column from. + /// The columnid to retrieve. + /// The data retrieved from the column as a guid. Null if the column is null. + public static Guid? RetrieveColumnAsGuid(JET_SESID sesid, JET_TABLEID tableid, JET_COLUMNID columnid) + { + return RetrieveColumnAsGuid(sesid, tableid, columnid, RetrieveColumnGrbit.None); + } + + /// + /// Retrieves a guid column value from the current record. The record is that + /// record associated with the index entry at the current position of the cursor. + /// + /// The session to use. + /// The cursor to retrieve the column from. + /// The columnid to retrieve. + /// Retrieval options. + /// The data retrieved from the column as a guid. Null if the column is null. + public static Guid? RetrieveColumnAsGuid( + JET_SESID sesid, JET_TABLEID tableid, JET_COLUMNID columnid, RetrieveColumnGrbit grbit) + { + // We cannot support this request when there is no way to indicate that a column reference is returned. + if ((grbit & (RetrieveColumnGrbit)0x00020000) != 0) // UnpublishedGrbits.RetrieveAsRefIfNotInRecord + { + throw new EsentInvalidGrbitException(); + } + + unsafe + { + const int DataSize = 16; + Guid data; + var pointer = new IntPtr(&data); + int actualDataSize; + JET_wrn wrn = JetRetrieveColumn( + sesid, tableid, columnid, pointer, DataSize, out actualDataSize, grbit, null); + return CreateReturnValue(data, DataSize, wrn, actualDataSize); + } + } + + /// + /// Retrieves a datetime column value from the current record. The record is that + /// record associated with the index entry at the current position of the cursor. + /// + /// The session to use. + /// The cursor to retrieve the column from. + /// The columnid to retrieve. + /// The data retrieved from the column as a . Null if the column is null. + public static DateTime? RetrieveColumnAsDateTime(JET_SESID sesid, JET_TABLEID tableid, JET_COLUMNID columnid) + { + return RetrieveColumnAsDateTime(sesid, tableid, columnid, RetrieveColumnGrbit.None); + } + + /// + /// Retrieves a datetime column value from the current record. The record is that + /// record associated with the index entry at the current position of the cursor. + /// + /// The session to use. + /// The cursor to retrieve the column from. + /// The columnid to retrieve. + /// Retrieval options. + /// The data retrieved from the column as a . Null if the column is null. + public static DateTime? RetrieveColumnAsDateTime( + JET_SESID sesid, JET_TABLEID tableid, JET_COLUMNID columnid, RetrieveColumnGrbit grbit) + { + // Internally DateTime is stored in OLE Automation format + double? oadate = RetrieveColumnAsDouble(sesid, tableid, columnid, grbit); + if (oadate.HasValue) + { + return Conversions.ConvertDoubleToDateTime(oadate.Value); + } + + return new DateTime?(); + } + + /// + /// Retrieves a uint16 column value from the current record. The record is that + /// record associated with the index entry at the current position of the cursor. + /// + /// The session to use. + /// The cursor to retrieve the column from. + /// The columnid to retrieve. + /// The data retrieved from the column as an UInt16. Null if the column is null. + [CLSCompliant(false)] + public static ushort? RetrieveColumnAsUInt16(JET_SESID sesid, JET_TABLEID tableid, JET_COLUMNID columnid) + { + return RetrieveColumnAsUInt16(sesid, tableid, columnid, RetrieveColumnGrbit.None); + } + + /// + /// Retrieves a uint16 column value from the current record. The record is that + /// record associated with the index entry at the current position of the cursor. + /// + /// The session to use. + /// The cursor to retrieve the column from. + /// The columnid to retrieve. + /// Retrieval options. + /// The data retrieved from the column as an UInt16. Null if the column is null. + [CLSCompliant(false)] + public static ushort? RetrieveColumnAsUInt16( + JET_SESID sesid, JET_TABLEID tableid, JET_COLUMNID columnid, RetrieveColumnGrbit grbit) + { + // We cannot support this request when there is no way to indicate that a column reference is returned. + if ((grbit & (RetrieveColumnGrbit)0x00020000) != 0) // UnpublishedGrbits.RetrieveAsRefIfNotInRecord + { + throw new EsentInvalidGrbitException(); + } + + unsafe + { + const int DataSize = sizeof(ushort); + ushort data; + var pointer = new IntPtr(&data); + int actualDataSize; + JET_wrn wrn = JetRetrieveColumn( + sesid, tableid, columnid, pointer, DataSize, out actualDataSize, grbit, null); + return CreateReturnValue(data, DataSize, wrn, actualDataSize); + } + } + + /// + /// Retrieves a uint32 column value from the current record. The record is that + /// record associated with the index entry at the current position of the cursor. + /// + /// The session to use. + /// The cursor to retrieve the column from. + /// The columnid to retrieve. + /// The data retrieved from the column as an UInt32. Null if the column is null. + [CLSCompliant(false)] + public static uint? RetrieveColumnAsUInt32(JET_SESID sesid, JET_TABLEID tableid, JET_COLUMNID columnid) + { + return RetrieveColumnAsUInt32(sesid, tableid, columnid, RetrieveColumnGrbit.None); + } + + /// + /// Retrieves a uint32 column value from the current record. The record is that + /// record associated with the index entry at the current position of the cursor. + /// + /// The session to use. + /// The cursor to retrieve the column from. + /// The columnid to retrieve. + /// Retrieval options. + /// The data retrieved from the column as an UInt32. Null if the column is null. + [CLSCompliant(false)] + public static uint? RetrieveColumnAsUInt32( + JET_SESID sesid, JET_TABLEID tableid, JET_COLUMNID columnid, RetrieveColumnGrbit grbit) + { + // We cannot support this request when there is no way to indicate that a column reference is returned. + if ((grbit & (RetrieveColumnGrbit)0x00020000) != 0) // UnpublishedGrbits.RetrieveAsRefIfNotInRecord + { + throw new EsentInvalidGrbitException(); + } + + unsafe + { + const int DataSize = sizeof(uint); + uint data; + var pointer = new IntPtr(&data); + int actualDataSize; + JET_wrn wrn = JetRetrieveColumn( + sesid, tableid, columnid, pointer, DataSize, out actualDataSize, grbit, null); + return CreateReturnValue(data, DataSize, wrn, actualDataSize); + } + } + + /// + /// Retrieves a uint64 column value from the current record. The record is that + /// record associated with the index entry at the current position of the cursor. + /// + /// The session to use. + /// The cursor to retrieve the column from. + /// The columnid to retrieve. + /// The data retrieved from the column as an UInt64. Null if the column is null. + [CLSCompliant(false)] + public static ulong? RetrieveColumnAsUInt64(JET_SESID sesid, JET_TABLEID tableid, JET_COLUMNID columnid) + { + return RetrieveColumnAsUInt64(sesid, tableid, columnid, RetrieveColumnGrbit.None); + } + + /// + /// Retrieves a uint64 column value from the current record. The record is that + /// record associated with the index entry at the current position of the cursor. + /// + /// The session to use. + /// The cursor to retrieve the column from. + /// The columnid to retrieve. + /// Retrieval options. + /// The data retrieved from the column as an UInt64. Null if the column is null. + [CLSCompliant(false)] + public static ulong? RetrieveColumnAsUInt64( + JET_SESID sesid, JET_TABLEID tableid, JET_COLUMNID columnid, RetrieveColumnGrbit grbit) + { + // We cannot support this request when there is no way to indicate that a column reference is returned. + if ((grbit & (RetrieveColumnGrbit)0x00020000) != 0) // UnpublishedGrbits.RetrieveAsRefIfNotInRecord + { + throw new EsentInvalidGrbitException(); + } + + unsafe + { + const int DataSize = sizeof(ulong); + ulong data; + var pointer = new IntPtr(&data); + int actualDataSize; + JET_wrn wrn = JetRetrieveColumn( + sesid, tableid, columnid, pointer, DataSize, out actualDataSize, grbit, null); + return CreateReturnValue(data, DataSize, wrn, actualDataSize); + } + } + +#if MANAGEDESENT_SUPPORTS_SERIALIZATION + /// + /// Deserialize an object from a column. + /// + /// The session to use. + /// The table to read from. + /// The column to read from. + /// The deserialized object. Null if the column was null. + public static object DeserializeObjectFromColumn(JET_SESID sesid, JET_TABLEID tableid, JET_COLUMNID columnid) + { + return DeserializeObjectFromColumn(sesid, tableid, columnid, RetrieveColumnGrbit.None); + } + + /// + /// Deserialize an object from a column. + /// + /// The session to use. + /// The table to read from. + /// The column to read from. + /// The retrieval options to use. + /// The deserialized object. Null if the column was null. + [SuppressMessage("Exchange.Security", "EX0043:DoNotUseBinarySoapFormatter", Justification = "Suppress warning in current code base.The usage has already been verified.")] + public static object DeserializeObjectFromColumn(JET_SESID sesid, JET_TABLEID tableid, JET_COLUMNID columnid, RetrieveColumnGrbit grbit) + { + // We cannot support this request when there is no way to indicate that a column reference is returned. + if ((grbit & (RetrieveColumnGrbit)0x00020000) != 0) // UnpublishedGrbits.RetrieveAsRefIfNotInRecord + { + throw new EsentInvalidGrbitException(); + } + + int actualSize; + if (JET_wrn.ColumnNull == Api.JetRetrieveColumn(sesid, tableid, columnid, null, 0, out actualSize, grbit, null)) + { + return null; + } + + using (var stream = new ColumnStream(sesid, tableid, columnid)) + { + var deseriaizer = new BinaryFormatter(); + return deseriaizer.Deserialize(stream); + } + } +#endif + + /// + /// Retrieves columns into ColumnValue objects. + /// + /// The session to use. + /// The cursor retrieve the data from. The cursor should be positioned on a record. + /// The values to retrieve. + public static void RetrieveColumns(JET_SESID sesid, JET_TABLEID tableid, params ColumnValue[] values) + { + if (null == values) + { + throw new ArgumentNullException("values"); + } + + if (0 == values.Length) + { + throw new ArgumentOutOfRangeException("values", values.Length, "must have at least one value"); + } + + ColumnValue.RetrieveColumns(sesid, tableid, values); + } + + /// + /// Efficiently retrieves a set of columns and their values from the + /// current record of a cursor or the copy buffer of that cursor. + /// + /// The session to use. + /// The cursor to retrieve data from. + /// Enumerate options. + /// The discovered columns and their values. + public static IEnumerable EnumerateColumns( + JET_SESID sesid, + JET_TABLEID tableid, + EnumerateColumnsGrbit grbit) + { + IEnumerable enumeratedColumns; + Api.JetEnumerateColumns(sesid, tableid, grbit, out enumeratedColumns); + return enumeratedColumns; + } + + /// + /// Create the nullable return value. + /// + /// The (struct) type to return. + /// The data retrieved from the column. + /// The size of the data. + /// The warning code from esent. + /// The actual size of the data retireved fomr esent. + /// A nullable struct of type T. + private static T? CreateReturnValue(T data, int dataSize, JET_wrn wrn, int actualDataSize) where T : struct + { + if (JET_wrn.ColumnNull == wrn) + { + return new T?(); + } + + CheckDataSize(dataSize, actualDataSize); + return data; + } + + /// + /// Make sure the retrieved data size is at least as long as the expected size. + /// An exception is thrown if the data isn't long enough. + /// + /// The expected data size. + /// The size of the retrieved data. + private static void CheckDataSize(int expectedDataSize, int actualDataSize) + { + if (actualDataSize != expectedDataSize) + { + throw new EsentInvalidColumnException(); + } + } + + /// + /// Recursively pin the retrieve buffers in the JET_RETRIEVECOLUMN + /// structures and then retrieve the columns. This is done to avoid + /// creating GCHandles, which are expensive. This function pins + /// the current retrievecolumn structure (indicated by i) and then + /// recursively calls itself until all structures are pinned. This + /// is done because it isn't possible to create an arbitrary number + /// of pinned variables in a method. + /// + /// + /// The session to use. + /// + /// + /// The table to retrieve from. + /// + /// + /// The nativeretrievecolumns structure. + /// + /// The managed retrieve columns structure. + /// + /// The number of columns. + /// The column currently being processed. + /// An error code from JetRetrieveColumns. + private static unsafe int PinColumnsAndRetrieve( + JET_SESID sesid, + JET_TABLEID tableid, + NATIVE_RETRIEVECOLUMN* nativeretrievecolumns, + IList retrievecolumns, + int numColumns, + int i) + { + // If consecutive JET_RETRIEVECOLUMN structures are using the same buffer then only pin it once. + fixed (byte* pinnedBuffer = retrievecolumns[i].pvData) + { + do + { + retrievecolumns[i].CheckDataSize(); + retrievecolumns[i].GetNativeRetrievecolumn(ref nativeretrievecolumns[i]); + nativeretrievecolumns[i].pvData = new IntPtr(pinnedBuffer + retrievecolumns[i].ibData); + i++; + } + while (i < numColumns && retrievecolumns[i].pvData == retrievecolumns[i - 1].pvData); + + return i == numColumns ? + Impl.JetRetrieveColumns(sesid, tableid, nativeretrievecolumns, numColumns) + : PinColumnsAndRetrieve(sesid, tableid, nativeretrievecolumns, retrievecolumns, numColumns, i); + } + } + + /// + /// Retrieve a Unicode (UTF16) string. This is optimized to take advantage of the fact + /// that no conversion is needed. + /// + /// The session to use. + /// The table to retrieve from. + /// The column to retrieve. + /// Retrieve options. + /// The string retrieved from the column. + private static unsafe string RetrieveUnicodeString(JET_SESID sesid, JET_TABLEID tableid, JET_COLUMNID columnid, RetrieveColumnGrbit grbit) + { + Debug.Assert((grbit & (RetrieveColumnGrbit)0x00020000) == 0, "UnpublishedGrbits.RetrieveAsRefIfNotInRecord is not supported."); + + // 512 Unicode characters (1kb on stack) + const int BufferSize = 512; + char* buffer = stackalloc char[BufferSize]; + int actualDataSize; + JET_wrn wrn = JetRetrieveColumn(sesid, tableid, columnid, new IntPtr(buffer), BufferSize * sizeof(char), out actualDataSize, grbit, null); + if (JET_wrn.ColumnNull == wrn) + { + return null; + } + + if (JET_wrn.Success == wrn) + { + ////return StringCache.GetString(buffer, 0, actualDataSize); + return new string(buffer, 0, actualDataSize / sizeof(char)); + } + + Debug.Assert(JET_wrn.BufferTruncated == wrn, "Unexpected warning code"); + + // Create a fake string of the appropriate size and then fill it in. + var s = new string('\0', actualDataSize / sizeof(char)); + fixed (char* p = s) + { + int newDataSize; + wrn = JetRetrieveColumn(sesid, tableid, columnid, new IntPtr(p), actualDataSize, out newDataSize, grbit, null); + if (JET_wrn.BufferTruncated == wrn) + { + string error = string.Format( + CultureInfo.CurrentCulture, + "Column size changed from {0} to {1}. The record was probably updated by another thread.", + actualDataSize, + newDataSize); + Trace.TraceError(error); + throw new InvalidOperationException(error); + } + } + + return s; + } + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/Server2003Api.cs b/WelsonJS.Toolkit/EsentInterop/Server2003Api.cs new file mode 100644 index 0000000..0061ff3 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/Server2003Api.cs @@ -0,0 +1,50 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop.Server2003 +{ + /// + /// APIs that have been added to the Windows Server 2003 version of ESENT. + /// + public static class Server2003Api + { +#if !MANAGEDESENT_ON_WSA + /// + /// Notifies the engine that it can resume normal IO operations after a + /// freeze period ended with a failed snapshot. + /// + /// Identifier of the snapshot session. + /// Options for this call. + public static void JetOSSnapshotAbort(JET_OSSNAPID snapid, SnapshotAbortGrbit grbit) + { + Api.Check(Api.Impl.JetOSSnapshotAbort(snapid, grbit)); + } +#endif // !MANAGEDESENT_ON_WSA + + /// + /// The JetUpdate function performs an update operation including inserting a new row into + /// a table or updating an existing row. Deleting a table row is performed by calling + /// . + /// + /// The session which started the update. + /// The cursor to update. An update should be prepared. + /// Returns the bookmark of the updated record. This can be null. + /// The size of the bookmark buffer. + /// Returns the actual size of the bookmark. + /// Update options. + /// + /// JetUpdate is the final step in performing an insert or an update. The update is begun by + /// calling and then by calling + /// + /// one or more times to set the record state. Finally, + /// is called to complete the update operation. Indexes are updated only by JetUpdate or and not during JetSetColumn. + /// + public static void JetUpdate2(JET_SESID sesid, JET_TABLEID tableid, byte[] bookmark, int bookmarkSize, out int actualBookmarkSize, UpdateGrbit grbit) + { + Api.Check(Api.Impl.JetUpdate2(sesid, tableid, bookmark, bookmarkSize, out actualBookmarkSize, grbit)); + } + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/Server2003Grbits.cs b/WelsonJS.Toolkit/EsentInterop/Server2003Grbits.cs new file mode 100644 index 0000000..2f974de --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/Server2003Grbits.cs @@ -0,0 +1,108 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop.Server2003 +{ + using System; + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + /// + /// Options for . + /// + [Flags] + public enum SnapshotAbortGrbit + { + /// + /// Default options. + /// + None = 0, + } +#endif // !MANAGEDESENT_ON_WSA + + /// + /// Options for . + /// + [Flags] + public enum UpdateGrbit + { + /// + /// Default options. + /// + None = 0, + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + /// + /// This flag causes the update to return an error if the update would + /// not have been possible in the Windows 2000 version of ESE, which + /// enforced a smaller maximum number of multi-valued column instances + /// in each record than later versions of ESE. This is important only + /// for applications that wish to replicate data between applications + /// hosted on Windows 2000 and applications hosted on Windows + /// 2003, or later versions of ESE. It should not be necessary for most + /// applications. + /// + [Obsolete("Only needed for legacy replication applications.")] + CheckESE97Compatibility = 0x1, +#endif // !MANAGEDESENT_ON_WSA + } + + /// + /// Grbits that have been added to the Windows Server 2003 version of ESENT. + /// + public static class Server2003Grbits + { + /// + /// Delete all indexes with unicode columns. + /// + public const AttachDatabaseGrbit DeleteUnicodeIndexes = (AttachDatabaseGrbit)0x400; + + /// + /// When the escrow-update column reaches a value of zero (after all + /// versions are resolve), the record will be deleted. A common use for + /// a column that can be finalized is to use it as a reference count + /// field, and when the field reaches zero the record gets deleted. A + /// Delete-on-zero column must be an escrow update / + /// column. ColumnDeleteOnZero cannot be used with ColumnFinalize. + /// ColumnDeleteOnZero cannot be used with user defined default columns. + /// + public const ColumndefGrbit ColumnDeleteOnZero = (ColumndefGrbit)0x20000; + + /// + /// This option requests that the temporary table only be created if the + /// temporary table manager can use the implementation optimized for + /// intermediate query results. If any characteristic of the temporary + /// table would prevent the use of this optimization then the operation + /// will fail with JET_errCannotMaterializeForwardOnlySort. A side effect + /// of this option is to allow the temporary table to contain records + /// with duplicate index keys. See + /// for more information. + /// + public const TempTableGrbit ForwardOnly = (TempTableGrbit)0x40; + + /// + /// If a given column is not present in the record and it has a user + /// defined default value then no column value will be returned. + /// This option will prevent the callback that computes the user defined + /// default value for the column from being called when enumerating + /// the values for that column. + /// + /// + /// This option is only available for Windows Server 2003 SP1 and later + /// operating systems. + /// + public const EnumerateColumnsGrbit EnumerateIgnoreUserDefinedDefault = (EnumerateColumnsGrbit)0x00100000; + + /// + /// All transactions previously committed by any session that have not + /// yet been flushed to the transaction log file will be flushed immediately. + /// This API will wait until the transactions have been flushed before + /// returning to the caller. This option may be used even if the session + /// is not currently in a transaction. This option cannot be used in + /// combination with any other option. + /// + public const CommitTransactionGrbit WaitAllLevel0Commit = (CommitTransactionGrbit)0x8; + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/Server2003Param.cs b/WelsonJS.Toolkit/EsentInterop/Server2003Param.cs new file mode 100644 index 0000000..89b87a8 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/Server2003Param.cs @@ -0,0 +1,24 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop.Server2003 +{ + /// + /// System parameters that have been added to the Windows Server 2003 version of ESENT. + /// + public static class Server2003Param + { + /// + /// The full path to each database is persisted in the transaction logs + /// at run time. Ordinarily, these databases must remain at the original + /// location for transaction replay to function correctly. This + /// parameter can be used to force crash recovery or a restore operation + /// to look for the databases referenced in the transaction log in the + /// specified folder. + /// + public const JET_param AlternateDatabaseRecoveryPath = (JET_param)113; + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/Session.cs b/WelsonJS.Toolkit/EsentInterop/Session.cs new file mode 100644 index 0000000..b726092 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/Session.cs @@ -0,0 +1,89 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System.Globalization; + + /// + /// A class that encapsulates a JET_SESID in a disposable object. + /// + public class Session : EsentResource + { + /// + /// The underlying JET_SESID. + /// + private JET_SESID sesid; + + /// + /// Initializes a new instance of the Session class. A new + /// JET_SESSION is allocated from the given instance. + /// + /// The instance to start the session in. + public Session(JET_INSTANCE instance) + { + Api.JetBeginSession(instance, out this.sesid, null, null); + this.ResourceWasAllocated(); + } + + /// + /// Gets the JET_SESID that this session contains. + /// + public JET_SESID JetSesid + { + get + { + this.CheckObjectIsNotDisposed(); + return this.sesid; + } + } + + /// + /// Implicit conversion operator from a Session to a JET_SESID. This + /// allows a Session to be used with APIs which expect a JET_SESID. + /// + /// The session to convert. + /// The JET_SESID of the session. + public static implicit operator JET_SESID(Session session) + { + return session.JetSesid; + } + + /// + /// Returns a that represents the current . + /// + /// + /// A that represents the current . + /// + public override string ToString() + { + return string.Format(CultureInfo.InvariantCulture, "Session (0x{0:x})", this.sesid.Value); + } + + /// + /// Terminate the session. + /// + public void End() + { + this.CheckObjectIsNotDisposed(); + this.ReleaseResource(); + } + + /// + /// Free the underlying JET_SESID. + /// + protected override void ReleaseResource() + { + if (!this.sesid.IsInvalid) + { + Api.JetEndSession(this.JetSesid, EndSessionGrbit.None); + } + + this.sesid = JET_SESID.Nil; + this.ResourceWasReleased(); + } + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/SetColumnHelpers.cs b/WelsonJS.Toolkit/EsentInterop/SetColumnHelpers.cs new file mode 100644 index 0000000..518616e --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/SetColumnHelpers.cs @@ -0,0 +1,544 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Diagnostics; + using System.Diagnostics.CodeAnalysis; + using System.Runtime.Serialization; +#if MANAGEDESENT_SUPPORTS_SERIALIZATION + using System.Runtime.Serialization.Formatters.Binary; +#endif + using System.Text; + using Microsoft.Isam.Esent.Interop.Vista; + using Microsoft.Isam.Esent.Interop.Windows10; + + /// + /// Helper methods for the ESENT API. These do data conversion for + /// setting columns. + /// + public static partial class Api + { + /// + /// Modifies a single column value in a modified record to be inserted or to + /// update the current record. + /// + /// The session to use. + /// The cursor to update. An update should be prepared. + /// The columnid to set. + /// The data to set. + /// The encoding used to convert the string. + public static void SetColumn( + JET_SESID sesid, JET_TABLEID tableid, JET_COLUMNID columnid, string data, Encoding encoding) + { + SetColumn(sesid, tableid, columnid, data, encoding, SetColumnGrbit.None); + } + + /// + /// Modifies a single column value in a modified record to be inserted or to + /// update the current record. + /// + /// The session to use. + /// The cursor to update. An update should be prepared. + /// The columnid to set. + /// The data to set. + /// The encoding used to convert the string. + /// SetColumn options. + public static void SetColumn( + JET_SESID sesid, JET_TABLEID tableid, JET_COLUMNID columnid, string data, Encoding encoding, SetColumnGrbit grbit) + { + CheckEncodingIsValid(encoding); + + if (null == data) + { + JetSetColumn(sesid, tableid, columnid, null, 0, grbit, null); + } + else if (0 == data.Length) + { + JetSetColumn(sesid, tableid, columnid, null, 0, grbit | SetColumnGrbit.ZeroLength, null); + } + else if (Encoding.Unicode == encoding) + { + // Optimization for setting Unicode strings. + unsafe + { + fixed (char* buffer = data) + { + JetSetColumn( + sesid, + tableid, + columnid, + new IntPtr(buffer), + checked(data.Length * sizeof(char)), + grbit, + null); + } + } + } + else if (encoding.GetMaxByteCount(data.Length) <= Caches.ColumnCache.BufferSize) + { +#if MANAGEDESENT_ON_WSA + // Encoding.GetBytes(char*, int, byte*, int) overload is missing in new Windows UI. + // So we can't use the ColumnCache. We'll just use a different GetBytes() overload. + byte[] buffer = encoding.GetBytes(data); + unsafe + { + fixed (byte* bytes = buffer) + { + JetSetColumn(sesid, tableid, columnid, new IntPtr(bytes), buffer.Length, grbit, null); + } + } +#else + // The encoding output will fix in a cached buffer. Get one to avoid + // more memory allocations. + byte[] buffer = null; + + try + { + buffer = Caches.ColumnCache.Allocate(); + unsafe + { + fixed (char* chars = data) + fixed (byte* bytes = buffer) + { + int dataSize = encoding.GetBytes(chars, data.Length, bytes, buffer.Length); + JetSetColumn(sesid, tableid, columnid, new IntPtr(bytes), dataSize, grbit, null); + } + } + } + finally + { + if (buffer != null) + { + Caches.ColumnCache.Free(ref buffer); + } + } +#endif + } + else + { + byte[] bytes = encoding.GetBytes(data); + JetSetColumn(sesid, tableid, columnid, bytes, bytes.Length, grbit, null); + } + } + + /// + /// Modifies a single column value in a modified record to be inserted or to + /// update the current record. + /// + /// The session to use. + /// The cursor to update. An update should be prepared. + /// The columnid to set. + /// The data to set. + public static void SetColumn(JET_SESID sesid, JET_TABLEID tableid, JET_COLUMNID columnid, byte[] data) + { + SetColumn(sesid, tableid, columnid, data, SetColumnGrbit.None); + } + + /// + /// Modifies a single column value in a modified record to be inserted or to + /// update the current record. + /// + /// The session to use. + /// The cursor to update. An update should be prepared. + /// The columnid to set. + /// The data to set. + /// SetColumn options. + public static void SetColumn(JET_SESID sesid, JET_TABLEID tableid, JET_COLUMNID columnid, byte[] data, SetColumnGrbit grbit) + { + int dataLength = (null == data) ? 0 : data.Length; + SetColumn(sesid, tableid, columnid, data, dataLength, grbit); + } + + /// + /// Modifies a single column value in a modified record to be inserted or to + /// update the current record. + /// + /// The session to use. + /// The cursor to update. An update should be prepared. + /// The columnid to set. + /// The data to set. + /// The size of data to set. + /// SetColumn options. + public static void SetColumn(JET_SESID sesid, JET_TABLEID tableid, JET_COLUMNID columnid, byte[] data, int dataSize, SetColumnGrbit grbit) + { + if ((null != data) && (0 == data.Length)) + { + grbit |= SetColumnGrbit.ZeroLength; + } + + if (data == null && dataSize > 0) + { + throw new ArgumentException(string.Format("data is null, but dataSize is: {0}", dataSize)); + } + + if (data != null && data.Length < dataSize) + { + throw new ArgumentException(string.Format("data.Length is less, than dataSize: data.Length={0}, dataSize={1}", data.Length, dataSize)); + } + + JetSetColumn(sesid, tableid, columnid, data, dataSize, grbit, null); + } + + /// + /// Modifies a single column value in a modified record to be inserted or to + /// update the current record. + /// + /// The session to use. + /// The cursor to update. An update should be prepared. + /// The columnid to set. + /// The data to set. + public static void SetColumn(JET_SESID sesid, JET_TABLEID tableid, JET_COLUMNID columnid, bool data) + { + byte b = data ? (byte)0xff : (byte)0x0; + SetColumn(sesid, tableid, columnid, b); + } + + /// + /// Modifies a single column value in a modified record to be inserted or to + /// update the current record. + /// + /// The session to use. + /// The cursor to update. An update should be prepared. + /// The columnid to set. + /// The data to set. + public static void SetColumn(JET_SESID sesid, JET_TABLEID tableid, JET_COLUMNID columnid, byte data) + { + unsafe + { + const int DataSize = sizeof(byte); + var pointer = new IntPtr(&data); + JetSetColumn(sesid, tableid, columnid, pointer, DataSize, SetColumnGrbit.None, null); + } + } + + /// + /// Modifies a single column value in a modified record to be inserted or to + /// update the current record. + /// + /// The session to use. + /// The cursor to update. An update should be prepared. + /// The columnid to set. + /// The data to set. + public static void SetColumn(JET_SESID sesid, JET_TABLEID tableid, JET_COLUMNID columnid, short data) + { + unsafe + { + const int DataSize = sizeof(short); + var pointer = new IntPtr(&data); + JetSetColumn(sesid, tableid, columnid, pointer, DataSize, SetColumnGrbit.None, null); + } + } + + /// + /// Modifies a single column value in a modified record to be inserted or to + /// update the current record. + /// + /// The session to use. + /// The cursor to update. An update should be prepared. + /// The columnid to set. + /// The data to set. + public static void SetColumn(JET_SESID sesid, JET_TABLEID tableid, JET_COLUMNID columnid, int data) + { + unsafe + { + const int DataSize = sizeof(int); + var pointer = new IntPtr(&data); + JetSetColumn(sesid, tableid, columnid, pointer, DataSize, SetColumnGrbit.None, null); + } + } + + /// + /// Modifies a single column value in a modified record to be inserted or to + /// update the current record. + /// + /// The session to use. + /// The cursor to update. An update should be prepared. + /// The columnid to set. + /// The data to set. + public static void SetColumn(JET_SESID sesid, JET_TABLEID tableid, JET_COLUMNID columnid, long data) + { + unsafe + { + const int DataSize = sizeof(long); + var pointer = new IntPtr(&data); + JetSetColumn(sesid, tableid, columnid, pointer, DataSize, SetColumnGrbit.None, null); + } + } + + /// + /// Modifies a single column value in a modified record to be inserted or to + /// update the current record. + /// + /// The session to use. + /// The cursor to update. An update should be prepared. + /// The columnid to set. + /// The data to set. + public static void SetColumn(JET_SESID sesid, JET_TABLEID tableid, JET_COLUMNID columnid, Guid data) + { + unsafe + { + const int DataSize = 16; // sizeof(Guid) isn't a compile-time constant + var pointer = new IntPtr(&data); + JetSetColumn(sesid, tableid, columnid, pointer, DataSize, SetColumnGrbit.None, null); + } + } + + /// + /// Modifies a single column value in a modified record to be inserted or to + /// update the current record. + /// + /// The session to use. + /// The cursor to update. An update should be prepared. + /// The columnid to set. + /// The data to set. + public static void SetColumn(JET_SESID sesid, JET_TABLEID tableid, JET_COLUMNID columnid, DateTime data) + { + SetColumn(sesid, tableid, columnid, data.ToOADate()); + } + + /// + /// Modifies a single column value in a modified record to be inserted or to + /// update the current record. + /// + /// The session to use. + /// The cursor to update. An update should be prepared. + /// The columnid to set. + /// The data to set. + public static void SetColumn(JET_SESID sesid, JET_TABLEID tableid, JET_COLUMNID columnid, float data) + { + unsafe + { + const int DataSize = sizeof(float); + var pointer = new IntPtr(&data); + JetSetColumn(sesid, tableid, columnid, pointer, DataSize, SetColumnGrbit.None, null); + } + } + + /// + /// Modifies a single column value in a modified record to be inserted or to + /// update the current record. + /// + /// The session to use. + /// The cursor to update. An update should be prepared. + /// The columnid to set. + /// The data to set. + public static void SetColumn(JET_SESID sesid, JET_TABLEID tableid, JET_COLUMNID columnid, double data) + { + unsafe + { + const int DataSize = sizeof(double); + var pointer = new IntPtr(&data); + JetSetColumn(sesid, tableid, columnid, pointer, DataSize, SetColumnGrbit.None, null); + } + } + + /// + /// Perform atomic addition on an Int32 column. The column must be of type + /// . This function allows multiple sessions to update the + /// same record concurrently without conflicts. + /// + /// + /// This method wraps . + /// + /// The session to use. + /// The cursor to update. + /// The column to update. This must be an escrow-updatable column. + /// The delta to apply to the column. + /// The current value of the column as stored in the database (versioning is ignored). + public static int EscrowUpdate(JET_SESID sesid, JET_TABLEID tableid, JET_COLUMNID columnid, int delta) + { + var previousValue = new byte[sizeof(int)]; + int actualPreviousValueLength; + JetEscrowUpdate( + sesid, + tableid, + columnid, + BitConverter.GetBytes(delta), + sizeof(int), + previousValue, + previousValue.Length, + out actualPreviousValueLength, + EscrowUpdateGrbit.None); + Debug.Assert( + previousValue.Length == actualPreviousValueLength, + "Unexpected previous value length. Expected an Int32"); + return BitConverter.ToInt32(previousValue, 0); + } + + /// + /// Perform atomic addition on an Int64 column. The column must be of type + /// . This function allows multiple sessions to update the + /// same record concurrently without conflicts. + /// + /// + /// This method wraps . + /// + /// The session to use. + /// The cursor to update. + /// The column to update. This must be an escrow-updatable column. + /// The delta to apply to the column. + /// The current value of the column as stored in the database (versioning is ignored). + public static long EscrowUpdate(JET_SESID sesid, JET_TABLEID tableid, JET_COLUMNID columnid, long delta) + { + var previousValue = new byte[sizeof(long)]; + int actualPreviousValueLength; + JetEscrowUpdate( + sesid, + tableid, + columnid, + BitConverter.GetBytes(delta), + sizeof(long), + previousValue, + previousValue.Length, + out actualPreviousValueLength, + EscrowUpdateGrbit.None); + Debug.Assert( + previousValue.Length == actualPreviousValueLength, + "Unexpected previous value length. Expected an Int64"); + return BitConverter.ToInt64(previousValue, 0); + } + + /// + /// Modifies a single column value in a modified record to be inserted or to + /// update the current record. + /// + /// The session to use. + /// The cursor to update. An update should be prepared. + /// The columnid to set. + /// The data to set. + [CLSCompliant(false)] + public static void SetColumn(JET_SESID sesid, JET_TABLEID tableid, JET_COLUMNID columnid, ushort data) + { + unsafe + { + const int DataSize = sizeof(ushort); + var pointer = new IntPtr(&data); + JetSetColumn(sesid, tableid, columnid, pointer, DataSize, SetColumnGrbit.None, null); + } + } + + /// + /// Modifies a single column value in a modified record to be inserted or to + /// update the current record. + /// + /// The session to use. + /// The cursor to update. An update should be prepared. + /// The columnid to set. + /// The data to set. + [CLSCompliant(false)] + public static void SetColumn(JET_SESID sesid, JET_TABLEID tableid, JET_COLUMNID columnid, uint data) + { + unsafe + { + const int DataSize = sizeof(uint); + var pointer = new IntPtr(&data); + JetSetColumn(sesid, tableid, columnid, pointer, DataSize, SetColumnGrbit.None, null); + } + } + + /// + /// Modifies a single column value in a modified record to be inserted or to + /// update the current record. + /// + /// The session to use. + /// The cursor to update. An update should be prepared. + /// The columnid to set. + /// The data to set. + [CLSCompliant(false)] + public static void SetColumn(JET_SESID sesid, JET_TABLEID tableid, JET_COLUMNID columnid, ulong data) + { + unsafe + { + const int DataSize = sizeof(ulong); + var pointer = new IntPtr(&data); + JetSetColumn(sesid, tableid, columnid, pointer, DataSize, SetColumnGrbit.None, null); + } + } + +#if MANAGEDESENT_SUPPORTS_SERIALIZATION + /// + /// Write a serialized form of an object to a column. + /// + /// The session to use. + /// The table to write to. An update should be prepared. + /// The column to write to. + /// The object to write. The object must be serializable. + [SuppressMessage("Exchange.Security", "EX0043:DoNotUseBinarySoapFormatter", Justification = "Suppress warning in current code base.The usage has already been verified.")] + public static void SerializeObjectToColumn(JET_SESID sesid, JET_TABLEID tableid, JET_COLUMNID columnid, object value) + { + if (null == value) + { + Api.SetColumn(sesid, tableid, columnid, null); + } + else + { + using (var stream = new ColumnStream(sesid, tableid, columnid)) + { + var serializer = new BinaryFormatter + { + Context = new StreamingContext(StreamingContextStates.Persistence) + }; + serializer.Serialize(stream, value); + } + } + } +#endif + + /// + /// Sets columns from ColumnValue objects. + /// + /// The session to use. + /// The cursor to update. An update should be prepared. + /// The values to set. + public static void SetColumns(JET_SESID sesid, JET_TABLEID tableid, params ColumnValue[] values) + { + if (null == values) + { + throw new ArgumentNullException("values"); + } + + if (0 == values.Length) + { + throw new ArgumentOutOfRangeException("values", values.Length, "must have at least one value"); + } + + unsafe + { + NATIVE_SETCOLUMN* nativeSetcolumns = stackalloc NATIVE_SETCOLUMN[values.Length]; + Api.Check(values[0].SetColumns(sesid, tableid, values, nativeSetcolumns, 0)); + } + } + + /// + /// Verifies that the given encoding is valid for setting/retrieving data. Only + /// the ASCII and Unicode encodings are allowed. An + /// is thrown if the encoding isn't valid. + /// + /// The encoding to check. + private static void CheckEncodingIsValid(Encoding encoding) + { +#if MANAGEDESENT_ON_CORECLR + string webName = encoding.WebName; + if (webName != "utf-8" && webName != "utf-16") + { + throw new ArgumentOutOfRangeException( + "encoding", webName, "Invalid Encoding type. Only Unicode (utf-8 and utf-16) encodings are allowed."); + } +#else + const int AsciiCodePage = 20127; // from MSDN + const int UnicodeCodePage = 1200; // from MSDN + int codePage = encoding.CodePage; + if ((AsciiCodePage != codePage) && (UnicodeCodePage != codePage)) + { + throw new ArgumentOutOfRangeException( + "encoding", codePage, "Invalid Encoding type. Only ASCII and Unicode encodings are allowed"); + } +#endif + } + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/Settings.StyleCop b/WelsonJS.Toolkit/EsentInterop/Settings.StyleCop new file mode 100644 index 0000000..42a2c8c --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/Settings.StyleCop @@ -0,0 +1,78 @@ + + + False + + api + coltyp + columndef + columnid + dbid + dll + ese + esent + grbit + grbits + interop + itag + lgpos + param + preread + sesid + tableid + + + + + + + c + cb + dw + f + h + ib + l + p + pv + rg + sz + ul + w + + + + + + + + True + + + + + True + + + + + False + + + + + Microsoft Corporation + Copyright (c) Microsoft Corporation. + + + + + + + False + + + + + + + \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/StringCache.cs b/WelsonJS.Toolkit/EsentInterop/StringCache.cs new file mode 100644 index 0000000..54b9ed5 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/StringCache.cs @@ -0,0 +1,166 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + + /// + /// Class that helps cache strings. + /// + internal static class StringCache + { + /// + /// Don't cache strings whose length is longer than this. + /// + private const int MaxLengthToCache = 128; + + /// + /// Number of converted strings to hash. + /// + private const int NumCachedBoxedValues = 1031; + + /// + /// Cached string values. + /// + private static readonly string[] CachedStrings = new string[NumCachedBoxedValues]; + + /// + /// Return the interned version of a string, or the original + /// string if it isn't interned. + /// + /// The string to try to intern. + /// An interned copy of the string or the original string. + public static string TryToIntern(string s) + { +#if MANAGEDESENT_ON_WSA + // new Windows UI Core CLR does not support string interning. + return s; +#else + return string.IsInterned(s) ?? s; +#endif + } + + /// + /// Convert a byte array to a string. + /// + /// The bytes to convert. + /// The starting index of the data to convert. + /// The number of bytes to convert. + /// A string converted from the data. + public static string GetString(byte[] value, int startIndex, int count) + { + unsafe + { + fixed (byte* data = value) + { + char* chars = (char*)(data + startIndex); + return GetString(chars, 0, count / sizeof(char)); + } + } + } + + /// + /// Convert a char array to a string, using a cached value if possible. + /// + /// The characters to convert. + /// The starting index of the data to convert. + /// The number of characters to convert. + /// A string converted from the data. + private static unsafe string GetString(char* value, int startIndex, int count) + { + string s; + + if (0 == count) + { + s = string.Empty; + } + else if (count < MaxLengthToCache) + { + uint hash = CalculateHash(value, startIndex, count); + int index = unchecked((int)(hash % NumCachedBoxedValues)); + s = CachedStrings[index]; + if (null == s || !AreEqual(s, value, startIndex, count)) + { + s = CreateNewString(value, startIndex, count); + CachedStrings[index] = s; + } + } + else + { + s = CreateNewString(value, startIndex, count); + } + + return s; + } + + /// + /// Calculate the hash of a string. + /// + /// The characters to hash. + /// The starting index of the data to hash. + /// The number of characters to hash. + /// The hash value of the data. + private static unsafe uint CalculateHash(char* value, int startIndex, int count) + { + uint hash = 0; + unchecked + { + for (int i = 0; i < count; ++i) + { + hash ^= value[startIndex + i]; + hash *= 33; + } + } + + return hash; + } + + /// + /// Determine if a string matches a char array.. + /// + /// The string to compare against. + /// The characters. + /// The starting index of the data. + /// The number of characters. + /// True if the string matches the char array. + private static unsafe bool AreEqual(string s, char* value, int startIndex, int count) + { + if (s.Length != count) + { + return false; + } + + unchecked + { + for (int i = 0; i < s.Length; ++i) + { + if (s[i] != value[startIndex + i]) + { + return false; + } + } + } + + return true; + } + + /// + /// Convert a char array to a string. + /// + /// The characters to convert. + /// The starting index of the data to convert. + /// The number of characters to convert. + /// A string converted from the data. + private static unsafe string CreateNewString(char* value, int startIndex, int count) + { + // Encoding.Unicode.GetString copies the data to an array of chars and then + // makes a string from it, copying the data twice. Use the more efficient + // char* constructor. + return new string(value, startIndex, count); + } + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/StringColumnValue.cs b/WelsonJS.Toolkit/EsentInterop/StringColumnValue.cs new file mode 100644 index 0000000..abc3110 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/StringColumnValue.cs @@ -0,0 +1,128 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Diagnostics; + + /// + /// A Unicode string column value. + /// + public class StringColumnValue : ColumnValue + { + /// + /// Internal value. + /// + private string internalValue; + + /// + /// Gets the last set or retrieved value of the column. The + /// value is returned as a generic object. + /// + public override object ValueAsObject + { + [DebuggerStepThrough] + get { return this.Value; } + } + + /// + /// Gets or sets the value of the column. Use to update a + /// record with the column value. + /// + public string Value + { + get + { + return this.internalValue; + } + + set + { + this.internalValue = value; + this.Error = value == null ? JET_wrn.ColumnNull : JET_wrn.Success; + } + } + + /// + /// Gets the byte length of a column value, which is zero if column is null, otherwise + /// it matches the byte length of the string value. The byte length is determined in + /// assumption of two bytes per character. + /// + public override int Length + { + get { return this.Value != null ? this.Value.Length * sizeof(char) : 0; } + } + + /// + /// Gets the size of the value in the column. This returns 0 for + /// variable sized columns (i.e. binary and string). + /// + protected override int Size + { + [DebuggerStepThrough] + get { return 0; } + } + + /// + /// Gets a string representation of this object. + /// + /// A string representation of this object. + public override string ToString() + { + return this.Value; + } + + /// + /// Recursive SetColumns method for data pinning. This populates the buffer and + /// calls the inherited SetColumns method. + /// + /// The session to use. + /// + /// The table to set the columns in. An update should be prepared. + /// + /// + /// Column values to set. + /// + /// + /// Structures to put the pinned data in. + /// + /// Offset of this object in the array. + /// An error code. + internal override unsafe int SetColumns(JET_SESID sesid, JET_TABLEID tableid, ColumnValue[] columnValues, NATIVE_SETCOLUMN* nativeColumns, int i) + { + if (null != this.Value) + { + fixed (void* buffer = this.Value) + { + return this.SetColumns( + sesid, tableid, columnValues, nativeColumns, i, buffer, checked(this.Value.Length * sizeof(char)), true); + } + } + + return this.SetColumns(sesid, tableid, columnValues, nativeColumns, i, null, 0, false); + } + + /// + /// Given data retrieved from ESENT, decode the data and set the value in the ColumnValue object. + /// + /// An array of bytes. + /// The starting position within the bytes. + /// The number of bytes to decode. + /// The error returned from ESENT. + protected override void GetValueFromBytes(byte[] value, int startIndex, int count, int err) + { + if (JET_wrn.ColumnNull == (JET_wrn)err) + { + this.Value = null; + } + else + { + this.Value = StringCache.GetString(value, startIndex, count); + } + } + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/SystemParameters.cs b/WelsonJS.Toolkit/EsentInterop/SystemParameters.cs new file mode 100644 index 0000000..8a5f626 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/SystemParameters.cs @@ -0,0 +1,487 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using Microsoft.Isam.Esent.Interop.Vista; + using Microsoft.Isam.Esent.Interop.Windows7; + + /// + /// This class provides static properties to set and get + /// global ESENT system parameters. + /// + public static partial class SystemParameters + { + /// + /// Gets or sets the maximum size of the database page cache. The size + /// is in database pages. If this parameter is left to its default value, then the + /// maximum size of the cache will be set to the size of physical memory when JetInit + /// is called. + /// + public static int CacheSizeMax + { + get + { + return GetIntegerParameter(JET_param.CacheSizeMax); + } + + set + { + SetIntegerParameter(JET_param.CacheSizeMax, value); + } + } + + /// + /// Gets or sets the size of the database cache in pages. By default the + /// database cache will automatically tune its size, setting this property + /// to a non-zero value will cause the cache to adjust itself to the target + /// size. + /// + public static int CacheSize + { + get + { + return GetIntegerParameter(JET_param.CacheSize); + } + + set + { + SetIntegerParameter(JET_param.CacheSize, value); + } + } + + /// + /// Gets or sets the size of the database pages, in bytes. + /// + public static int DatabasePageSize + { + get + { + return GetIntegerParameter(JET_param.DatabasePageSize); + } + + set + { + SetIntegerParameter(JET_param.DatabasePageSize, value); + } + } + + /// + /// Gets or sets the minimum size of the database page cache, in database pages. + /// + public static int CacheSizeMin + { + get + { + return GetIntegerParameter(JET_param.CacheSizeMin); + } + + set + { + SetIntegerParameter(JET_param.CacheSizeMin, value); + } + } + + /// + /// Gets or sets how many database file I/Os can be queued + /// per-disk in the host operating system at one time. A larger value + /// for this parameter can significantly help the performance of a large + /// database application. + /// + public static int OutstandingIOMax + { + get + { + return GetIntegerParameter(JET_param.OutstandingIOMax); + } + + set + { + SetIntegerParameter(JET_param.OutstandingIOMax, value); + } + } + + /// + /// Gets or sets the threshold at which the database page cache begins evicting pages from the + /// cache to make room for pages that are not cached. When the number of page buffers in the cache + /// drops below this threshold then a background process will be started to replenish that pool + /// of available buffers. This threshold is always relative to the maximum cache size as set by + /// JET_paramCacheSizeMax. This threshold must also always be less than the stop threshold as + /// set by JET_paramStopFlushThreshold. + /// + /// The distance height of the start threshold will determine the response time that the database + /// page cache must have to produce available buffers before the application needs them. A high + /// start threshold will give the background process more time to react. However, a high start + /// threshold implies a higher stop threshold and that will reduce the effective size of the + /// database page cache. + /// + /// + public static int StartFlushThreshold + { + get + { + return GetIntegerParameter(JET_param.StartFlushThreshold); + } + + set + { + SetIntegerParameter(JET_param.StartFlushThreshold, value); + } + } + + /// + /// Gets or sets the threshold at which the database page cache ends evicting pages from the cache to make + /// room for pages that are not cached. When the number of page buffers in the cache rises above + /// this threshold then the background process that was started to replenish that pool of available + /// buffers is stopped. This threshold is always relative to the maximum cache size as set by + /// JET_paramCacheSizeMax. This threshold must also always be greater than the start threshold + /// as set by JET_paramStartFlushThreshold. + /// + /// The distance between the start threshold and the stop threshold affects the efficiency with + /// which database pages are flushed by the background process. A larger gap will make it + /// more likely that writes to neighboring pages may be combined. However, a high stop + /// threshold will reduce the effective size of the database page cache. + /// + /// + public static int StopFlushThreshold + { + get + { + return GetIntegerParameter(JET_param.StopFlushThreshold); + } + + set + { + SetIntegerParameter(JET_param.StopFlushThreshold, value); + } + } + + /// + /// Gets or sets the maximum number of instances that can be created. + /// + public static int MaxInstances + { + get + { + return GetIntegerParameter(JET_param.MaxInstances); + } + + set + { + SetIntegerParameter(JET_param.MaxInstances, value); + } + } + + /// + /// Gets or sets the detail level of eventlog messages that are emitted + /// to the eventlog by the database engine. Higher numbers will result + /// in more detailed eventlog messages. + /// + public static int EventLoggingLevel + { + get + { + return GetIntegerParameter(JET_param.EventLoggingLevel); + } + + set + { + SetIntegerParameter(JET_param.EventLoggingLevel, value); + } + } + + /// + /// Gets the maximum key size. This depends on the Esent version and database + /// page size. + /// + public static int KeyMost + { + get + { + if (EsentVersion.SupportsVistaFeatures) + { + return GetIntegerParameter(VistaParam.KeyMost); + } + + // All pre-Vista versions of Esent have 255 byte keys + return 255; + } + } + + /// + /// Gets the maximum number of components in a sort or index key. + /// + public static int ColumnsKeyMost + { + get + { + return Api.Impl.Capabilities.ColumnsKeyMost; + } + } + + /// + /// Gets the maximum size of a bookmark. . + /// + public static int BookmarkMost + { + get + { + // This correctly returns 256 on pre-Vista systems + return KeyMost + 1; + } + } + + /// + /// Gets the lv chunks size. This depends on the database page size. + /// + public static int LVChunkSizeMost + { + get + { + if (EsentVersion.SupportsWindows7Features) + { + return GetIntegerParameter(Windows7Param.LVChunkSizeMost); + } + + // Can't retrieve the size directly, determine it from the database page size + const int ColumnLvPageOverhead = 82; + return GetIntegerParameter(JET_param.DatabasePageSize) - ColumnLvPageOverhead; + } + } + + /// + /// Gets or sets a value specifying the default values for the + /// entire set of system parameters. When this parameter is set to + /// a specific configuration, all system parameter values are reset + /// to their default values for that configuration. If the + /// configuration is set for a specific instance then global system + /// parameters will not be reset to their default values. + /// Small Configuration (0): The database engine is optimized for memory use. + /// Legacy Configuration (1): The database engine has its traditional defaults. + /// + /// Supported on Windows Vista and up. Ignored on Windows XP and + /// Windows Server 2003. + /// + /// + public static int Configuration + { + get + { + if (EsentVersion.SupportsVistaFeatures) + { + return GetIntegerParameter(VistaParam.Configuration); + } + + // return the legacy configuration value + return 1; + } + + set + { + if (EsentVersion.SupportsVistaFeatures) + { + SetIntegerParameter(VistaParam.Configuration, value); + } + } + } + + /// + /// Gets or sets a value indicating whether the database engine accepts + /// or rejects changes to a subset of the system parameters. This + /// parameter is used in conjunction with to + /// prevent some system parameters from being set away from the selected + /// configuration's defaults. + /// + /// Supported on Windows Vista and up. Ignored on Windows XP and + /// Windows Server 2003. + /// + /// + public static bool EnableAdvanced + { + get + { + if (EsentVersion.SupportsVistaFeatures) + { + return GetBoolParameter(VistaParam.EnableAdvanced); + } + + // older versions always allow advanced settings + return true; + } + + set + { + if (EsentVersion.SupportsVistaFeatures) + { + SetBoolParameter(VistaParam.EnableAdvanced, value); + } + } + } + + /// + /// Gets or sets backwards compatibility with the file naming conventions of earlier releases of the database engine. + /// + public static int LegacyFileNames + { + get + { + if (EsentVersion.SupportsVistaFeatures) + { + return GetIntegerParameter(VistaParam.LegacyFileNames); + } + + // return the legacy LegacyFileNames value + return 1; + } + + set + { + if (EsentVersion.SupportsVistaFeatures) + { + SetIntegerParameter(VistaParam.LegacyFileNames, value); + } + } + } + + /// + /// Gets or sets the value encoding what to do with exceptions generated within JET. + /// + public static JET_ExceptionAction ExceptionAction + { + get + { + return (JET_ExceptionAction)GetIntegerParameter(JET_param.ExceptionAction); + } + + set + { + SetIntegerParameter(JET_param.ExceptionAction, (int)value); + } + } + + /// + /// Gets or sets a value indicating whether the database engine should + /// use the OS file cache for all managed files. + /// + public static bool EnableFileCache + { + get + { + if (EsentVersion.SupportsVistaFeatures) + { + return GetBoolParameter(VistaParam.EnableFileCache); + } + + // Pre-Vista versions of do not implement this. + return false; + } + + set + { + if (EsentVersion.SupportsVistaFeatures) + { + SetBoolParameter(VistaParam.EnableFileCache, value); + } + } + } + + /// + /// Gets or sets a value indicating whether the database engine should + /// use memory mapped file I/O for database files. + /// + public static bool EnableViewCache + { + get + { + if (EsentVersion.SupportsVistaFeatures) + { + return GetBoolParameter(VistaParam.EnableViewCache); + } + + // Pre-Vista versions of do not implement this. + return false; + } + + set + { + if (EsentVersion.SupportsVistaFeatures) + { + SetBoolParameter(VistaParam.EnableViewCache, value); + } + } + } + + /// + /// Set a system parameter which is a string. + /// + /// The parameter to set. + /// The value to set. + private static void SetStringParameter(JET_param param, string value) + { + Api.JetSetSystemParameter(JET_INSTANCE.Nil, JET_SESID.Nil, param, 0, value); + } + + /// + /// Get a system parameter which is a string. + /// + /// The parameter to get. + /// The value of the parameter. + private static string GetStringParameter(JET_param param) + { + int ignored = 0; + string value; + Api.JetGetSystemParameter(JET_INSTANCE.Nil, JET_SESID.Nil, param, ref ignored, out value, 1024); + return value; + } + + /// + /// Set a system parameter which is an integer. + /// + /// The parameter to set. + /// The value to set. + private static void SetIntegerParameter(JET_param param, int value) + { + Api.JetSetSystemParameter(JET_INSTANCE.Nil, JET_SESID.Nil, param, value, null); + } + + /// + /// Get a system parameter which is an integer. + /// + /// The parameter to get. + /// The value of the parameter. + private static int GetIntegerParameter(JET_param param) + { + int value = 0; + string ignored; + Api.JetGetSystemParameter(JET_INSTANCE.Nil, JET_SESID.Nil, param, ref value, out ignored, 0); + return value; + } + + /// + /// Set a system parameter which is a boolean. + /// + /// The parameter to set. + /// The value to set. + private static void SetBoolParameter(JET_param param, bool value) + { + int setting = value ? 1 : 0; + Api.JetSetSystemParameter(JET_INSTANCE.Nil, JET_SESID.Nil, param, setting, null); + } + + /// + /// Get a system parameter which is a boolean. + /// + /// The parameter to get. + /// The value of the parameter. + private static bool GetBoolParameter(JET_param param) + { + int value = 0; + string ignored; + Api.JetGetSystemParameter(JET_INSTANCE.Nil, JET_SESID.Nil, param, ref value, out ignored, 0); + return value != 0; + } + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/Table.cs b/WelsonJS.Toolkit/EsentInterop/Table.cs new file mode 100644 index 0000000..2e7048e --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/Table.cs @@ -0,0 +1,114 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + /// + /// A class that encapsulates a JET_TABLEID in a disposable object. + /// This opens an existing table. To create a table use the + /// JetCreateTable method. + /// + public class Table : EsentResource + { + /// + /// The session used to open the table. + /// + private JET_SESID sesid; + + /// + /// The underlying JET_TABLEID. + /// + private JET_TABLEID tableid; + + /// + /// The name of the table. + /// + private string name; + + /// + /// Initializes a new instance of the Table class. The table is + /// opened from the given database. + /// + /// The session to use. + /// The database to open the table in. + /// The name of the table. + /// JetOpenTable options. + public Table(JET_SESID sesid, JET_DBID dbid, string name, OpenTableGrbit grbit) + { + this.sesid = sesid; + this.name = name; + Api.JetOpenTable(this.sesid, dbid, this.name, null, 0, grbit, out this.tableid); + this.ResourceWasAllocated(); + } + + /// + /// Gets the name of this table. + /// + public string Name + { + get + { + this.CheckObjectIsNotDisposed(); + return this.name; + } + } + + /// + /// Gets the JET_TABLEID that this table contains. + /// + public JET_TABLEID JetTableid + { + get + { + this.CheckObjectIsNotDisposed(); + return this.tableid; + } + } + + /// + /// Implicit conversion operator from a Table to a JET_TABLEID. This + /// allows a Table to be used with APIs which expect a JET_TABLEID. + /// + /// The table to convert. + /// The JET_TABLEID of the table. + public static implicit operator JET_TABLEID(Table table) + { + return table.JetTableid; + } + + /// + /// Returns a that represents the current . + /// + /// + /// A that represents the current . + /// + public override string ToString() + { + return this.name; + } + + /// + /// Close the table. + /// + public void Close() + { + this.CheckObjectIsNotDisposed(); + this.ReleaseResource(); + } + + /// + /// Free the underlying JET_TABLEID. + /// + protected override void ReleaseResource() + { + Api.JetCloseTable(this.sesid, this.tableid); + this.sesid = JET_SESID.Nil; + this.tableid = JET_TABLEID.Nil; + this.name = null; + this.ResourceWasReleased(); + } + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/TableColumnInfoEnumerator.cs b/WelsonJS.Toolkit/EsentInterop/TableColumnInfoEnumerator.cs new file mode 100644 index 0000000..d2fdd23 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/TableColumnInfoEnumerator.cs @@ -0,0 +1,53 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + /// + /// Enumerate columns in a table specified by dbid and name. + /// + internal sealed class TableColumnInfoEnumerator : ColumnInfoEnumerator + { + /// + /// The database containing the table. + /// + private readonly JET_DBID dbid; + + /// + /// The name of the table. + /// + private readonly string tablename; + + /// + /// Initializes a new instance of the class. + /// + /// + /// The session to use. + /// + /// + /// The database containing the table. + /// + /// + /// The name of the table. + /// + public TableColumnInfoEnumerator(JET_SESID sesid, JET_DBID dbid, string tablename) : base(sesid) + { + this.dbid = dbid; + this.tablename = tablename; + } + + /// + /// Open the table to be enumerated. This should set . + /// + protected override void OpenTable() + { + JET_COLUMNLIST columnlist; + Api.JetGetColumnInfo(this.Sesid, this.dbid, this.tablename, string.Empty, out columnlist); + this.Columnlist = columnlist; + this.TableidToEnumerate = this.Columnlist.tableid; + } + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/TableEnumerator.cs b/WelsonJS.Toolkit/EsentInterop/TableEnumerator.cs new file mode 100644 index 0000000..fdd590a --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/TableEnumerator.cs @@ -0,0 +1,167 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Collections; + using System.Collections.Generic; + using System.Diagnostics; + + /// + /// Base class for enumerators that walk a table. + /// + /// The type returned by the enumerator. + internal abstract class TableEnumerator : IEnumerator + { + /// + /// True if we are at the end of the table. + /// + private bool isAtEnd; + + /// + /// True if we need to move to the first record in the table. + /// + private bool moveToFirst = true; + + /// + /// Initializes a new instance of the class. + /// + /// + /// The session to use. + /// + protected TableEnumerator(JET_SESID sesid) + { + this.Sesid = sesid; + this.TableidToEnumerate = JET_TABLEID.Nil; + } + + /// + /// Gets the current entry. + /// + public T Current { get; private set; } + + /// + /// Gets the current entry. + /// + object IEnumerator.Current + { + [DebuggerStepThrough] + get { return this.Current; } + } + + /// + /// Gets the session used for the enumeration. + /// + protected JET_SESID Sesid { get; private set; } + + /// + /// Gets or sets the table being enumerated. + /// + protected JET_TABLEID TableidToEnumerate { get; set; } + + /// + /// Resets the enumerator. The next call to MoveNext will move + /// to the first entry. + /// + public void Reset() + { + this.isAtEnd = false; + this.moveToFirst = true; + } + + /// + /// Disposes of any resources the enumerator is using. + /// + public void Dispose() + { + this.CloseTable(); + GC.SuppressFinalize(this); + } + + /// + /// Move to the next entry. + /// + /// + /// True if an entry was found, false otherwise. + /// + public bool MoveNext() + { + // Moving to the end is sticky (until Reset is called) + if (this.isAtEnd) + { + return false; + } + + if (this.TableidToEnumerate.IsInvalid) + { + Debug.Assert(this.moveToFirst, "Table has not been opened so moveToFirst should be true"); + this.OpenTable(); + } + + bool needMoveNext = true; + if (this.moveToFirst) + { + if (!Api.TryMoveFirst(this.Sesid, this.TableidToEnumerate)) + { + this.isAtEnd = true; + return false; + } + + this.moveToFirst = false; + needMoveNext = false; + } + + while (needMoveNext || this.SkipCurrent()) + { + if (!Api.TryMoveNext(this.Sesid, this.TableidToEnumerate)) + { + this.isAtEnd = true; + return false; + } + + needMoveNext = false; + } + + this.Current = this.GetCurrent(); + return true; + } + + /// + /// Open the table to be enumerated. This should set . + /// + protected abstract void OpenTable(); + + /// + /// Gets the entry the cursor is currently positioned on. + /// + /// The entry the cursor is currently positioned on. + protected abstract T GetCurrent(); + + /// + /// Determine if the current entry in the table being enumerated should + /// be skipped (not returned). By default this is false. + /// + /// True if the current entry should be skipped. + protected virtual bool SkipCurrent() + { + return false; + } + + /// + /// Closes the table being enumerated. + /// + protected virtual void CloseTable() + { + if (!this.TableidToEnumerate.IsInvalid) + { + Api.JetCloseTable(this.Sesid, this.TableidToEnumerate); + } + + this.TableidToEnumerate = JET_TABLEID.Nil; + } + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/TableIndexInfoEnumerator.cs b/WelsonJS.Toolkit/EsentInterop/TableIndexInfoEnumerator.cs new file mode 100644 index 0000000..2b4f192 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/TableIndexInfoEnumerator.cs @@ -0,0 +1,70 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + /// + /// Enumerate columns in a table specified by dbid and name. + /// + internal sealed class TableIndexInfoEnumerator : IndexInfoEnumerator + { + /// + /// The database containing the table. + /// + private readonly JET_DBID dbid; + + /// + /// The name of the table. + /// + private readonly string tablename; + + /// + /// Initializes a new instance of the class. + /// + /// + /// The session to use. + /// + /// + /// The database containing the table. + /// + /// + /// The name of the table. + /// + public TableIndexInfoEnumerator(JET_SESID sesid, JET_DBID dbid, string tablename) + : base(sesid) + { + this.dbid = dbid; + this.tablename = tablename; + } + + /// + /// Open the table to be enumerated. This should set . + /// + protected override void OpenTable() + { + JET_INDEXLIST indexlist; + Api.JetGetIndexInfo(this.Sesid, this.dbid, this.tablename, string.Empty, out indexlist, JET_IdxInfo.List); + this.Indexlist = indexlist; + this.TableidToEnumerate = this.Indexlist.tableid; + } + + /// + /// Retrieves information about indexes on a table. + /// + /// The session to use. + /// The name of the index. + /// Filled in with information about indexes on the table. + /// The type of information to retrieve. + protected override void GetIndexInfo( + JET_SESID sesid, + string indexname, + out string result, + JET_IdxInfo infoLevel) + { + Api.JetGetIndexInfo(sesid, this.dbid, this.tablename, indexname, out result, infoLevel); + } + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/TableNameEnumerator.cs b/WelsonJS.Toolkit/EsentInterop/TableNameEnumerator.cs new file mode 100644 index 0000000..c6259be --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/TableNameEnumerator.cs @@ -0,0 +1,79 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System.Text; + using Microsoft.Isam.Esent.Interop.Implementation; + + /// + /// Enumerate the names of tables in a database. + /// + internal sealed class TableNameEnumerator : TableEnumerator + { + /// + /// The database containing the tables. + /// + private readonly JET_DBID dbid; + + /// + /// Object list containing information about tables. + /// + private JET_OBJECTLIST objectlist; + + /// + /// Initializes a new instance of the class. + /// + /// + /// The session to use. + /// + /// + /// The database to get the table names from. + /// + public TableNameEnumerator(JET_SESID sesid, JET_DBID dbid) : base(sesid) + { + this.dbid = dbid; + } + + /// + /// Open the table to be enumerated. This should set . + /// + protected override void OpenTable() + { + Api.JetGetObjectInfo(this.Sesid, this.dbid, out this.objectlist); + this.TableidToEnumerate = this.objectlist.tableid; + } + + /// + /// Determine if the current entry in the table being enumerated should + /// be skipped (not returned). Here we are skipping system tables. + /// + /// True if the current entry should be skipped. + protected override bool SkipCurrent() + { + int flags = (int)Api.RetrieveColumnAsInt32(this.Sesid, this.TableidToEnumerate, this.objectlist.columnidflags); + return ObjectInfoFlags.System == ((ObjectInfoFlags)flags & ObjectInfoFlags.System); + } + + /// + /// Gets the entry the cursor is currently positioned on. + /// + /// The entry the cursor is currently positioned on. + protected override string GetCurrent() + { + // If we use the wide API (Vista+), then the temp table will be in UTF-16. + Encoding encodingOfTextColumns = EsentVersion.SupportsVistaFeatures ? Encoding.Unicode : LibraryHelpers.EncodingASCII; + + string name = Api.RetrieveColumnAsString( + this.Sesid, + this.TableidToEnumerate, + this.objectlist.columnidobjectname, + encodingOfTextColumns, + RetrieveColumnGrbit.None); + return StringCache.TryToIntern(name); + } + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/TableidColumnInfoEnumerator.cs b/WelsonJS.Toolkit/EsentInterop/TableidColumnInfoEnumerator.cs new file mode 100644 index 0000000..d05edf9 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/TableidColumnInfoEnumerator.cs @@ -0,0 +1,44 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + /// + /// Enumerate columns in a table specified by a tableid. + /// + internal sealed class TableidColumnInfoEnumerator : ColumnInfoEnumerator + { + /// + /// The table to get the column information from. + /// + private readonly JET_TABLEID tableid; + + /// + /// Initializes a new instance of the class. + /// + /// + /// The session to use. + /// + /// + /// The table to get column information from. + /// + public TableidColumnInfoEnumerator(JET_SESID sesid, JET_TABLEID tableid) : base(sesid) + { + this.tableid = tableid; + } + + /// + /// Open the table to be enumerated. This should set . + /// + protected override void OpenTable() + { + JET_COLUMNLIST columnlist; + Api.JetGetTableColumnInfo(this.Sesid, this.tableid, string.Empty, out columnlist); + this.Columnlist = columnlist; + this.TableidToEnumerate = this.Columnlist.tableid; + } + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/TableidIndexInfoEnumerator.cs b/WelsonJS.Toolkit/EsentInterop/TableidIndexInfoEnumerator.cs new file mode 100644 index 0000000..b497b48 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/TableidIndexInfoEnumerator.cs @@ -0,0 +1,61 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + /// + /// Enumerate columns in a table specified by a tableid. + /// + internal sealed class TableidIndexInfoEnumerator : IndexInfoEnumerator + { + /// + /// The table to get the column information from. + /// + private readonly JET_TABLEID tableid; + + /// + /// Initializes a new instance of the class. + /// + /// + /// The session to use. + /// + /// + /// The table to get column information from. + /// + public TableidIndexInfoEnumerator(JET_SESID sesid, JET_TABLEID tableid) + : base(sesid) + { + this.tableid = tableid; + } + + /// + /// Open the table to be enumerated. This should set . + /// + protected override void OpenTable() + { + JET_INDEXLIST indexlist; + Api.JetGetTableIndexInfo(this.Sesid, this.tableid, string.Empty, out indexlist, JET_IdxInfo.List); + this.Indexlist = indexlist; + this.TableidToEnumerate = this.Indexlist.tableid; + } + + /// + /// Retrieves information about indexes on a table. + /// + /// The session to use. + /// The name of the index. + /// Filled in with information about indexes on the table. + /// The type of information to retrieve. + protected override void GetIndexInfo( + JET_SESID sesid, + string indexname, + out string result, + JET_IdxInfo infoLevel) + { + Api.JetGetTableIndexInfo(sesid, this.tableid, indexname, out result, infoLevel); + } + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/Transaction.cs b/WelsonJS.Toolkit/EsentInterop/Transaction.cs new file mode 100644 index 0000000..014e497 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/Transaction.cs @@ -0,0 +1,160 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Diagnostics; + using System.Globalization; + using Microsoft.Isam.Esent.Interop.Windows8; + + /// + /// A class that encapsulates a transaction on a JET_SESID. + /// + public class Transaction : EsentResource + { + /// + /// The underlying JET_SESID. + /// + private readonly JET_SESID sesid; + + /// + /// Initializes a new instance of the Transaction class. This automatically + /// begins a transaction. The transaction will be rolled back if + /// not explicitly committed. + /// + /// The session to start the transaction for. + public Transaction(JET_SESID sesid) + { + this.sesid = sesid; + this.Begin(); + } + + /// + /// Gets the current transaction level of the + /// . + /// Requires Win10. + /// + public int TransactionLevel + { + get + { + int transactionLevel = -1; + if (EsentVersion.SupportsWindows10Features) + { + Windows8Api.JetGetSessionParameter( + this.sesid, + Windows10.Windows10Sesparam.TransactionLevel, + out transactionLevel); + } + + return transactionLevel; + } + } + + /// + /// Gets a value indicating whether this object is currently in a + /// transaction. + /// + public bool IsInTransaction + { + get + { + this.CheckObjectIsNotDisposed(); + return this.HasResource; + } + } + + /// + /// Returns a that represents the current . + /// + /// + /// A that represents the current . + /// + public override string ToString() + { + return string.Format(CultureInfo.InvariantCulture, "Transaction (0x{0:x})", this.sesid.Value); + } + + /// + /// Begin a transaction. This object should not currently be + /// in a transaction. + /// + public void Begin() + { + this.CheckObjectIsNotDisposed(); + if (this.IsInTransaction) + { + throw new InvalidOperationException("Already in a transaction"); + } + + Api.JetBeginTransaction(this.sesid); + this.ResourceWasAllocated(); + Debug.Assert(this.IsInTransaction, "Begin finished, but object isn't in a transaction"); + } + + /// + /// Commit a transaction. This object should be in a transaction. + /// + /// JetCommitTransaction options. + public void Commit(CommitTransactionGrbit grbit) + { + this.CheckObjectIsNotDisposed(); + if (!this.IsInTransaction) + { + throw new InvalidOperationException("Not in a transaction"); + } + + Api.JetCommitTransaction(this.sesid, grbit); + this.ResourceWasReleased(); + Debug.Assert(!this.IsInTransaction, "Commit finished, but object is still in a transaction"); + } + + /// + /// Commit a transaction. This object should be in a transaction. + /// + /// JetCommitTransaction options. + /// Duration for committing lazy transactions. + /// Commit-id for this commit record. + public void Commit(CommitTransactionGrbit grbit, TimeSpan durableCommit, out JET_COMMIT_ID commitId) + { + this.CheckObjectIsNotDisposed(); + if (!this.IsInTransaction) + { + throw new InvalidOperationException("Not in a transaction"); + } + + Windows8.Windows8Api.JetCommitTransaction2(this.sesid, grbit, durableCommit, out commitId); + this.ResourceWasReleased(); + Debug.Assert(!this.IsInTransaction, "Commit finished, but object is still in a transaction"); + } + + /// + /// Rollback a transaction. This object should be in a transaction. + /// + public void Rollback() + { + this.CheckObjectIsNotDisposed(); + if (!this.IsInTransaction) + { + throw new InvalidOperationException("Not in a transaction"); + } + + Api.JetRollback(this.sesid, RollbackTransactionGrbit.None); + this.ResourceWasReleased(); + Debug.Assert(!this.IsInTransaction, "Commit finished, but object is still in a transaction"); + } + + /// + /// Called when the transaction is being disposed while active. + /// This should rollback the transaction. + /// + protected override void ReleaseResource() + { + this.Rollback(); + } + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/Types.cs b/WelsonJS.Toolkit/EsentInterop/Types.cs new file mode 100644 index 0000000..3d7bbd4 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/Types.cs @@ -0,0 +1,1142 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Diagnostics; + using System.Globalization; + using System.Runtime.InteropServices; + + /// + /// A JET_INSTANCE contains a handle to the instance of the database to use for calls to the JET Api. + /// + public struct JET_INSTANCE : IEquatable, IFormattable + { + /// + /// The native value. + /// + internal IntPtr Value; + + /// + /// Gets a null JET_INSTANCE. + /// + public static JET_INSTANCE Nil + { + [DebuggerStepThrough] + get { return new JET_INSTANCE(); } + } + + /// + /// Gets a value indicating whether the is valid (checks against 0 and -1). + /// + public bool IsInvalid + { + get { return this.Value == IntPtr.Zero || this.Value == new IntPtr(~0); } + } + + /// + /// Determines whether two specified instances of JET_INSTANCE + /// are equal. + /// + /// The first instance to compare. + /// The second instance to compare. + /// True if the two instances are equal. + public static bool operator ==(JET_INSTANCE lhs, JET_INSTANCE rhs) + { + return lhs.Value == rhs.Value; + } + + /// + /// Determines whether two specified instances of JET_INSTANCE + /// are not equal. + /// + /// The first instance to compare. + /// The second instance to compare. + /// True if the two instances are not equal. + public static bool operator !=(JET_INSTANCE lhs, JET_INSTANCE rhs) + { + return !(lhs == rhs); + } + + /// + /// Generate a string representation of the structure. + /// + /// The structure as a string. + public override string ToString() + { + return string.Format(CultureInfo.InvariantCulture, "JET_INSTANCE(0x{0:x})", this.Value.ToInt64()); + } + + /// + /// Formats the value of the current instance using the specified format. + /// + /// + /// A containing the value of the current instance in the specified format. + /// + /// The specifying the format to use. + /// -or- + /// null to use the default format defined for the type of the implementation. + /// + /// The to use to format the value. + /// -or- + /// null to obtain the numeric format information from the current locale setting of the operating system. + /// + public string ToString(string format, IFormatProvider formatProvider) + { + return string.IsNullOrEmpty(format) || "G" == format ? this.ToString() : this.Value.ToInt64().ToString(format, formatProvider); + } + + /// + /// Returns a value indicating whether this instance is equal + /// to another instance. + /// + /// An object to compare with this instance. + /// True if the two instances are equal. + public override bool Equals(object obj) + { + if (obj == null || GetType() != obj.GetType()) + { + return false; + } + + return this.Equals((JET_INSTANCE)obj); + } + + /// + /// Returns the hash code for this instance. + /// + /// The hash code for this instance. + public override int GetHashCode() + { + return this.Value.GetHashCode(); + } + + /// + /// Returns a value indicating whether this instance is equal + /// to another instance. + /// + /// An instance to compare with this instance. + /// True if the two instances are equal. + public bool Equals(JET_INSTANCE other) + { + return this.Value.Equals(other.Value); + } + } + + /// + /// A JET_SESID contains a handle to the session to use for calls to the JET Api. + /// + public struct JET_SESID : IEquatable, IFormattable + { + /// + /// The native value. + /// + internal IntPtr Value; + + /// + /// Gets a null JET_SESID. + /// + public static JET_SESID Nil + { + [DebuggerStepThrough] + get { return new JET_SESID(); } + } + + /// + /// Gets a value indicating whether the is valid (checks against 0 and -1). + /// + public bool IsInvalid + { + get { return this.Value == IntPtr.Zero || this.Value == new IntPtr(~0); } + } + + /// + /// Determines whether two specified instances of JET_SESID + /// are equal. + /// + /// The first instance to compare. + /// The second instance to compare. + /// True if the two instances are equal. + public static bool operator ==(JET_SESID lhs, JET_SESID rhs) + { + return lhs.Value == rhs.Value; + } + + /// + /// Determines whether two specified instances of JET_SESID + /// are not equal. + /// + /// The first instance to compare. + /// The second instance to compare. + /// True if the two instances are not equal. + public static bool operator !=(JET_SESID lhs, JET_SESID rhs) + { + return !(lhs == rhs); + } + + /// + /// Generate a string representation of the structure. + /// + /// The structure as a string. + public override string ToString() + { + return string.Format(CultureInfo.InvariantCulture, "JET_SESID(0x{0:x})", this.Value.ToInt64()); + } + + /// + /// Formats the value of the current instance using the specified format. + /// + /// + /// A containing the value of the current instance in the specified format. + /// + /// The specifying the format to use. + /// -or- + /// null to use the default format defined for the type of the implementation. + /// + /// The to use to format the value. + /// -or- + /// null to obtain the numeric format information from the current locale setting of the operating system. + /// + public string ToString(string format, IFormatProvider formatProvider) + { + return string.IsNullOrEmpty(format) || "G" == format ? this.ToString() : this.Value.ToInt64().ToString(format, formatProvider); + } + + /// + /// Returns a value indicating whether this instance is equal + /// to another instance. + /// + /// An object to compare with this instance. + /// True if the two instances are equal. + public override bool Equals(object obj) + { + if (obj == null || GetType() != obj.GetType()) + { + return false; + } + + return this.Equals((JET_SESID)obj); + } + + /// + /// Returns the hash code for this instance. + /// + /// The hash code for this instance. + public override int GetHashCode() + { + return this.Value.GetHashCode(); + } + + /// + /// Returns a value indicating whether this instance is equal + /// to another instance. + /// + /// An instance to compare with this instance. + /// True if the two instances are equal. + public bool Equals(JET_SESID other) + { + return this.Value.Equals(other.Value); + } + } + + /// + /// A JET_TABLEID contains a handle to the database cursor to use for a call to the JET Api. + /// A cursor can only be used with the session that was used to open that cursor. + /// + public struct JET_TABLEID : IEquatable, IFormattable + { + /// + /// The native value. + /// + internal IntPtr Value; + + /// + /// Gets a null JET_TABLEID. + /// + public static JET_TABLEID Nil + { + [DebuggerStepThrough] + get { return new JET_TABLEID(); } + } + + /// + /// Gets a value indicating whether the is valid (checks against 0 and -1). + /// + public bool IsInvalid + { + get { return this.Value == IntPtr.Zero || this.Value == new IntPtr(~0); } + } + + /// + /// Determines whether two specified instances of JET_TABLEID + /// are equal. + /// + /// The first instance to compare. + /// The second instance to compare. + /// True if the two instances are equal. + public static bool operator ==(JET_TABLEID lhs, JET_TABLEID rhs) + { + return lhs.Value == rhs.Value; + } + + /// + /// Determines whether two specified instances of JET_TABLEID + /// are not equal. + /// + /// The first instance to compare. + /// The second instance to compare. + /// True if the two instances are not equal. + public static bool operator !=(JET_TABLEID lhs, JET_TABLEID rhs) + { + return !(lhs == rhs); + } + + /// + /// Generate a string representation of the structure. + /// + /// The structure as a string. + public override string ToString() + { + return string.Format(CultureInfo.InvariantCulture, "JET_TABLEID(0x{0:x})", this.Value.ToInt64()); + } + + /// + /// Formats the value of the current instance using the specified format. + /// + /// + /// A containing the value of the current instance in the specified format. + /// + /// The specifying the format to use. + /// -or- + /// null to use the default format defined for the type of the implementation. + /// + /// The to use to format the value. + /// -or- + /// null to obtain the numeric format information from the current locale setting of the operating system. + /// + public string ToString(string format, IFormatProvider formatProvider) + { + return string.IsNullOrEmpty(format) || "G" == format ? this.ToString() : this.Value.ToInt64().ToString(format, formatProvider); + } + + /// + /// Returns a value indicating whether this instance is equal + /// to another instance. + /// + /// An object to compare with this instance. + /// True if the two instances are equal. + public override bool Equals(object obj) + { + if (obj == null || GetType() != obj.GetType()) + { + return false; + } + + return this.Equals((JET_TABLEID)obj); + } + + /// + /// Returns the hash code for this instance. + /// + /// The hash code for this instance. + public override int GetHashCode() + { + return this.Value.GetHashCode(); + } + + /// + /// Returns a value indicating whether this instance is equal + /// to another instance. + /// + /// An instance to compare with this instance. + /// True if the two instances are equal. + public bool Equals(JET_TABLEID other) + { + return this.Value.Equals(other.Value); + } + } + + /// + /// A JET_DBID contains the handle to the database. A database handle is used to manage the + /// schema of a database. It can also be used to manage the tables inside of that database. + /// + public struct JET_DBID : IEquatable, IFormattable + { + /// + /// The native value. + /// + internal uint Value; + + /// + /// Gets a null JET_DBID. + /// + public static JET_DBID Nil + { + get + { + return new JET_DBID { Value = 0xffffffff }; + } + } + + /// + /// Determines whether two specified instances of JET_DBID + /// are equal. + /// + /// The first instance to compare. + /// The second instance to compare. + /// True if the two instances are equal. + public static bool operator ==(JET_DBID lhs, JET_DBID rhs) + { + return lhs.Value == rhs.Value; + } + + /// + /// Determines whether two specified instances of JET_DBID + /// are not equal. + /// + /// The first instance to compare. + /// The second instance to compare. + /// True if the two instances are not equal. + public static bool operator !=(JET_DBID lhs, JET_DBID rhs) + { + return !(lhs == rhs); + } + + /// + /// Generate a string representation of the structure. + /// + /// The structure as a string. + public override string ToString() + { + return string.Format(CultureInfo.InvariantCulture, "JET_DBID({0})", this.Value); + } + + /// + /// Formats the value of the current instance using the specified format. + /// + /// + /// A containing the value of the current instance in the specified format. + /// + /// The specifying the format to use. + /// -or- + /// null to use the default format defined for the type of the implementation. + /// + /// The to use to format the value. + /// -or- + /// null to obtain the numeric format information from the current locale setting of the operating system. + /// + public string ToString(string format, IFormatProvider formatProvider) + { + return string.IsNullOrEmpty(format) || "G" == format ? this.ToString() : this.Value.ToString(format, formatProvider); + } + + /// + /// Returns a value indicating whether this instance is equal + /// to another instance. + /// + /// An object to compare with this instance. + /// True if the two instances are equal. + public override bool Equals(object obj) + { + if (obj == null || GetType() != obj.GetType()) + { + return false; + } + + return this.Equals((JET_DBID)obj); + } + + /// + /// Returns the hash code for this instance. + /// + /// The hash code for this instance. + public override int GetHashCode() + { + return this.Value.GetHashCode(); + } + + /// + /// Returns a value indicating whether this instance is equal + /// to another instance. + /// + /// An instance to compare with this instance. + /// True if the two instances are equal. + public bool Equals(JET_DBID other) + { + return this.Value.Equals(other.Value); + } + } + + /// + /// A JET_COLUMNID identifies a column within a table. + /// + public struct JET_COLUMNID : IEquatable, IComparable, IFormattable + { + /// + /// The native value. + /// + internal uint Value; + + /// + /// Gets a null JET_COLUMNID. + /// + public static JET_COLUMNID Nil + { + [DebuggerStepThrough] + get { return new JET_COLUMNID(); } + } + + /// + /// Gets a value indicating whether the is valid (checks against 0 and -1). + /// + public bool IsInvalid + { + get { return this.Value == 0 || this.Value == 0xffffffff; } + } + + /// + /// Determines whether two specified instances of JET_COLUMNID + /// are equal. + /// + /// The first instance to compare. + /// The second instance to compare. + /// True if the two instances are equal. + public static bool operator ==(JET_COLUMNID lhs, JET_COLUMNID rhs) + { + return lhs.Value == rhs.Value; + } + + /// + /// Determines whether two specified instances of JET_COLUMNID + /// are not equal. + /// + /// The first instance to compare. + /// The second instance to compare. + /// True if the two instances are not equal. + public static bool operator !=(JET_COLUMNID lhs, JET_COLUMNID rhs) + { + return !(lhs == rhs); + } + + /// + /// Determine whether one columnid is before another columnid. + /// + /// The first columnid to compare. + /// The second columnid to compare. + /// True if lhs comes before rhs. + public static bool operator <(JET_COLUMNID lhs, JET_COLUMNID rhs) + { + return lhs.Value < rhs.Value; + } + + /// + /// Determine whether one columnid is after another columnid. + /// + /// The first columnid to compare. + /// The second columnid to compare. + /// True if lhs comes after rhs. + public static bool operator >(JET_COLUMNID lhs, JET_COLUMNID rhs) + { + return lhs.Value > rhs.Value; + } + + /// + /// Determine whether one columnid is before or equal to + /// another columnid. + /// + /// The first columnid to compare. + /// The second columnid to compare. + /// True if lhs comes before or is equal to rhs. + public static bool operator <=(JET_COLUMNID lhs, JET_COLUMNID rhs) + { + return lhs.Value <= rhs.Value; + } + + /// + /// Determine whether one columnid is after or equal to + /// another columnid. + /// + /// The first columnid to compare. + /// The second columnid to compare. + /// True if lhs comes after or is equal to rhs. + public static bool operator >=(JET_COLUMNID lhs, JET_COLUMNID rhs) + { + return lhs.Value >= rhs.Value; + } + + /// + /// Generate a string representation of the structure. + /// + /// The structure as a string. + public override string ToString() + { + return string.Format(CultureInfo.InvariantCulture, "JET_COLUMNID(0x{0:x})", this.Value); + } + + /// + /// Formats the value of the current instance using the specified format. + /// + /// + /// A containing the value of the current instance in the specified format. + /// + /// The specifying the format to use. + /// -or- + /// null to use the default format defined for the type of the implementation. + /// + /// The to use to format the value. + /// -or- + /// null to obtain the numeric format information from the current locale setting of the operating system. + /// + public string ToString(string format, IFormatProvider formatProvider) + { + return string.IsNullOrEmpty(format) || "G" == format ? this.ToString() : this.Value.ToString(format, formatProvider); + } + + /// + /// Returns a value indicating whether this instance is equal + /// to another instance. + /// + /// An object to compare with this instance. + /// True if the two instances are equal. + public override bool Equals(object obj) + { + if (obj == null || GetType() != obj.GetType()) + { + return false; + } + + return this.Equals((JET_COLUMNID)obj); + } + + /// + /// Returns the hash code for this instance. + /// + /// The hash code for this instance. + public override int GetHashCode() + { + return this.Value.GetHashCode(); + } + + /// + /// Returns a value indicating whether this instance is equal + /// to another instance. + /// + /// An instance to compare with this instance. + /// True if the two instances are equal. + public bool Equals(JET_COLUMNID other) + { + return this.Value.Equals(other.Value); + } + + /// + /// Compares this columnid to another columnid and determines + /// whether this instance is before, the same as or after the other + /// instance. + /// + /// The columnid to compare to the current instance. + /// + /// A signed number indicating the relative positions of this instance and the value parameter. + /// + public int CompareTo(JET_COLUMNID other) + { + return this.Value.CompareTo(other.Value); + } + + /// + /// Creates a new instance of a using the specified + /// value as the underlying value. + /// + /// The native ESE JET_COLUMNID. + /// An initialized structure. + /// Use of this function should be exceedingly rare. + internal static JET_COLUMNID CreateColumnidFromNativeValue(int nativeValue) + { + return new JET_COLUMNID() + { + Value = unchecked((uint)nativeValue) + }; + } + } + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + /// + /// A JET_OSSNAPID contains a handle to a snapshot of a database. + /// + public struct JET_OSSNAPID : IEquatable, IFormattable + { + /// + /// The native value. + /// + internal IntPtr Value; + + /// + /// Gets a null JET_OSSNAPID. + /// + public static JET_OSSNAPID Nil + { + [DebuggerStepThrough] + get { return new JET_OSSNAPID(); } + } + + /// + /// Gets a value indicating whether the is valid (checks against 0 and -1). + /// + public bool IsInvalid + { + get { return this.Value == IntPtr.Zero || this.Value == new IntPtr(~0); } + } + + /// + /// Determines whether two specified instances of JET_OSSNAPID + /// are equal. + /// + /// The first instance to compare. + /// The second instance to compare. + /// True if the two instances are equal. + public static bool operator ==(JET_OSSNAPID lhs, JET_OSSNAPID rhs) + { + return lhs.Value == rhs.Value; + } + + /// + /// Determines whether two specified instances of JET_OSSNAPID + /// are not equal. + /// + /// The first instance to compare. + /// The second instance to compare. + /// True if the two instances are not equal. + public static bool operator !=(JET_OSSNAPID lhs, JET_OSSNAPID rhs) + { + return !(lhs == rhs); + } + + /// + /// Generate a string representation of the structure. + /// + /// The structure as a string. + public override string ToString() + { + return string.Format(CultureInfo.InvariantCulture, "JET_OSSNAPID(0x{0:x})", this.Value.ToInt64()); + } + + /// + /// Formats the value of the current instance using the specified format. + /// + /// + /// A containing the value of the current instance in the specified format. + /// + /// The specifying the format to use. + /// -or- + /// null to use the default format defined for the type of the implementation. + /// + /// The to use to format the value. + /// -or- + /// null to obtain the numeric format information from the current locale setting of the operating system. + /// + public string ToString(string format, IFormatProvider formatProvider) + { + return string.IsNullOrEmpty(format) || "G" == format ? this.ToString() : this.Value.ToInt64().ToString(format, formatProvider); + } + + /// + /// Returns a value indicating whether this instance is equal + /// to another instance. + /// + /// An object to compare with this instance. + /// True if the two instances are equal. + public override bool Equals(object obj) + { + if (obj == null || GetType() != obj.GetType()) + { + return false; + } + + return this.Equals((JET_OSSNAPID)obj); + } + + /// + /// Returns the hash code for this instance. + /// + /// The hash code for this instance. + public override int GetHashCode() + { + return this.Value.GetHashCode(); + } + + /// + /// Returns a value indicating whether this instance is equal + /// to another instance. + /// + /// An instance to compare with this instance. + /// True if the two instances are equal. + public bool Equals(JET_OSSNAPID other) + { + return this.Value.Equals(other.Value); + } + } +#endif // !MANAGEDESENT_ON_WSA + + /// + /// A JET_HANDLE contains a generic handle. + /// + public struct JET_HANDLE : IEquatable, IFormattable + { + /// + /// The native value. + /// + internal IntPtr Value; + + /// + /// Gets a null JET_HANDLE. + /// + public static JET_HANDLE Nil + { + [DebuggerStepThrough] + get { return new JET_HANDLE(); } + } + + /// + /// Gets a value indicating whether the is valid (checks against 0 and -1). + /// + public bool IsInvalid + { + get { return this.Value == IntPtr.Zero || this.Value == new IntPtr(~0); } + } + + /// + /// Determines whether two specified instances of JET_HANDLE + /// are equal. + /// + /// The first instance to compare. + /// The second instance to compare. + /// True if the two instances are equal. + public static bool operator ==(JET_HANDLE lhs, JET_HANDLE rhs) + { + return lhs.Value == rhs.Value; + } + + /// + /// Determines whether two specified instances of JET_HANDLE + /// are not equal. + /// + /// The first instance to compare. + /// The second instance to compare. + /// True if the two instances are not equal. + public static bool operator !=(JET_HANDLE lhs, JET_HANDLE rhs) + { + return !(lhs == rhs); + } + + /// + /// Generate a string representation of the structure. + /// + /// The structure as a string. + public override string ToString() + { + return string.Format(CultureInfo.InvariantCulture, "JET_HANDLE(0x{0:x})", this.Value.ToInt64()); + } + + /// + /// Formats the value of the current instance using the specified format. + /// + /// + /// A containing the value of the current instance in the specified format. + /// + /// The specifying the format to use. + /// -or- + /// null to use the default format defined for the type of the implementation. + /// + /// The to use to format the value. + /// -or- + /// null to obtain the numeric format information from the current locale setting of the operating system. + /// + public string ToString(string format, IFormatProvider formatProvider) + { + return string.IsNullOrEmpty(format) || "G" == format ? this.ToString() : this.Value.ToInt64().ToString(format, formatProvider); + } + + /// + /// Returns a value indicating whether this instance is equal + /// to another instance. + /// + /// An object to compare with this instance. + /// True if the two instances are equal. + public override bool Equals(object obj) + { + if (obj == null || GetType() != obj.GetType()) + { + return false; + } + + return this.Equals((JET_HANDLE)obj); + } + + /// + /// Returns the hash code for this instance. + /// + /// The hash code for this instance. + public override int GetHashCode() + { + return this.Value.GetHashCode(); + } + + /// + /// Returns a value indicating whether this instance is equal + /// to another instance. + /// + /// An instance to compare with this instance. + /// True if the two instances are equal. + public bool Equals(JET_HANDLE other) + { + return this.Value.Equals(other.Value); + } + } + +#if !MANAGEDESENT_ON_WSA + /// + /// Local storage for an ESENT handle. Used by + /// and . + /// + public struct JET_LS : IEquatable, IFormattable + { + /// + /// The null handle. + /// + public static readonly JET_LS Nil = new JET_LS { Value = new IntPtr(~0) }; + + /// + /// Gets a value indicating whether the is valid (checks against 0 and -1). + /// + public bool IsInvalid + { + get { return this.Value == IntPtr.Zero || this.Value == new IntPtr(~0); } + } + + /// + /// Gets or sets the value of the handle. + /// + public IntPtr Value { get; set; } + + /// + /// Determines whether two specified instances of JET_LS + /// are equal. + /// + /// The first instance to compare. + /// The second instance to compare. + /// True if the two instances are equal. + public static bool operator ==(JET_LS lhs, JET_LS rhs) + { + return lhs.Value == rhs.Value; + } + + /// + /// Determines whether two specified instances of JET_LS + /// are not equal. + /// + /// The first instance to compare. + /// The second instance to compare. + /// True if the two instances are not equal. + public static bool operator !=(JET_LS lhs, JET_LS rhs) + { + return !(lhs == rhs); + } + + /// + /// Generate a string representation of the structure. + /// + /// The structure as a string. + public override string ToString() + { + return string.Format(CultureInfo.InvariantCulture, "JET_LS(0x{0:x})", this.Value.ToInt64()); + } + + /// + /// Formats the value of the current instance using the specified format. + /// + /// + /// A containing the value of the current instance in the specified format. + /// + /// The specifying the format to use. + /// -or- + /// null to use the default format defined for the type of the implementation. + /// + /// The to use to format the value. + /// -or- + /// null to obtain the numeric format information from the current locale setting of the operating system. + /// + public string ToString(string format, IFormatProvider formatProvider) + { + return string.IsNullOrEmpty(format) || "G" == format ? this.ToString() : this.Value.ToInt64().ToString(format, formatProvider); + } + + /// + /// Returns a value indicating whether this instance is equal + /// to another instance. + /// + /// An object to compare with this instance. + /// True if the two instances are equal. + public override bool Equals(object obj) + { + if (obj == null || GetType() != obj.GetType()) + { + return false; + } + + return this.Equals((JET_LS)obj); + } + + /// + /// Returns the hash code for this instance. + /// + /// The hash code for this instance. + public override int GetHashCode() + { + return this.Value.GetHashCode(); + } + + /// + /// Returns a value indicating whether this instance is equal + /// to another instance. + /// + /// An instance to compare with this instance. + /// True if the two instances are equal. + public bool Equals(JET_LS other) + { + return this.Value.Equals(other.Value); + } + } +#endif // !MANAGEDESENT_ON_WSA + + /// + /// Holds an index ID. An index ID is a hint that is used to accelerate the + /// selection of the current index using JetSetCurrentIndex. It is most + /// useful when there is a very large number of indexes over a table. The + /// index ID can be retrieved using JetGetIndexInfo or JetGetTableIndexInfo. + /// + /// + /// The Pack attribute is necessary because the C++ version is defined as + /// a byte array. If the C# compiler inserts the usual padding between the uint cbStruct + /// and the IntPtr, then the structure ends up too large. + /// + [StructLayout(LayoutKind.Sequential, Pack = 4)] + public struct JET_INDEXID : IEquatable + { + /// + /// Size of the structure. + /// + internal uint CbStruct; + + /// + /// Internal use only. + /// + internal IntPtr IndexId1; + + /// + /// Internal use only. + /// + internal uint IndexId2; + + /// + /// Internal use only. + /// + internal uint IndexId3; + + /// + /// The size of a JET_INDEXID structure. + /// + private static readonly uint TheSizeOfIndexId = (uint)Marshal.SizeOf(typeof(JET_INDEXID)); + + /// + /// Gets the size of a JET_INDEXINDEXID structure. + /// + internal static uint SizeOfIndexId + { + [DebuggerStepThrough] + get { return TheSizeOfIndexId; } + } + + /// + /// Determines whether two specified instances of JET_INDEXID + /// are equal. + /// + /// The first instance to compare. + /// The second instance to compare. + /// True if the two instances are equal. + public static bool operator ==(JET_INDEXID lhs, JET_INDEXID rhs) + { + return lhs.Equals(rhs); + } + + /// + /// Determines whether two specified instances of JET_INDEXID + /// are not equal. + /// + /// The first instance to compare. + /// The second instance to compare. + /// True if the two instances are not equal. + public static bool operator !=(JET_INDEXID lhs, JET_INDEXID rhs) + { + return !(lhs == rhs); + } + + /// + /// Returns a value indicating whether this instance is equal + /// to another instance. + /// + /// An object to compare with this instance. + /// True if the two instances are equal. + public override bool Equals(object obj) + { + if (obj == null || GetType() != obj.GetType()) + { + return false; + } + + return this.Equals((JET_INDEXID)obj); + } + + /// + /// Generate a string representation of the structure. + /// + /// The structure as a string. + public override string ToString() + { + return string.Format( + CultureInfo.InvariantCulture, + "JET_INDEXID(0x{0:x}:0x{1:x}:0x{2:x})", + this.IndexId1, + this.IndexId2, + this.IndexId3); + } + + /// + /// Returns the hash code for this instance. + /// + /// The hash code for this instance. + public override int GetHashCode() + { + return this.CbStruct.GetHashCode() + ^ this.IndexId1.GetHashCode() + ^ this.IndexId2.GetHashCode() + ^ this.IndexId3.GetHashCode(); + } + + /// + /// Returns a value indicating whether this instance is equal + /// to another instance. + /// + /// An instance to compare with this instance. + /// True if the two instances are equal. + public bool Equals(JET_INDEXID other) + { + return this.CbStruct == other.CbStruct + && this.IndexId1 == other.IndexId1 + && this.IndexId2 == other.IndexId2 + && this.IndexId3 == other.IndexId3; + } + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/UInt16ColumnValue.cs b/WelsonJS.Toolkit/EsentInterop/UInt16ColumnValue.cs new file mode 100644 index 0000000..428cd33 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/UInt16ColumnValue.cs @@ -0,0 +1,70 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Diagnostics; + + /// + /// A column value. + /// + [CLSCompliant(false)] + public class UInt16ColumnValue : ColumnValueOfStruct + { + /// + /// Gets the size of the value in the column. This returns 0 for + /// variable sized columns (i.e. binary and string). + /// + protected override int Size + { + [DebuggerStepThrough] + get { return sizeof(ushort); } + } + + /// + /// Recursive SetColumns method for data pinning. This populates the buffer and + /// calls the inherited SetColumns method. + /// + /// The session to use. + /// + /// The table to set the columns in. An update should be prepared. + /// + /// + /// Column values to set. + /// + /// + /// Structures to put the pinned data in. + /// + /// Offset of this object in the array. + /// An error code. + internal override unsafe int SetColumns(JET_SESID sesid, JET_TABLEID tableid, ColumnValue[] columnValues, NATIVE_SETCOLUMN* nativeColumns, int i) + { + var data = this.Value.GetValueOrDefault(); + return this.SetColumns(sesid, tableid, columnValues, nativeColumns, i, &data, sizeof(ushort), this.Value.HasValue); + } + + /// + /// Given data retrieved from ESENT, decode the data and set the value in the ColumnValue object. + /// + /// An array of bytes. + /// The starting position within the bytes. + /// The number of bytes to decode. + /// The error returned from ESENT. + protected override void GetValueFromBytes(byte[] value, int startIndex, int count, int err) + { + if (JET_wrn.ColumnNull == (JET_wrn)err) + { + this.Value = null; + } + else + { + this.CheckDataCount(count); + this.Value = BitConverter.ToUInt16(value, startIndex); + } + } + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/UInt32ColumnValue.cs b/WelsonJS.Toolkit/EsentInterop/UInt32ColumnValue.cs new file mode 100644 index 0000000..236184e --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/UInt32ColumnValue.cs @@ -0,0 +1,70 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Diagnostics; + + /// + /// A column value. + /// + [CLSCompliant(false)] + public class UInt32ColumnValue : ColumnValueOfStruct + { + /// + /// Gets the size of the value in the column. This returns 0 for + /// variable sized columns (i.e. binary and string). + /// + protected override int Size + { + [DebuggerStepThrough] + get { return sizeof(uint); } + } + + /// + /// Recursive SetColumns method for data pinning. This populates the buffer and + /// calls the inherited SetColumns method. + /// + /// The session to use. + /// + /// The table to set the columns in. An update should be prepared. + /// + /// + /// Column values to set. + /// + /// + /// Structures to put the pinned data in. + /// + /// Offset of this object in the array. + /// An error code. + internal override unsafe int SetColumns(JET_SESID sesid, JET_TABLEID tableid, ColumnValue[] columnValues, NATIVE_SETCOLUMN* nativeColumns, int i) + { + var data = this.Value.GetValueOrDefault(); + return this.SetColumns(sesid, tableid, columnValues, nativeColumns, i, &data, sizeof(uint), this.Value.HasValue); + } + + /// + /// Given data retrieved from ESENT, decode the data and set the value in the ColumnValue object. + /// + /// An array of bytes. + /// The starting position within the bytes. + /// The number of bytes to decode. + /// The error returned from ESENT. + protected override void GetValueFromBytes(byte[] value, int startIndex, int count, int err) + { + if (JET_wrn.ColumnNull == (JET_wrn)err) + { + this.Value = null; + } + else + { + this.CheckDataCount(count); + this.Value = BitConverter.ToUInt32(value, startIndex); + } + } + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/UInt64ColumnValue.cs b/WelsonJS.Toolkit/EsentInterop/UInt64ColumnValue.cs new file mode 100644 index 0000000..c2fedec --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/UInt64ColumnValue.cs @@ -0,0 +1,70 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Diagnostics; + + /// + /// A column value. + /// + [CLSCompliant(false)] + public class UInt64ColumnValue : ColumnValueOfStruct + { + /// + /// Gets the size of the value in the column. This returns 0 for + /// variable sized columns (i.e. binary and string). + /// + protected override int Size + { + [DebuggerStepThrough] + get { return sizeof(ulong); } + } + + /// + /// Recursive SetColumns method for data pinning. This populates the buffer and + /// calls the inherited SetColumns method. + /// + /// The session to use. + /// + /// The table to set the columns in. An update should be prepared. + /// + /// + /// Column values to set. + /// + /// + /// Structures to put the pinned data in. + /// + /// Offset of this object in the array. + /// An error code. + internal override unsafe int SetColumns(JET_SESID sesid, JET_TABLEID tableid, ColumnValue[] columnValues, NATIVE_SETCOLUMN* nativeColumns, int i) + { + var data = this.Value.GetValueOrDefault(); + return this.SetColumns(sesid, tableid, columnValues, nativeColumns, i, &data, sizeof(ulong), this.Value.HasValue); + } + + /// + /// Given data retrieved from ESENT, decode the data and set the value in the ColumnValue object. + /// + /// An array of bytes. + /// The starting position within the bytes. + /// The number of bytes to decode. + /// The error returned from ESENT. + protected override void GetValueFromBytes(byte[] value, int startIndex, int count, int err) + { + if (JET_wrn.ColumnNull == (JET_wrn)err) + { + this.Value = null; + } + else + { + this.CheckDataCount(count); + this.Value = BitConverter.ToUInt64(value, startIndex); + } + } + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/Update.cs b/WelsonJS.Toolkit/EsentInterop/Update.cs new file mode 100644 index 0000000..adda414 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/Update.cs @@ -0,0 +1,159 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Globalization; + + /// + /// A class that encapsulates an update on a JET_TABLEID. + /// + public class Update : EsentResource + { + /// + /// The underlying JET_SESID. + /// + private readonly JET_SESID sesid; + + /// + /// The underlying JET_TABLEID. + /// + private readonly JET_TABLEID tableid; + + /// + /// The type of update. + /// + private readonly JET_prep prep; + + /// + /// Initializes a new instance of the Update class. This automatically + /// begins an update. The update will be cancelled if + /// not explicitly saved. + /// + /// The session to start the transaction for. + /// The tableid to prepare the update for. + /// The type of update. + public Update(JET_SESID sesid, JET_TABLEID tableid, JET_prep prep) + { + if (JET_prep.Cancel == prep) + { + throw new ArgumentException("Cannot create an Update for JET_prep.Cancel", "prep"); + } + + this.sesid = sesid; + this.tableid = tableid; + this.prep = prep; + Api.JetPrepareUpdate(this.sesid, this.tableid, this.prep); + this.ResourceWasAllocated(); + } + + /// + /// Returns a that represents the current . + /// + /// + /// A that represents the current . + /// + public override string ToString() + { + return string.Format(CultureInfo.InvariantCulture, "Update ({0})", this.prep); + } + + /// + /// Update the tableid. + /// + /// Returns the bookmark of the updated record. This can be null. + /// The size of the bookmark buffer. + /// Returns the actual size of the bookmark. + /// + /// Save is the final step in performing an insert or an update. The update is begun by + /// calling creating an Update object and then by calling JetSetColumn or JetSetColumns one or more times + /// to set the record state. Finally, Update is called to complete the update operation. + /// Indexes are updated only by Update or and not during JetSetColumn or JetSetColumns. + /// + public void Save(byte[] bookmark, int bookmarkSize, out int actualBookmarkSize) + { + this.CheckObjectIsNotDisposed(); + if (!this.HasResource) + { + throw new InvalidOperationException("Not in an update"); + } + + Api.JetUpdate(this.sesid, this.tableid, bookmark, bookmarkSize, out actualBookmarkSize); + this.ResourceWasReleased(); + } + + /// + /// Update the tableid. + /// + /// + /// Save is the final step in performing an insert or an update. The update is begun by + /// calling creating an Update object and then by calling JetSetColumn or JetSetColumns one or more times + /// to set the record state. Finally, Update is called to complete the update operation. + /// Indexes are updated only by Update or and not during JetSetColumn or JetSetColumns. + /// + public void Save() + { + int ignored; + this.Save(null, 0, out ignored); + } + + /// + /// Update the tableid and position the tableid on the record that was modified. + /// This can be useful when inserting a record because by default the tableid + /// remains in its old location. + /// + /// + /// Save is the final step in performing an insert or an update. The update is begun by + /// calling creating an Update object and then by calling JetSetColumn or JetSetColumns one or more times + /// to set the record state. Finally, Update is called to complete the update operation. + /// Indexes are updated only by Update or and not during JetSetColumn or JetSetColumns. + /// + public void SaveAndGotoBookmark() + { + byte[] bookmark = null; + + try + { + bookmark = Caches.BookmarkCache.Allocate(); + int actualBookmarkSize; + this.Save(bookmark, bookmark.Length, out actualBookmarkSize); + Api.JetGotoBookmark(this.sesid, this.tableid, bookmark, actualBookmarkSize); + } + finally + { + if (bookmark != null) + { + Caches.BookmarkCache.Free(ref bookmark); + } + } + } + + /// + /// Cancel the update. + /// + public void Cancel() + { + this.CheckObjectIsNotDisposed(); + if (!this.HasResource) + { + throw new InvalidOperationException("Not in an update"); + } + + Api.JetPrepareUpdate(this.sesid, this.tableid, JET_prep.Cancel); + this.ResourceWasReleased(); + } + + /// + /// Called when the transaction is being disposed while active. + /// This should rollback the transaction. + /// + protected override void ReleaseResource() + { + this.Cancel(); + } + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/Util.cs b/WelsonJS.Toolkit/EsentInterop/Util.cs new file mode 100644 index 0000000..871e655 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/Util.cs @@ -0,0 +1,279 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Collections.Generic; + using System.Globalization; + using System.IO; + using System.Text; + + /// + /// Static utility methods. + /// + internal static class Util + { + /// + /// Compare two byte arrays to see if they have the same content. + /// + /// The first array. + /// The second array. + /// The offset to start comparing at. + /// The number of bytes to compare. + /// True if the arrays are equal, false otherwise. + public static bool ArrayEqual(IList a, IList b, int offset, int count) + { + if (null == a || null == b) + { + return ReferenceEquals(a, b); + } + + for (int i = 0; i < count; ++i) + { + if (a[offset + i] != b[offset + i]) + { + return false; + } + } + + return true; + } + + /// + /// Return a string containing (some of) the bytes. + /// + /// The data to dump. + /// The starting offset. + /// The count. + /// A string version of the data. + public static string DumpBytes(byte[] data, int offset, int count) + { + if (null == data) + { + return ""; + } + + if (0 == count) + { + return string.Empty; + } + + if (offset < 0 || count < 0 || offset >= data.Length || offset + count > data.Length) + { + return ""; + } + + const int MaxBytesToPrint = 8; + StringBuilder sb = new StringBuilder(); + sb.Append(BitConverter.ToString(data, offset, Math.Min(count, MaxBytesToPrint))); + if (count > MaxBytesToPrint) + { + // The output was truncated + sb.AppendFormat(CultureInfo.InvariantCulture, "... ({0} bytes)", count); + } + + return sb.ToString(); + } + + /// + /// Compares two objects with ContentEquals. + /// If both are null, there are considered equal. + /// + /// A type that implements IContentEquatable. + /// First object to compare. + /// Second object to compare. + /// Whether the two objects are equal. + public static bool ObjectContentEquals(T left, T right) + where T : class, IContentEquatable + { + if (null == left || null == right) + { + return ReferenceEquals(left, right); + } + + return left.ContentEquals(right); + } + + /// + /// Compares two objects with ContentEquals. + /// If both are null, there are considered equal. + /// + /// A type that implements IContentEquatable. + /// First object to compare. + /// Second object to compare. + /// The number of entries to compare. + /// Whether the two objects are equal. + public static bool ArrayObjectContentEquals(T[] left, T[] right, int length) + where T : class, IContentEquatable + { + if (null == left || null == right) + { + return ReferenceEquals(left, right); + } + + for (int i = 0; i < length; ++i) + { + if (!ObjectContentEquals(left[i], right[i])) + { + return false; + } + } + + // All the individual members are equal, all of the elements of the arrays are + // equal, so they must be equal! + return true; + } + + /// + /// Compares items in two arrays using Equals. + /// If both arrays are null, there are considered equal. + /// + /// A value type. + /// First array to compare. + /// Second array to compare. + /// The number of entries to compare. + /// Whether the two arrays are equal. + public static bool ArrayStructEquals(T[] left, T[] right, int length) + where T : struct + { + if (null == left || null == right) + { + return ReferenceEquals(left, right); + } + + for (int i = 0; i < length; ++i) + { + if (!left[i].Equals(right[i])) + { + return false; + } + } + + // All the individual members are equal, all of the elements of the arrays are + // equal, so they must be equal! + return true; + } + + /// + /// Clone an array of objects. + /// + /// The type of object in the array. + /// The values to clone. + /// A clone of the values. + public static T[] DeepCloneArray(T[] value) where T : class, IDeepCloneable + { + T[] clone = null; + if (null != value) + { + clone = new T[value.Length]; + for (int i = 0; i < clone.Length; ++i) + { + clone[i] = (null == value[i]) ? null : value[i].DeepClone(); + } + } + + return clone; + } + + /// + /// Given a list of hash codes calculate a hash of the hashes. + /// + /// The sub hash codes. + /// A hash of the hash codes. + public static int CalculateHashCode(IEnumerable hashes) + { + int hash = 0; + foreach (int h in hashes) + { + hash ^= h; + unchecked + { + hash *= 33; + } + } + + return hash; + } + + /// + /// Add a trailing directory separator character to the string. + /// + /// The directory. + /// The directory with a separator character added (if necessary). + public static string AddTrailingDirectorySeparator(string dir) + { + if (!string.IsNullOrEmpty(dir)) + { + var sepChars = new[] { LibraryHelpers.DirectorySeparatorChar, LibraryHelpers.AltDirectorySeparatorChar }; + return string.Concat(dir.TrimEnd(sepChars), LibraryHelpers.DirectorySeparatorChar); + } + + return dir; + } + + /// + /// Converts a unicode string to a null-terminated Ascii byte array. + /// + /// The unicode string to be converted. + /// The byte array with a null-terminated Ascii representation of the given string. + public static byte[] ConvertToNullTerminatedAsciiByteArray(string value) + { + if (value == null) + { + return null; + } + + byte[] output = new byte[value.Length + 1]; + + LibraryHelpers.EncodingASCII.GetBytes(value, 0, value.Length, output, 0); + output[output.Length - 1] = (byte)0; + + return output; + } + + /// + /// Converts a unicode string to a null-terminated Unicode byte array. + /// + /// The unicode string to be converted. + /// The byte array with a null-terminated Unicode representation of the given string. + public static byte[] ConvertToNullTerminatedUnicodeByteArray(string value) + { + if (value == null) + { + return null; + } + + int byteArrayLength = Encoding.Unicode.GetByteCount(value); + + byte[] output = new byte[byteArrayLength + 2]; + + Encoding.Unicode.GetBytes(value, 0, value.Length, output, 0); + output[output.Length - 2] = (byte)0; + output[output.Length - 1] = (byte)0; + + return output; + } + + /// + /// Converts a unicode string to an Ascii byte array. + /// CAUTION: The array doesn't have a null-terminator at the end. + /// + /// The unicode string to be converted. + /// The byte array with an Ascii representation of the given string. + public static byte[] ConvertToAsciiByteArray(string value) + { + if (value == null) + { + return null; + } + + byte[] output = new byte[value.Length]; + LibraryHelpers.EncodingASCII.GetBytes(value, 0, value.Length, output, 0); + return output; + } + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/VistaApi.cs b/WelsonJS.Toolkit/EsentInterop/VistaApi.cs new file mode 100644 index 0000000..f7f24dc --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/VistaApi.cs @@ -0,0 +1,211 @@ +//----------------------------------------------------------------------- +// +// 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 + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/VistaColinfo.cs b/WelsonJS.Toolkit/EsentInterop/VistaColinfo.cs new file mode 100644 index 0000000..fbb7d32 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/VistaColinfo.cs @@ -0,0 +1,34 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop.Vista +{ + /// + /// Column info levels that have been added to the Vista version of ESENT. + /// + public static class VistaColInfo + { + /// + /// Retrieve the JET_COLBASE using the column id. + /// + internal const JET_ColInfo BaseByColid = (JET_ColInfo)8; + + /// + /// For lists, only return non-derived columns (if the table is derived from a template). + /// + internal const JET_ColInfo GrbitNonDerivedColumnsOnly = (JET_ColInfo)int.MinValue; // 0x80000000, + + /// + /// For lists, only return the column name and columnid of each column. + /// + internal const JET_ColInfo GrbitMinimalInfo = (JET_ColInfo)0x40000000; + + /// + /// For lists, sort returned column list by columnid (default is to sort list by column name). + /// + internal const JET_ColInfo GrbitSortByColumnid = (JET_ColInfo)0x20000000; + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/VistaColtyp.cs b/WelsonJS.Toolkit/EsentInterop/VistaColtyp.cs new file mode 100644 index 0000000..9d76132 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/VistaColtyp.cs @@ -0,0 +1,34 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop.Vista +{ + /// + /// Column types that have been added to the Vista version of ESENT. + /// + public static class VistaColtyp + { + /// + /// Unsigned 32-bit number. + /// + public const JET_coltyp UnsignedLong = (JET_coltyp)14; + + /// + /// Signed 64-bit number. + /// + public const JET_coltyp LongLong = (JET_coltyp)15; + + /// + /// 16-byte GUID. + /// + public const JET_coltyp GUID = (JET_coltyp)16; + + /// + /// Unsigned 16-bit number. + /// + public const JET_coltyp UnsignedShort = (JET_coltyp)17; + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/VistaGrbits.cs b/WelsonJS.Toolkit/EsentInterop/VistaGrbits.cs new file mode 100644 index 0000000..75853d4 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/VistaGrbits.cs @@ -0,0 +1,173 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop.Vista +{ + using System; + +#if !MANAGEDESENT_ON_WSA + /// + /// Options for . + /// + [Flags] + public enum SnapshotEndGrbit + { + /// + /// Default options. + /// + None = 0, + + /// + /// The snapshot session aborted. + /// + AbortSnapshot = 0x1, + } + + /// + /// Options for . + /// + [Flags] + public enum SnapshotPrepareInstanceGrbit + { + /// + /// Default options. + /// + None = 0, + } + + /// + /// Options for + /// and . + /// + [Flags] + public enum SnapshotTruncateLogGrbit + { + /// + /// No truncation will occur. + /// + None = 0, + + /// + /// All the databases are attached so the storage engine can compute + /// and do the log truncation. + /// + AllDatabasesSnapshot = 0x1, + } + + /// + /// Options for . + /// + [Flags] + public enum SnapshotGetFreezeInfoGrbit + { + /// + /// Default options. + /// + None = 0, + } + + /// + /// Information levels for . + /// + [Flags] + public enum JET_InstanceMiscInfo + { + /// + /// Get the signature of the transaction log associated with this sequence. + /// + LogSignature = 0, + } +#endif // !MANAGEDESENT_ON_WSA + + /// + /// Grbits that have been added to the Vista version of ESENT. + /// + public static class VistaGrbits + { + /// + /// Specifying this flag for an index that has more than one key column + /// that is a multi-valued column will result in an index entry being + /// created for each result of a cross product of all the values in + /// those key columns. Otherwise, the index would only have one entry + /// for each multi-value in the most significant key column that is a + /// multi-valued column and each of those index entries would use the + /// first multi-value from any other key columns that are multi-valued columns. + /// + /// For example, if you specified this flag for an index over column + /// A that has the values "red" and "blue" and over column B that has + /// the values "1" and "2" then the following index entries would be + /// created: "red", "1"; "red", "2"; "blue", "1"; "blue", "2". Otherwise, + /// the following index entries would be created: "red", "1"; "blue", "1". + /// + /// + public const CreateIndexGrbit IndexCrossProduct = (CreateIndexGrbit)0x4000; + + /// + /// Specifying this flag will cause any update to the index that would + /// result in a truncated key to fail with . + /// Otherwise, keys will be silently truncated. + /// + public const CreateIndexGrbit IndexDisallowTruncation = (CreateIndexGrbit)0x10000; + + /// + /// Index over multiple multi-valued columns but only with values of same itagSequence. + /// + public const CreateIndexGrbit IndexNestedTable = (CreateIndexGrbit)0x20000; + +#if !MANAGEDESENT_ON_WSA + /// + /// The engine can mark the database headers as appropriate (for example, + /// a full backup completed), even though the call to truncate was not completed. + /// + public const EndExternalBackupGrbit TruncateDone = (EndExternalBackupGrbit)0x100; +#endif // !MANAGEDESENT_ON_WSA + + /// + /// Perform recovery, but halt at the Undo phase. Allows whatever logs are present to + /// be replayed, then later additional logs can be copied and replayed. + /// + public const InitGrbit RecoveryWithoutUndo = (InitGrbit)0x8; + + /// + /// On successful soft recovery, truncate log files. + /// + public const InitGrbit TruncateLogsAfterRecovery = (InitGrbit)0x00000010; + + /// + /// Missing database map entry default to same location. + /// + public const InitGrbit ReplayMissingMapEntryDB = (InitGrbit)0x00000020; + + /// + /// Transaction logs must exist in the log file directory + /// (i.e. can't auto-start a new stream). + /// + public const InitGrbit LogStreamMustExist = (InitGrbit)0x40; + +#if !MANAGEDESENT_ON_WSA + /// + /// The snapshot session continues after JetOSSnapshotThaw and will + /// require a JetOSSnapshotEnd function call. + /// + public const SnapshotPrepareGrbit ContinueAfterThaw = (SnapshotPrepareGrbit)0x4; +#endif // !MANAGEDESENT_ON_WSA + /// + /// Specifying this flag will cause the index to use the maximum key size + /// specified in the cbKeyMost field in the structure. Otherwise, the + /// index will use JET_cbKeyMost (255) as its maximum key size. + /// + /// + /// Set internally when the NATIVE_INDEXCREATE structure is generated. + /// + internal const CreateIndexGrbit IndexKeyMost = (CreateIndexGrbit)0x8000; + + /// + /// LCID field of JET_INDEXCREATE actually points to a JET_UNICODEINDEX + /// struct to allow user-defined LCMapString() flags. + /// + internal const CreateIndexGrbit IndexUnicode = (CreateIndexGrbit)0x00000800; + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/VistaParam.cs b/WelsonJS.Toolkit/EsentInterop/VistaParam.cs new file mode 100644 index 0000000..a985f65 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/VistaParam.cs @@ -0,0 +1,152 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop.Vista +{ + /// + /// System parameters that have been added to the Vista version of ESENT. + /// + public static class VistaParam + { + /// + /// This parameter controls the number of B+ Tree resources cached by + /// the instance after the tables they represent have been closed by + /// the application. Large values for this parameter will cause the + /// database engine to use more memory but will increase the speed + /// with which a large number of tables can be opened randomly by + /// the application. This is useful for applications that have a + /// schema with a very large number of tables. + /// + public const JET_param CachedClosedTables = (JET_param)125; + + /// + /// Enable the use of the OS file cache for all managed files. + /// + public const JET_param EnableFileCache = (JET_param)126; + + /// + /// Enable the use of memory mapped file I/O for database files. + /// + public const JET_param EnableViewCache = (JET_param)127; + + /// + /// This parameter exposes multiple sets of default values for the + /// entire set of system parameters. When this parameter is set to + /// a specific configuration, all system parameter values are reset + /// to their default values for that configuration. If the + /// configuration is set for a specific instance then global system + /// parameters will not be reset to their default values. + /// Small Configuration (0): The database engine is optimized for memory use. + /// Legacy Configuration (1): The database engine has its traditional defaults. + /// + public const JET_param Configuration = (JET_param)129; + + /// + /// This parameter is used to control when the database engine accepts + /// or rejects changes to a subset of the system parameters. This + /// parameter is used in conjunction with to + /// prevent some system parameters from being set away from the selected + /// configuration's defaults. + /// + public const JET_param EnableAdvanced = (JET_param)130; + + /// + /// This read-only parameter indicates the maximum allowable index key + /// length that can be selected for the current database page size + /// (as configured by ). + /// + public const JET_param KeyMost = (JET_param)134; + + /// + /// This parameter provides backwards compatibility with the file naming conventions of earlier releases of the database engine. + /// + public const JET_param LegacyFileNames = (JET_param)136; + + /// + /// Set the name associated with table class 1. + /// + public const JET_param TableClass1Name = (JET_param)137; + + /// + /// Set the name associated with table class 2. + /// + public const JET_param TableClass2Name = (JET_param)138; + + /// + /// Set the name associated with table class 3. + /// + public const JET_param TableClass3Name = (JET_param)139; + + /// + /// Set the name associated with table class 4. + /// + public const JET_param TableClass4Name = (JET_param)140; + + /// + /// Set the name associated with table class 5. + /// + public const JET_param TableClass5Name = (JET_param)141; + + /// + /// Set the name associated with table class 6. + /// + public const JET_param TableClass6Name = (JET_param)142; + + /// + /// Set the name associated with table class 7. + /// + public const JET_param TableClass7Name = (JET_param)143; + + /// + /// Set the name associated with table class 8. + /// + public const JET_param TableClass8Name = (JET_param)144; + + /// + /// Set the name associated with table class 9. + /// + public const JET_param TableClass9Name = (JET_param)145; + + /// + /// Set the name associated with table class 10. + /// + public const JET_param TableClass10Name = (JET_param)146; + + /// + /// Set the name associated with table class 11. + /// + public const JET_param TableClass11Name = (JET_param)147; + + /// + /// Set the name associated with table class 12. + /// + public const JET_param TableClass12Name = (JET_param)148; + + /// + /// Set the name associated with table class 13. + /// + public const JET_param TableClass13Name = (JET_param)149; + + /// + /// Set the name associated with table class 14. + /// + public const JET_param TableClass14Name = (JET_param)150; + + /// + /// Set the name associated with table class 15. + /// + public const JET_param TableClass15Name = (JET_param)151; + + /// + /// Sets the IO priority per instance, anytime. This is used + /// mainly for background recovery (log replay). + /// Does not affect the pending IOs, just the subsequent ones issued. + /// The valid values for this parameter are contained in the + /// enumeration. + /// + public const JET_param IOPriority = (JET_param)152; + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/Win32NativeMethods.cs b/WelsonJS.Toolkit/EsentInterop/Win32NativeMethods.cs new file mode 100644 index 0000000..37e6575 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/Win32NativeMethods.cs @@ -0,0 +1,141 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +// P/Invoke constants for Win32 functions. +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop.Win32 +{ + using System; + using System.ComponentModel; + using System.Runtime.ConstrainedExecution; + using System.Runtime.InteropServices; + +#if !MANAGEDESENT_ON_WSA // None of this can be called in windows store apps. + /// + /// Allocation type options for . + /// + [Flags] + internal enum AllocationType : uint + { + /// + /// Commit the memory. + /// + MEM_COMMIT = 0x1000, + + /// + /// Reserve the memory. + /// + MEM_RESERVE = 0x2000, + } + + /// + /// Memory protection options for . + /// + internal enum MemoryProtection : uint + { + /// + /// Read/write access to the pages. + /// + PAGE_READWRITE = 0x04, + } + + /// + /// Options for . + /// + internal enum FreeType : uint + { + /// + /// Release the memory. The pages will be in the free state. + /// + MEM_RELEASE = 0x8000, + } +#endif + + /// + /// P/Invoke methods for Win32 functions. + /// + internal static class NativeMethods + { +#if MANAGEDESENT_ON_CORECLR || MANAGEDESENT_ON_WSA + /// + /// The name of the DLL that holds the Core Memory API set. + /// + private const string WinCoreMemoryDll = "api-ms-win-core-memory-l1-1-1.dll"; + + /// + /// The name of the DLL that holds the Obsolete Heap API set. + /// (Might be api-ms-win-core-heap-obsolete-l1-1-0.dll.) + /// + private const string HeapObsolete = "kernelbase"; + + /// + /// The name of the DLL that holds the Core process/threads API set. + /// + private const string WinCoreProcessThreads = "api-ms-win-core-processthreads-l1-1-1.dll"; +#else + /// + /// The name of the DLL that holds the Core Memory API set. + /// + private const string WinCoreMemoryDll = "kernel32.dll"; + + /// + /// The name of the DLL that holds the Obsolete Heap API set. + /// + private const string HeapObsolete = "kernel32.dll"; + + /// + /// The name of the DLL that holds the Core process/threads API set. + /// + private const string WinCoreProcessThreads = "kernel32.dll"; +#endif // MANAGEDESENT_ON_CORECLR || MANAGEDESENT_ON_WSA + +#if !MANAGEDESENT_ON_WSA // None of this can be called in windows store apps. + /// + /// Throw an exception if the given pointer is null (IntPtr.Zero). + /// + /// The pointer to check. + /// The message for the exception. + public static void ThrowExceptionOnNull(IntPtr ptr, string message) + { + if (IntPtr.Zero == ptr) + { + throw new Win32Exception(Marshal.GetLastWin32Error(), message); + } + } + + /// + /// Throw an exception if the success code is not true. + /// + /// The success code. + /// The message for the exception. + public static void ThrowExceptionOnFailure(bool success, string message) + { + if (!success) + { + throw new Win32Exception(Marshal.GetLastWin32Error(), message); + } + } + + [DllImport(WinCoreMemoryDll, SetLastError = true)] + public static extern IntPtr VirtualAlloc(IntPtr plAddress, UIntPtr dwSize, uint flAllocationType, uint flProtect); + + [DllImport(WinCoreMemoryDll, SetLastError = true)] + [return: MarshalAs(UnmanagedType.Bool)] + public static extern bool VirtualFree(IntPtr lpAddress, UIntPtr dwSize, uint dwFreeType); + + [DllImport(HeapObsolete)] + [ReliabilityContract(Consistency.WillNotCorruptState, Cer.MayFail)] + public static extern IntPtr LocalAlloc(int uFlags, UIntPtr sizetdwBytes); + + [DllImport(HeapObsolete)] + public static extern IntPtr LocalFree(IntPtr hglobal); + +#endif // !MANAGEDESENT_ON_WSA + + // Win32 APIs that are white-listed for Windows Store Apps can be safely referenced here. + [DllImport(WinCoreProcessThreads)] + public static extern int GetCurrentProcessId(); + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/Windows10Api.cs b/WelsonJS.Toolkit/EsentInterop/Windows10Api.cs new file mode 100644 index 0000000..abf47fc --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/Windows10Api.cs @@ -0,0 +1,62 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop.Windows10 +{ + using Microsoft.Isam.Esent.Interop; + using Microsoft.Isam.Esent.Interop.Windows8; + + /// + /// Api calls introduced in Windows 10. + /// + public static class Windows10Api + { + #region Session Parameters + /// + /// Sets a parameter on the provided session state, used for the lifetime of this session or until reset. + /// + /// The session to set the parameter on. + /// The ID of the session parameter to retrieve. + /// An operation context to retrieve. + /// + public static void JetGetSessionParameter( + JET_SESID sesid, + JET_sesparam sesparamid, + out JET_OPERATIONCONTEXT operationContext) + { + Api.Check(Api.Impl.JetGetSessionParameter(sesid, sesparamid, out operationContext)); + } + + /// + /// Sets a parameter on the provided session state, used for the lifetime of this session or until reset. + /// + /// The session to set the parameter on. + /// The ID of the session parameter to set. + /// An operation context to set. + /// + public static void JetSetSessionParameter(JET_SESID sesid, JET_sesparam sesparamid, JET_OPERATIONCONTEXT operationContext) + { + Api.Check(Api.Impl.JetSetSessionParameter(sesid, sesparamid, operationContext)); + } + #endregion + + #region Sessions + + /// + /// 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_THREADSTATS2 threadstats) + { + Api.Check(Api.Impl.JetGetThreadStats(out threadstats)); + } + + #endregion + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/Windows10Coltyp.cs b/WelsonJS.Toolkit/EsentInterop/Windows10Coltyp.cs new file mode 100644 index 0000000..2524d9b --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/Windows10Coltyp.cs @@ -0,0 +1,19 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop.Windows10 +{ + /// + /// Column types that have been added to the Windows 10 version of ESENT. + /// + public static class Windows10Coltyp + { + /// + /// Unsigned 64-bit number. + /// + public const JET_coltyp UnsignedLongLong = (JET_coltyp)18; + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/Windows10Grbits.cs b/WelsonJS.Toolkit/EsentInterop/Windows10Grbits.cs new file mode 100644 index 0000000..648fafa --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/Windows10Grbits.cs @@ -0,0 +1,46 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop.Windows10 +{ + using System; + + using Microsoft.Isam.Esent.Interop; + using Microsoft.Isam.Esent.Interop.Windows8; + + /// + /// System parameters that have been introduced in Windows 10. + /// + public static class Windows10Grbits + { + /// + /// Do not write to the input structures, so that the structures can be stored in readonly memory. + /// Additionally, do not return any auto-opened tableid. + /// + /// + /// + public const CreateTableColumnIndexGrbit TableCreateImmutableStructure = (CreateTableColumnIndexGrbit)0x8; + + /// + /// Do not write to the input structures, so that the structures can be stored in readonly memory. + /// + /// + /// This was primarily introduced for the C API so that the input structures could be stored in read-only + /// memory. It is of limited use in this managed code interop, since the input structures are generated + /// on the fly. It is provided here for completeness. + /// + /// + /// + public const CreateIndexGrbit IndexCreateImmutableStructure = (CreateIndexGrbit)0x80000; + + /// + /// Passed back to durable commit callback to let it know that log is down (and all pending commits will not be flushed to disk). + /// Used with . + /// + /// + public const DurableCommitCallbackGrbit LogUnavailable = (DurableCommitCallbackGrbit)0x1; + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/Windows10IJetApi.cs b/WelsonJS.Toolkit/EsentInterop/Windows10IJetApi.cs new file mode 100644 index 0000000..8b74a1b --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/Windows10IJetApi.cs @@ -0,0 +1,63 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop.Implementation +{ + using Microsoft.Isam.Esent.Interop.Windows10; + using Microsoft.Isam.Esent.Interop.Windows8; + + /// + /// This interface describes all the Windows10 methods which have a + /// P/Invoke implementation. Concrete instances of this interface provide + /// methods that call ESENT. + /// + internal partial interface IJetApi + { + #region Session Parameters + /// + /// Sets a parameter on the provided session state, used for the lifetime of this session or until reset. + /// + /// The session to set the parameter on. + /// The ID of the session parameter to retrieve. + /// An operation context to retrieve. + /// + /// An error code. + int JetGetSessionParameter( + JET_SESID sesid, + JET_sesparam sesparamid, + out JET_OPERATIONCONTEXT operationContext); + + /// + /// Sets a parameter on the provided session state, used for the lifetime of this session or until reset. + /// + /// The session to set the parameter on. + /// The ID of the session parameter to set. + /// An operation context to set. + /// An error code. + int JetSetSessionParameter( + JET_SESID sesid, + JET_sesparam sesparamid, + JET_OPERATIONCONTEXT operationContext); + + #endregion + + #region Sessions + + /// + /// 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. + /// + /// An error code if the operation fails. + int JetGetThreadStats(out JET_THREADSTATS2 threadstats); + + #endregion + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/Windows10JetApi.cs b/WelsonJS.Toolkit/EsentInterop/Windows10JetApi.cs new file mode 100644 index 0000000..32302d9 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/Windows10JetApi.cs @@ -0,0 +1,127 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop.Implementation +{ + using System; + using System.Globalization; + using System.Runtime.InteropServices; + using Microsoft.Isam.Esent.Interop.Windows10; + using Microsoft.Isam.Esent.Interop.Windows8; + + /// + /// Windows10 calls to the ESENT interop layer. These calls take the managed types (e.g. JET_SESID) and + /// return errors. + /// + internal sealed partial class JetApi : IJetApi + { + #region Session Parameters + /// + /// Sets a parameter on the provided session state, used for the lifetime of this session or until reset. + /// + /// The session to set the parameter on. + /// The ID of the session parameter to set. + /// An operation context to set. + /// An error code. + public int JetGetSessionParameter( + JET_SESID sesid, + JET_sesparam sesparamid, + out JET_OPERATIONCONTEXT operationContext) + { + TraceFunctionCall(); + this.CheckSupportsWindows10Features("JetGetSessionParameter"); + int err; + int actualDataSize; + + NATIVE_OPERATIONCONTEXT nativeContext = new NATIVE_OPERATIONCONTEXT(); + int dataSize = Marshal.SizeOf(nativeContext); + + err = NativeMethods.JetGetSessionParameter( + sesid.Value, + (uint)sesparamid, + out nativeContext, + dataSize, + out actualDataSize); + + if (err >= (int)JET_err.Success) + { + if (actualDataSize != dataSize) + { + throw new ArgumentException( + string.Format( + CultureInfo.InvariantCulture, + "Bad return value. Unexpected data size returned. Expected {0}, but received {1}.", + dataSize, + actualDataSize), + "sesparamid"); + } + } + + operationContext = new JET_OPERATIONCONTEXT(ref nativeContext); + + return Err(err); + } + + /// + /// Sets a parameter on the provided session state, used for the lifetime of this session or until reset. + /// + /// The session to set the parameter on. + /// The ID of the session parameter to set. + /// An operation context to set. + /// An error code. + public int JetSetSessionParameter( + JET_SESID sesid, + JET_sesparam sesparamid, + JET_OPERATIONCONTEXT operationContext) + { + TraceFunctionCall(); + this.CheckSupportsWindows10Features("JetSetSessionParameter"); + int err; + + NATIVE_OPERATIONCONTEXT nativeContext = operationContext.GetNativeOperationContext(); + int dataSize = Marshal.SizeOf(nativeContext); + + err = NativeMethods.JetSetSessionParameter( + sesid.Value, + (uint)sesparamid, + ref nativeContext, + checked((int)dataSize)); + + return Err(err); + } + #endregion + + #region Sessions + + /// + /// 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.. + /// + /// An error code if the operation fails. + public int JetGetThreadStats(out JET_THREADSTATS2 threadstats) + { + TraceFunctionCall(); + this.CheckSupportsVistaFeatures("JetGetThreadStats"); + + // To speed up the interop we use unsafe code to avoid initializing + // the out parameter. We just call the interop code. + unsafe + { + fixed (JET_THREADSTATS2* rawJetThreadstats = &threadstats) + { + return Err(NativeMethods.JetGetThreadStats(rawJetThreadstats, checked((uint)JET_THREADSTATS2.Size))); + } + } + } + + #endregion + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/Windows10NativeMethods.cs b/WelsonJS.Toolkit/EsentInterop/Windows10NativeMethods.cs new file mode 100644 index 0000000..610cddc --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/Windows10NativeMethods.cs @@ -0,0 +1,40 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop.Implementation +{ + using System; + using System.Runtime.InteropServices; + using Microsoft.Isam.Esent.Interop.Windows10; + + /// + /// Native interop for Windows10 functions in ese.dll. + /// + internal static partial class NativeMethods + { + #region Sessions + + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetSetSessionParameter( + IntPtr sesid, + uint sesparamid, + ref NATIVE_OPERATIONCONTEXT data, + int dataSize); + + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetGetSessionParameter( + IntPtr sesid, + uint sesparamid, + out NATIVE_OPERATIONCONTEXT data, + int dataSize, + out int actualDataSize); + + [DllImport(EsentDll, ExactSpelling = true)] + public static unsafe extern int JetGetThreadStats(JET_THREADSTATS2* pvResult, uint cbMax); + + #endregion + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/Windows10Param.cs b/WelsonJS.Toolkit/EsentInterop/Windows10Param.cs new file mode 100644 index 0000000..d0a7732 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/Windows10Param.cs @@ -0,0 +1,20 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop.Windows10 +{ + /// + /// System parameters that were introduced in Windows 10. + /// + public static class Windows10Param + { + /// + /// This allows the client to specify a registry path preceded by a reg: to optionally configure + /// loading or overriding parameters from the registry. + /// + public const JET_param ConfigStoreSpec = (JET_param)189; + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/Windows10Sesparam.cs b/WelsonJS.Toolkit/EsentInterop/Windows10Sesparam.cs new file mode 100644 index 0000000..36ea5ce --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/Windows10Sesparam.cs @@ -0,0 +1,33 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop.Windows10 +{ + using Microsoft.Isam.Esent.Interop.Windows8; + + /// + /// Values of that were introduced in Windows 10. + /// + /// + public static class Windows10Sesparam + { + /// + /// Gets the current number of nested levels of transactions begun. A value of zero indicates that + /// the session is not currently in a transaction. This parameter is read-only. + /// + public const JET_sesparam TransactionLevel = (JET_sesparam)4099; + + /// + /// A client context of type that the engine uses to track and trace operations (such as IOs). + /// + public const JET_sesparam OperationContext = (JET_sesparam)4100; + + /// + /// A 32-bit integer ID that is logged in traces and can be used by clients to correlate ESE actions with their activity. + /// + public const JET_sesparam CorrelationID = (JET_sesparam)4101; + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/Windows10Session.cs b/WelsonJS.Toolkit/EsentInterop/Windows10Session.cs new file mode 100644 index 0000000..b305e81 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/Windows10Session.cs @@ -0,0 +1,80 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop.Windows10 +{ + using Microsoft.Isam.Esent.Interop.Windows8; + + /// + /// An extension class to provide Values of that were introduced in Windows 10. + /// + /// + public static class Windows10Session + { + /// + /// Gets the current number of nested levels of transactions begun. A value of zero indicates that + /// the session is not currently in a transaction. This parameter is read-only. + /// + /// The to query. + /// The current transaction level of the specified database session. + public static int GetTransactionLevel(this Session session) + { + int output; + Windows8Api.JetGetSessionParameter(session.JetSesid, Windows10Sesparam.TransactionLevel, out output); + return output; + } + + /// + /// A client context of type that the engine uses to track + /// and trace operations (such as IOs). + /// + /// The to query. + /// The operation context of the specified database session. + public static JET_OPERATIONCONTEXT GetOperationContext(this Session session) + { + JET_OPERATIONCONTEXT output; + Windows10Api.JetGetSessionParameter(session.JetSesid, Windows10Sesparam.OperationContext, out output); + return output; + } + + /// + /// A client context of type that the engine uses to track + /// and trace operations (such as IOs). + /// + /// The to query. + /// The operation context to set. + public static void SetOperationContext( + this Session session, + JET_OPERATIONCONTEXT operationcontext) + { + Windows10Api.JetSetSessionParameter(session.JetSesid, Windows10Sesparam.OperationContext, operationcontext); + } + + /// + /// A 32-bit integer ID that is logged in traces and can be used by clients to + /// correlate ESE actions with their activity. + /// + /// The to query. + /// The corrlation identifer of the specified database session. + public static int GetCorrelationID(this Session session) + { + int output; + Windows8Api.JetGetSessionParameter(session.JetSesid, Windows10Sesparam.CorrelationID, out output); + return output; + } + + /// + /// A 32-bit integer ID that is logged in traces and can be used by clients to + /// correlate ESE actions with their activity. + /// + /// The to set. + /// The value to set. Internally, this is a 32-bit unsigned integer. + public static void SetCorrelationID(this Session session, int correlationId) + { + Windows8Api.JetSetSessionParameter(session.JetSesid, Windows10Sesparam.CorrelationID, correlationId); + } + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/Windows7Api.cs b/WelsonJS.Toolkit/EsentInterop/Windows7Api.cs new file mode 100644 index 0000000..7034fb9 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/Windows7Api.cs @@ -0,0 +1,93 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop.Windows7 +{ + /// + /// ESENT APIs that were first supported in Windows 7 (Windows Server 2008 R2). + /// + public static class Windows7Api + { +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + /// + /// Crash dump options for Watson. + /// + /// Crash dump options. + public static void JetConfigureProcessForCrashDump(CrashDumpGrbit grbit) + { + Api.Check(Api.Impl.JetConfigureProcessForCrashDump(grbit)); + } +#endif // !MANAGEDESENT_ON_WSA + + /// + /// If the records with the specified keys are not in the buffer cache + /// then start asynchronous reads to bring the records into the database + /// buffer cache. + /// + /// The session to use. + /// The table to issue the prereads against. + /// + /// The keys to preread. The keys must be sorted. + /// + /// The lengths of the keys to preread. + /// + /// The index of the first key in the keys array to read. + /// + /// + /// The maximum number of keys to preread. + /// + /// + /// Returns the number of keys to actually preread. + /// + /// + /// Preread options. Used to specify the direction of the preread. + /// + public static void JetPrereadKeys( + JET_SESID sesid, + JET_TABLEID tableid, + byte[][] keys, + int[] keyLengths, + int keyIndex, + int keyCount, + out int keysPreread, + PrereadKeysGrbit grbit) + { + Api.Check(Api.Impl.JetPrereadKeys(sesid, tableid, keys, keyLengths, keyIndex, keyCount, out keysPreread, grbit)); + } + + /// + /// If the records with the specified keys are not in the buffer cache + /// then start asynchronous reads to bring the records into the database + /// buffer cache. + /// + /// The session to use. + /// The table to issue the prereads against. + /// + /// The keys to preread. The keys must be sorted. + /// + /// The lengths of the keys to preread. + /// + /// The maximum number of keys to preread. + /// + /// + /// Returns the number of keys to actually preread. + /// + /// + /// Preread options. Used to specify the direction of the preread. + /// + public static void JetPrereadKeys( + JET_SESID sesid, + JET_TABLEID tableid, + byte[][] keys, + int[] keyLengths, + int keyCount, + out int keysPreread, + PrereadKeysGrbit grbit) + { + JetPrereadKeys(sesid, tableid, keys, keyLengths, 0, keyCount, out keysPreread, grbit); + } + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/Windows7ExceptionAction.cs b/WelsonJS.Toolkit/EsentInterop/Windows7ExceptionAction.cs new file mode 100644 index 0000000..c07f95a --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/Windows7ExceptionAction.cs @@ -0,0 +1,19 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop.Windows7 +{ + /// + /// Exception action that have been added to the Windows 7 version of ESENT. + /// + public static class Windows7ExceptionAction + { + /// + /// Introduced in Windows 7. Use the Windows RaiseFailFastException API to force a crash. + /// + internal const JET_ExceptionAction FailFast = (JET_ExceptionAction)0x00000004; + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/Windows7Grbits.cs b/WelsonJS.Toolkit/EsentInterop/Windows7Grbits.cs new file mode 100644 index 0000000..75bd7c3 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/Windows7Grbits.cs @@ -0,0 +1,168 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop.Windows7 +{ + using System; + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + /// + /// Options for . + /// + [Flags] + public enum CrashDumpGrbit + { + /// + /// Default options. + /// + None = 0, + + /// + /// Dump minimum includes . + /// + Minimum = 0x1, + + /// + /// Dump maximum includes . + /// + Maximum = 0x2, + + /// + /// CacheMinimum includes pages that are latched. + /// CacheMinimum includes pages that are used for memory. + /// CacheMinimum includes pages that are flagged with errors. + /// + CacheMinimum = 0x4, + + /// + /// Cache maximum includes cache minimum. + /// Cache maximum includes the entire cache image. + /// + CacheMaximum = 0x8, + + /// + /// Dump includes pages that are modified. + /// + CacheIncludeDirtyPages = 0x10, + + /// + /// Dump includes pages that contain valid data. + /// + CacheIncludeCachedPages = 0x20, + + /// + /// Dump includes pages that are corrupted (expensive to compute). + /// + CacheIncludeCorruptedPages = 0x40, + } +#endif // !MANAGEDESENT_ON_WSA + + /// + /// Options for . + /// + [Flags] + public enum PrereadKeysGrbit + { + /// + /// Preread forward. + /// + Forward = 0x1, + + /// + /// Preread backwards. + /// + Backwards = 0x2, + } + + /// + /// Grbits that have been added to the Windows 7 version of ESENT. + /// + public static class Windows7Grbits + { + /// + /// Compress data in the column, if possible. + /// + public const ColumndefGrbit ColumnCompressed = (ColumndefGrbit)0x80000; + + /// + /// Try to compress the data when storing it. + /// + public const SetColumnGrbit Compressed = (SetColumnGrbit)0x20000; + + /// + /// Don't compress the data when storing it. + /// + public const SetColumnGrbit Uncompressed = (SetColumnGrbit)0x10000; + + /// + /// Recover without error even if uncommitted logs have been lost. Set + /// the recovery waypoint with Windows7Param.WaypointLatency to enable + /// this type of recovery. + /// + public const InitGrbit ReplayIgnoreLostLogs = (InitGrbit)0x80; + + /// + /// Terminate without flushing the database cache. + /// + public const TermGrbit Dirty = (TermGrbit)0x8; + + /// + /// Permit only intrinsic LV's (so materialisation is not required simply + /// because a TT has an LV column). + /// + public const TempTableGrbit IntrinsicLVsOnly = (TempTableGrbit)0x80; + + /// + /// When enumerating column values only retrieve data that is present in + /// the record. This means that BLOB columns will not always be retrieved. + /// + public const EnumerateColumnsGrbit EnumerateInRecordOnly = (EnumerateColumnsGrbit)0x00200000; + + /// + /// Force a new logfile to be created. This option may be used even if + /// the session is not currently in a transaction. This option cannot + /// be used in combination with any other option. + /// + public const CommitTransactionGrbit ForceNewLog = (CommitTransactionGrbit)0x10; + +#if !MANAGEDESENT_ON_WSA + /// + /// No instances will be prepared by default. Instances must be added explicitly. + /// + public const SnapshotPrepareGrbit ExplicitPrepare = (SnapshotPrepareGrbit)0x8; +#endif // !MANAGEDESENT_ON_WSA + + /// + /// Hint that the sequential traversal will be in the forward direction. + /// + public const SetTableSequentialGrbit Forward = (SetTableSequentialGrbit)0x1; + + /// + /// While running Online Defragmentation, do not perform partial merges of pages. + /// + public const DefragGrbit NoPartialMerges = (DefragGrbit)0x80; + + /// + /// Defragment a single BTree. + /// + public const DefragGrbit DefragmentBTree = (DefragGrbit)0x100; + + /// + /// Hint that the sequential traversal will be in the backward direction. + /// + public const SetTableSequentialGrbit Backward = (SetTableSequentialGrbit)0x2; + + /// + /// The database engine will initiate automatic background database maintenance upon database attachment. + /// + public const AttachDatabaseGrbit EnableAttachDbBackgroundMaintenance = (AttachDatabaseGrbit)0x800; + + /// + /// The database engine will initiate automatic background database maintenance upon database creation. + /// + public const CreateDatabaseGrbit EnableCreateDbBackgroundMaintenance = (CreateDatabaseGrbit)0x800; + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/Windows7Idxinfo.cs b/WelsonJS.Toolkit/EsentInterop/Windows7Idxinfo.cs new file mode 100644 index 0000000..10360cb --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/Windows7Idxinfo.cs @@ -0,0 +1,34 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop.Windows7 +{ + using Win8 = Microsoft.Isam.Esent.Interop.Windows8; + + /// + /// Index info levels that have been added to the Windows 7 version of ESENT. + /// + /// + /// + public static class Windows7IdxInfo + { + /// + /// Introduced in Windows 7. Returns a structure suitable + /// for use by . + /// + /// Not currently implemented in this layer. + internal const JET_IdxInfo CreateIndex = (JET_IdxInfo)11; + + /// + /// Introduced in Windows 7. Returns a JET_INDEXCREATE2 structure (similar to structure, + /// but it contains a member called pSpacehints). + /// This structure is suitable + /// for use by . + /// + /// Not currently implemented in this layer. + internal const JET_IdxInfo CreateIndex2 = (JET_IdxInfo)12; + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/Windows7Param.cs b/WelsonJS.Toolkit/EsentInterop/Windows7Param.cs new file mode 100644 index 0000000..2126c84 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/Windows7Param.cs @@ -0,0 +1,81 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop.Windows7 +{ + /// + /// System parameters that have been added to the Windows 7 version of ESENT. + /// + public static class Windows7Param + { + /// + /// This parameter sets the number of logs that esent will defer database + /// flushes for. This can be used to increase database recoverability if + /// failures cause logfiles to be lost. + /// + public const JET_param WaypointLatency = (JET_param)153; + + /// + /// Turn on/off automatic sequential B-tree defragmentation tasks (On by + /// default, but also requires flags / .RetrieveHintTableScan* + /// to trigger on any given tables). + /// + public const JET_param DefragmentSequentialBTrees = (JET_param)160; + + /// + /// Determine how frequently B-tree density is checked (Note: currently not + /// implemented). + /// + public const JET_param DefragmentSequentialBTreesDensityCheckFrequency = (JET_param)161; + + /// + /// This parameter is used to retrieve the chunk size of long-value + /// (blob) data. Setting and retrieving data in multiples of this + /// size increases efficiency. + /// + public const JET_param LVChunkSizeMost = (JET_param)163; + + /// + /// Maximum number of bytes that can be grouped for a coalesced read operation. + /// + public const JET_param MaxCoalesceReadSize = (JET_param)164; + + /// + /// Maximum number of bytes that can be grouped for a coalesced write operation. + /// + public const JET_param MaxCoalesceWriteSize = (JET_param)165; + + /// + /// Maximum number of bytes that can be gapped for a coalesced read IO operation. + /// + public const JET_param MaxCoalesceReadGapSize = (JET_param)166; + + /// + /// Maximum number of bytes that can be gapped for a coalesced write IO operation. + /// + public const JET_param MaxCoalesceWriteGapSize = (JET_param)167; + + /// + /// Enable Database Maintenance during recovery. + /// + public const JET_param EnableDbScanInRecovery = (JET_param)169; + + /// + /// Throttling of the database scan, in milliseconds. + /// + public const JET_param DbScanThrottle = (JET_param)170; + + /// + /// Minimum interval to repeat the database scan, in seconds. + /// + public const JET_param DbScanIntervalMinSec = (JET_param)171; + + /// + /// Maximum interval to allow the database scan to finish, in seconds. + /// + public const JET_param DbScanIntervalMaxSec = (JET_param)172; + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/Windows81DbInfo.cs b/WelsonJS.Toolkit/EsentInterop/Windows81DbInfo.cs new file mode 100644 index 0000000..2e30591 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/Windows81DbInfo.cs @@ -0,0 +1,24 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop.Windows81 +{ + using System; + + /// + /// ColumnDatabase info levels that have been added to the Windows 8.1 version of ESENT. + /// + public static class Windows81DbInfo + { + /// + /// Introduced in Windows 8.1. + /// Returns the filesize of the database that is allocated by the operating system, in pages. + /// This may be smaller than if the file system supports + /// compressed or sparse files (Int32). + /// + public const JET_DbInfo FilesizeOnDisk = (JET_DbInfo)21; + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/Windows81Grbits.cs b/WelsonJS.Toolkit/EsentInterop/Windows81Grbits.cs new file mode 100644 index 0000000..0783f19 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/Windows81Grbits.cs @@ -0,0 +1,58 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop.Windows81 +{ + using System; + + using Microsoft.Isam.Esent.Interop.Windows8; + + /// + /// Options for . + /// + [Flags] + public enum ShrinkDatabaseGrbit + { + /// + /// Does not reduce the size of the database during normal operations. + /// + Off = 0x0, + + /// + /// Turns on the database shrinking functionality. If this parameter is not + /// set, then will be unable to reclaim + /// space to the file system. + /// Uses the file system's Sparse Files feature to release space + /// in the middle of a file. When enough rows or tables get free up by + /// the Version Store Cleanup task, and space is reclaimed, the database + /// engine will attempt to return it to the file system, via sparse files. + /// Sparse files are currently only available on NTFS and ReFS file systems. + /// + On = 0x1, + + /// + /// After space is release from a table to a the root Available Extent, the database + /// engine will attempt to release the space back to the file system. This parameter + /// requires that is also specified. + /// + Realtime = 0x2, + } + + /// + /// Options that have been introduced in Windows 8.1. + /// + public static class Windows81Grbits + { + /// + /// Only shrink the database to the desired size. + /// If the resize call would grow the database, do nothing. + /// In order to use this functionality, + /// must be set to . Otherwise, an exception may + /// be thrown. + /// + public const ResizeDatabaseGrbit OnlyShrink = (ResizeDatabaseGrbit)0x2; + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/Windows81InstanceParameters.cs b/WelsonJS.Toolkit/EsentInterop/Windows81InstanceParameters.cs new file mode 100644 index 0000000..1bf8ee7 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/Windows81InstanceParameters.cs @@ -0,0 +1,36 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using Microsoft.Isam.Esent.Interop.Windows81; + + /// + /// This class provides static properties to set and get + /// per-instance ESENT system parameters. + /// + public partial class InstanceParameters + { + /// + /// Gets or sets whether to free space back to the OS after deleting data. This may free space + /// in the middle of files (done in the units of database extents). This uses Sparse Files, + /// which is available on NTFS and ReFS (not FAT). The exact method of releasing space is an + /// implementation detail and is subject to change. + /// + public ShrinkDatabaseGrbit EnableShrinkDatabase + { + get + { + return (ShrinkDatabaseGrbit)this.GetIntegerParameter(Windows81Param.EnableShrinkDatabase); + } + + set + { + this.SetIntegerParameter(Windows81Param.EnableShrinkDatabase, (int)value); + } + } + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/Windows81Param.cs b/WelsonJS.Toolkit/EsentInterop/Windows81Param.cs new file mode 100644 index 0000000..9d081a6 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/Windows81Param.cs @@ -0,0 +1,22 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop.Windows81 +{ + /// + /// System parameters that were introduced in Windows 8.1. + /// + public static class Windows81Param + { + /// + /// Whether to free space back to the OS after deleting data. This may free space + /// in the middle of files (done in the units of database extents). This uses Sparse Files, + /// which is available on NTFS and ReFS (not FAT). The exact method of releasing space is an + /// implementation detail and is subject to change. + /// + public const JET_param EnableShrinkDatabase = (JET_param)184; + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/Windows8Api.cs b/WelsonJS.Toolkit/EsentInterop/Windows8Api.cs new file mode 100644 index 0000000..108c53a --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/Windows8Api.cs @@ -0,0 +1,349 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop.Windows8 +{ + using System; + using Microsoft.Isam.Esent.Interop.Vista; + using Win81 = Microsoft.Isam.Esent.Interop.Windows81; + + /// + /// Api calls introduced in Windows 8. + /// + public static class Windows8Api + { + #region Init / Term + + /// + /// Prepares an instance for termination. Can also be used to resume a previous quiescing. + /// + /// The (running) instance to use. + /// The options to stop or resume the instance. + public static void JetStopServiceInstance2( + JET_INSTANCE instance, + StopServiceGrbit grbit) + { + Api.Check(Api.Impl.JetStopServiceInstance2(instance, grbit)); + } + + #endregion + + #region Transactions + /// + /// Causes a session to enter a transaction or create a new save point in an existing + /// transaction. + /// + /// The session to begin the transaction for. + /// An optional identifier supplied by the user for identifying the transaction. + /// Transaction options. + /// Introduced in Windows 8. + public static void JetBeginTransaction3(JET_SESID sesid, long userTransactionId, BeginTransactionGrbit grbit) + { + Api.Check(Api.Impl.JetBeginTransaction3(sesid, userTransactionId, grbit)); + } + + /// + /// Commits the changes made to the state of the database during the current save point + /// and migrates them to the previous save point. If the outermost save point is committed + /// then the changes made during that save point will be committed to the state of the + /// database and the session will exit the transaction. + /// + /// The session to commit the transaction for. + /// Commit options. + /// Duration to commit lazy transaction. + /// Commit-id associated with this commit record. + public static void JetCommitTransaction2( + JET_SESID sesid, + CommitTransactionGrbit grbit, + TimeSpan durableCommit, + out JET_COMMIT_ID commitId) + { + Api.Check(Api.Impl.JetCommitTransaction2(sesid, grbit, durableCommit, out commitId)); + } + + #endregion + + /// + /// Gets extended information about an error. + /// + /// The error code about which to retrieve information. + /// Information about the specified error code. + public static void JetGetErrorInfo( + JET_err error, + out JET_ERRINFOBASIC errinfo) + { + Api.Check(Api.Impl.JetGetErrorInfo(error, out errinfo)); + } + + /// + /// Resizes a currently open database. Windows 8: Only supports growing a database file. + /// Windows 8.1: When is set to + /// , and if the + /// file system supports Sparse Files, then space may be freed up in the middle of the + /// file. + /// + /// + /// Many APIs return the logical size of the file, not how many bytes it takes up on disk. + /// Win32's GetCompressedFileSize returns the correct on-disk size. + /// + /// returns the on-disk size when used with + /// + /// + /// The session to use. + /// The database to grow. + /// The desired size of the database, in pages. + /// The size of the database, in pages, after the call. + /// Resize options. + public static void JetResizeDatabase( + JET_SESID sesid, + JET_DBID dbid, + int desiredPages, + out int actualPages, + ResizeDatabaseGrbit grbit) + { + Api.Check(Api.Impl.JetResizeDatabase(sesid, dbid, desiredPages, out actualPages, grbit)); + } + + #region DDL + /// + /// Creates indexes over data in an ESE database. + /// + /// + /// When creating multiple indexes (i.e. with numIndexCreates + /// greater than 1) this method MUST be called + /// outside of any transactions and with exclusive access to the + /// table. The JET_TABLEID returned by "Api.JetCreateTable" + /// will have exlusive access or the table can be opened for + /// exclusive access by passing + /// to . + /// + /// The session to use. + /// The table to create the index on. + /// Array of objects describing the indexes to be created. + /// Number of index description objects. + public static void JetCreateIndex4( + JET_SESID sesid, + JET_TABLEID tableid, + JET_INDEXCREATE[] indexcreates, + int numIndexCreates) + { + Api.Check(Api.Impl.JetCreateIndex4(sesid, tableid, indexcreates, numIndexCreates)); + } + + /// + /// 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 + /// , + /// "Api.JetOpenTempTable2", + /// . + /// . + /// + /// + /// 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 JetOpenTemporaryTable2(JET_SESID sesid, JET_OPENTEMPORARYTABLE temporarytable) + { + Api.Check(Api.Impl.JetOpenTemporaryTable2(sesid, temporarytable)); + } + + /// + /// Creates a table, adds columns, and indices on that table. + /// + /// + /// The session to use. + /// The database to which to add the new table. + /// Object describing the table to create. + /// + public static void JetCreateTableColumnIndex4( + JET_SESID sesid, + JET_DBID dbid, + JET_TABLECREATE tablecreate) + { + Api.Check(Api.Impl.JetCreateTableColumnIndex4(sesid, dbid, tablecreate)); + } + #endregion + + #region Session Parameters + + /// + /// Gets a parameter on the provided session state, used for the lifetime of this session or until reset. + /// + /// The session to set the parameter on. + /// The ID of the session parameter to set, see + /// and . + /// A 32-bit integer to retrieve. + public static void JetGetSessionParameter( + JET_SESID sesid, + JET_sesparam sesparamid, + out int value) + { + Api.Check(Api.Impl.JetGetSessionParameter(sesid, sesparamid, out value)); + } + + /// + /// Gets a parameter on the provided session state, used for the lifetime of this session or until reset. + /// + /// The session to set the parameter on. + /// The ID of the session parameter to set, see + /// and . + /// A byte array to retrieve. + /// AThe length of the data array. + /// The actual size of the data field. + public static void JetGetSessionParameter( + JET_SESID sesid, + JET_sesparam sesparamid, + byte[] data, + int length, + out int actualDataSize) + { + Api.Check(Api.Impl.JetGetSessionParameter(sesid, sesparamid, data, length, out actualDataSize)); + } + + /// + /// Sets a parameter on the provided session state, used for the lifetime of this session or until reset. + /// + /// The session to set the parameter on. + /// The ID of the session parameter to set. + /// A 32-bit integer to set. + public static void JetSetSessionParameter(JET_SESID sesid, JET_sesparam sesparamid, int value) + { + Api.Check(Api.Impl.JetSetSessionParameter(sesid, sesparamid, value)); + } + + /// + /// Sets a parameter on the provided session state, used for the lifetime of this session or until reset. + /// + /// The session to set the parameter on. + /// The ID of the session parameter to set. + /// Data to set in this session parameter. + /// Size of the data provided. + public static void JetSetSessionParameter( + JET_SESID sesid, + JET_sesparam sesparamid, + byte[] data, + int dataSize) + { + Api.Check(Api.Impl.JetSetSessionParameter(sesid, sesparamid, data, dataSize)); + } + + #endregion + + #region Misc + + /// + /// If the records with the specified key ranges are not in the buffer + /// cache, then start asynchronous reads to bring the records into the + /// database buffer cache. + /// + /// The session to use. + /// The table to issue the prereads against. + /// The key ranges to preread. + /// The index of the first key range in the array to read. + /// The maximum number of key ranges to preread. + /// Returns the number of keys actually preread. + /// List of column ids for long value columns to preread. + /// Preread options. Used to specify the direction of the preread. + /// true if some preread done, false otherwise. + public static bool JetTryPrereadIndexRanges( + JET_SESID sesid, + JET_TABLEID tableid, + JET_INDEX_RANGE[] indexRanges, + int rangeIndex, + int rangeCount, + out int rangesPreread, + JET_COLUMNID[] columnsPreread, + PrereadIndexRangesGrbit grbit) + { + JET_err err = (JET_err)Api.Impl.JetPrereadIndexRanges(sesid, tableid, indexRanges, rangeIndex, rangeCount, out rangesPreread, columnsPreread, grbit); + return err >= JET_err.Success; + } + + /// + /// If the records with the specified key ranges are not in the buffer + /// cache, then start asynchronous reads to bring the records into the + /// database buffer cache. + /// + /// The session to use. + /// The table to issue the prereads against. + /// The key ranges to preread. + /// The index of the first key range in the array to read. + /// The maximum number of key ranges to preread. + /// Returns the number of keys actually preread. + /// List of column ids for long value columns to preread. + /// Preread options. Used to specify the direction of the preread. + public static void JetPrereadIndexRanges( + JET_SESID sesid, + JET_TABLEID tableid, + JET_INDEX_RANGE[] indexRanges, + int rangeIndex, + int rangeCount, + out int rangesPreread, + JET_COLUMNID[] columnsPreread, + PrereadIndexRangesGrbit grbit) + { + Api.Check(Api.Impl.JetPrereadIndexRanges(sesid, tableid, indexRanges, rangeIndex, rangeCount, out rangesPreread, columnsPreread, grbit)); + } + + /// + /// If the records with the specified key ranges are not in the + /// buffer cache then start asynchronous reads to bring the records + /// into the database buffer cache. + /// + /// The session to use. + /// The table to issue the prereads against. + /// The start of key ranges to preread. + /// The lengths of the start keys to preread. + /// The end of key rangess to preread. + /// The lengths of the end keys to preread. + /// The index of the first key range in the array to read. + /// The maximum number of key ranges to preread. + /// Returns the number of keys actually preread. + /// List of column ids for long value columns to preread. + /// Preread options. Used to specify the direction of the preread. + public static void PrereadKeyRanges( + JET_SESID sesid, + JET_TABLEID tableid, + byte[][] keysStart, + int[] keyStartLengths, + byte[][] keysEnd, + int[] keyEndLengths, + int rangeIndex, + int rangeCount, + out int rangesPreread, + JET_COLUMNID[] columnsPreread, + PrereadIndexRangesGrbit grbit) + { + Api.Check(Api.Impl.JetPrereadKeyRanges(sesid, tableid, keysStart, keyStartLengths, keysEnd, keyEndLengths, rangeIndex, rangeCount, out rangesPreread, columnsPreread, grbit)); + } + + /// + /// Set an array of simple filters for . + /// + /// The session to use for the call. + /// The cursor to position. + /// Simple record filters. + /// Move options. + public static void JetSetCursorFilter(JET_SESID sesid, JET_TABLEID tableid, JET_INDEX_COLUMN[] filters, CursorFilterGrbit grbit) + { + Api.Check(Api.Impl.JetSetCursorFilter(sesid, tableid, filters, grbit)); + } + + #endregion + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/Windows8Grbits.cs b/WelsonJS.Toolkit/EsentInterop/Windows8Grbits.cs new file mode 100644 index 0000000..5437652 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/Windows8Grbits.cs @@ -0,0 +1,170 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop.Windows8 +{ + using System; + + /// + /// Options for . + /// + public enum ErrorInfoGrbit + { + /// + /// No option. + /// + None = 0, + } + + /// + /// Options for . + /// + /// + [Flags] + public enum ResizeDatabaseGrbit + { + /// + /// No option. + /// + None = 0, + + /// + /// Only grow the database. If the resize call would shrink the database, do nothing. + /// + OnlyGrow = 0x1, + } + + /// + /// Options passed to log flush callback. + /// + /// + [Flags] + public enum DurableCommitCallbackGrbit + { + /// + /// Default options. + /// + None = 0 + } + + /// + /// Options for . + /// + [Flags] + public enum PrereadIndexRangesGrbit + { + /// + /// Preread forward. + /// + Forward = 0x1, + + /// + /// Preread backwards. + /// + Backwards = 0x2, + + /// + /// Preread only first page of any long column. + /// + FirstPageOnly = 0x4, + + /// + /// Normalized key/bookmark provided instead of column value. + /// + NormalizedKey = 0x8, + } + + /// + /// Options for . + /// + [Flags] + public enum StopServiceGrbit + { + /// + /// Stops all ESE services for the specified instance. + /// + All = 0x00000000, + + /// + /// Stops restartable client specificed background maintenance tasks (B+ Tree Defrag). + /// + BackgroundUserTasks = 0x00000002, + + /// + /// Quiesces all dirty caches to disk. Asynchronous. Quiescing is cancelled if the + /// bit is called subsequently. + /// + QuiesceCaches = 0x00000004, + + /// + /// Resumes previously issued StopService operations, i.e. "restarts service". Can be combined + /// with above grbits to Resume specific services, or with 0x0 Resumes all previous stopped services. + /// + /// + /// Warning: This bit can only be used to resume JET_bitStopServiceBackground and JET_bitStopServiceQuiesceCaches, if you + /// did a JET_bitStopServiceAll or JET_bitStopServiceAPI, attempting to use JET_bitStopServiceResume will fail. + /// + Resume = int.MinValue, // 0x80000000 + } + + /// + /// Options passed while setting cursor filters. + /// + /// + [Flags] + public enum CursorFilterGrbit + { + /// + /// Default options. + /// + None = 0 + } + + /// + /// Options for . + /// + [Flags] + public enum JetIndexColumnGrbit + { + /// + /// Default options. + /// + None = 0, + + /// + /// Zero-length value (non-null). + /// + ZeroLength = 0x1, + } + + /// + /// System parameters that have been introduced in Windows 8. + /// + public static class Windows8Grbits + { + /// + /// Allows db to remain attached at the end of recovery (for faster + /// transition to running state). + /// + public const InitGrbit KeepDbAttachedAtEndOfRecovery = (InitGrbit)0x1000; + + /// + /// Purge database pages on attach. + /// + public const AttachDatabaseGrbit PurgeCacheOnAttach = (AttachDatabaseGrbit)0x1000; + + /// + /// Specifying this flag will change GUID sort order to .Net standard. + /// + public const CreateIndexGrbit IndexDotNetGuid = (CreateIndexGrbit)0x00040000; + + /// + /// This option requests that the temporary table sort columns of type + /// JET_coltypGUID according to .Net Guid sort order. + /// + public const TempTableGrbit TTDotNetGuid = (TempTableGrbit)0x100; + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/Windows8IJetApi.cs b/WelsonJS.Toolkit/EsentInterop/Windows8IJetApi.cs new file mode 100644 index 0000000..5022185 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/Windows8IJetApi.cs @@ -0,0 +1,248 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop.Implementation +{ + using System; + using Microsoft.Isam.Esent.Interop.Vista; + using Microsoft.Isam.Esent.Interop.Windows8; + + /// + /// This interface describes all the Windows8 methods which have a + /// P/Invoke implementation. Concrete instances of this interface provide + /// methods that call ESENT. + /// + internal partial interface IJetApi + { + #region Transactions + /// + /// Causes a session to enter a transaction or create a new save point in an existing + /// transaction. + /// + /// The session to begin the transaction for. + /// An optional identifier supplied by the user for identifying the transaction. + /// Transaction options. + /// An error if the call fails. + int JetBeginTransaction3(JET_SESID sesid, long userTransactionId, BeginTransactionGrbit grbit); + + /// + /// Commits the changes made to the state of the database during the current save point + /// and migrates them to the previous save point. If the outermost save point is committed + /// then the changes made during that save point will be committed to the state of the + /// database and the session will exit the transaction. + /// + /// The session to commit the transaction for. + /// Commit options. + /// Duration to commit lazy transaction. + /// Commit-id associated with this commit record. + /// An error if the call fails. + int JetCommitTransaction2( + JET_SESID sesid, + CommitTransactionGrbit grbit, + TimeSpan durableCommit, + out JET_COMMIT_ID commitId); + + #endregion + + /// + /// Gets extended information about an error. + /// + /// The error code about which to retrieve information. + /// Information about the specified error code. + /// An error code. + int JetGetErrorInfo( + JET_err error, + out JET_ERRINFOBASIC errinfo); + + /// + /// Resizes a currently open database. + /// + /// The session to use. + /// The database to grow. + /// The desired size of the database, in pages. + /// The size of the database, in pages, after the call. + /// Resize options. + /// An error code. + int JetResizeDatabase( + JET_SESID sesid, + JET_DBID dbid, + int desiredPages, + out int actualPages, + ResizeDatabaseGrbit grbit); + + #region DDL + /// + /// Creates indexes over data in an ESE database. + /// + /// The session to use. + /// The table to create the index on. + /// Array of objects describing the indexes to be created. + /// Number of index description objects. + /// An error code. + int JetCreateIndex4( + JET_SESID sesid, + JET_TABLEID tableid, + JET_INDEXCREATE[] indexcreates, + int numIndexCreates); + + /// + /// 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. + /// + /// 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. + /// + /// An error code. + int JetOpenTemporaryTable2(JET_SESID sesid, JET_OPENTEMPORARYTABLE temporarytable); + + /// + /// Creates a table, adds columns, and indices on that table. + /// + /// The session to use. + /// The database to which to add the new table. + /// Object describing the table to create. + /// An error if the call fails. + int JetCreateTableColumnIndex4( + JET_SESID sesid, + JET_DBID dbid, + JET_TABLECREATE tablecreate); + #endregion + + #region Session Parameters + /// + /// Gets a parameter on the provided session state, used for the lifetime of this session or until reset. + /// + /// The session to set the parameter on. + /// The ID of the session parameter to set, see + /// and . + /// A 32-bit integer to retrieve. + /// An error if the call fails. + int JetGetSessionParameter(JET_SESID sesid, JET_sesparam sesparamid, out int value); + + /// + /// Gets a parameter on the provided session state, used for the lifetime of this session or until reset. + /// + /// The session to set the parameter on. + /// The ID of the session parameter to set, see + /// and . + /// A byte array to retrieve. + /// AThe length of the data array. + /// The actual size of the data field. + /// An error if the call fails. + int JetGetSessionParameter( + JET_SESID sesid, + JET_sesparam sesparamid, + byte[] data, + int length, + out int actualDataSize); + + /// + /// Sets a parameter on the provided session state, used for the lifetime of this session or until reset. + /// + /// The session to set the parameter on. + /// The ID of the session parameter to set. + /// A 32-bit integer to set. + /// An error if the call fails. + int JetSetSessionParameter(JET_SESID sesid, JET_sesparam sesparamid, int value); + + /// + /// Sets a parameter on the provided session state, used for the lifetime of this session or until reset. + /// + /// The session to set the parameter on. + /// The ID of the session parameter to set. + /// Data to set in this session parameter. + /// Size of the data provided. + /// An error if the call fails. + int JetSetSessionParameter( + JET_SESID sesid, + JET_sesparam sesparamid, + byte[] data, + int dataSize); + + #endregion + + #region Misc + + /// + /// If the records with the specified key ranges are not in the buffer + /// cache, then start asynchronous reads to bring the records into the + /// database buffer cache. + /// + /// The session to use. + /// The table to issue the prereads against. + /// The key rangess to preread. + /// The index of the first key range in the array to read. + /// The maximum number of key ranges to preread. + /// Returns the number of keys actually preread. + /// List of column ids for long value columns to preread. + /// Preread options. Used to specify the direction of the preread. + /// + /// An error if the call fails. + /// + int JetPrereadIndexRanges( + JET_SESID sesid, + JET_TABLEID tableid, + JET_INDEX_RANGE[] indexRanges, + int rangeIndex, + int rangeCount, + out int rangesPreread, + JET_COLUMNID[] columnsPreread, + PrereadIndexRangesGrbit grbit); + + /// + /// If the records with the specified key ranges are not in the + /// buffer cache then start asynchronous reads to bring the records + /// into the database buffer cache. + /// + /// The session to use. + /// The table to issue the prereads against. + /// The start of key ranges to preread. + /// The lengths of the start keys to preread. + /// The end of key rangess to preread. + /// The lengths of the end keys to preread. + /// The index of the first key range in the array to read. + /// The maximum number of key ranges to preread. + /// Returns the number of keys actually preread. + /// List of column ids for long value columns to preread. + /// Preread options. Used to specify the direction of the preread. + /// An error or warning. + int JetPrereadKeyRanges( + JET_SESID sesid, + JET_TABLEID tableid, + byte[][] keysStart, + int[] keyStartLengths, + byte[][] keysEnd, + int[] keyEndLengths, + int rangeIndex, + int rangeCount, + out int rangesPreread, + JET_COLUMNID[] columnsPreread, + PrereadIndexRangesGrbit grbit); + + /// + /// Set an array of simple filters for + /// + /// The session to use for the call. + /// The cursor to position. + /// Simple record filters. + /// Move options. + /// An error if the call fails. + int JetSetCursorFilter( + JET_SESID sesid, + JET_TABLEID tableid, + JET_INDEX_COLUMN[] filters, + CursorFilterGrbit grbit); + + #endregion + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/Windows8IdxInfo.cs b/WelsonJS.Toolkit/EsentInterop/Windows8IdxInfo.cs new file mode 100644 index 0000000..f57fd7d --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/Windows8IdxInfo.cs @@ -0,0 +1,32 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop.Windows8 +{ + using Win7 = Microsoft.Isam.Esent.Interop.Windows7; + + /// + /// Index info levels that have been added to the Windows 8 version of ESENT. + /// + /// + /// + public static class Windows8IdxInfo + { + /// + /// Introduced in Windows 8. Returns a JET_INDEXCREATE3 structure. This is similar to + /// structure, but it contains some additional + /// members, and it also uses a locale name in the + /// index definition, not an LCID. + /// The returned object is suitable for use by . + /// + public const JET_IdxInfo InfoCreateIndex3 = (JET_IdxInfo)13; + + /// + /// Introduced in Windows 8. Returns the locale name of the given index. + /// + public const JET_IdxInfo LocaleName = (JET_IdxInfo)14; + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/Windows8InstanceParameters.cs b/WelsonJS.Toolkit/EsentInterop/Windows8InstanceParameters.cs new file mode 100644 index 0000000..7482fc7 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/Windows8InstanceParameters.cs @@ -0,0 +1,214 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Runtime.InteropServices; + using Microsoft.Isam.Esent.Interop.Windows7; + using Microsoft.Isam.Esent.Interop.Windows8; + + /// + /// This class provides static properties to set and get + /// per-instance ESENT system parameters. + /// + public partial class InstanceParameters + { + /// + /// Gets or sets the percentage of version store that can be used by oldest transaction + /// before (default = 100). + /// + public int MaxTransactionSize + { + get + { + return this.GetIntegerParameter(Windows8Param.MaxTransactionSize); + } + + set + { + this.SetIntegerParameter(Windows8Param.MaxTransactionSize, value); + } + } + + /// + /// Gets or sets a value indicating whether Database Maintenance should run during recovery. + /// + public int EnableDbScanInRecovery + { + get + { + return this.GetIntegerParameter(Windows7Param.EnableDbScanInRecovery); + } + + set + { + this.SetIntegerParameter(Windows7Param.EnableDbScanInRecovery, value); + } + } + + /// + /// Gets or sets a value indicating whether database Maintenance + /// serialization is enabled for databases sharing the same disk. + /// + public bool EnableDBScanSerialization + { + get + { + return this.GetBoolParameter(Windows8Param.EnableDBScanSerialization); + } + + set + { + this.SetBoolParameter(Windows8Param.EnableDBScanSerialization, value); + } + } + + /// + /// Gets or sets the throttling of the database scan, in milliseconds. + /// + public int DbScanThrottle + { + get + { + return this.GetIntegerParameter(Windows7Param.DbScanThrottle); + } + + set + { + this.SetIntegerParameter(Windows7Param.DbScanThrottle, value); + } + } + + /// + /// Gets or sets the minimum interval to repeat the database scan, in seconds. + /// + public int DbScanIntervalMinSec + { + get + { + return this.GetIntegerParameter(Windows7Param.DbScanIntervalMinSec); + } + + set + { + this.SetIntegerParameter(Windows7Param.DbScanIntervalMinSec, value); + } + } + + /// + /// Gets or sets the maximum interval to allow the database scan to finish, in seconds. + /// + public int DbScanIntervalMaxSec + { + get + { + return this.GetIntegerParameter(Windows7Param.DbScanIntervalMaxSec); + } + + set + { + this.SetIntegerParameter(Windows7Param.DbScanIntervalMaxSec, value); + } + } + + /// + /// Gets or sets the per-instance property for relative cache priorities (default = 100). + /// + public int CachePriority + { + get + { + return this.GetIntegerParameter(Windows8Param.CachePriority); + } + + set + { + this.SetIntegerParameter(Windows8Param.CachePriority, value); + } + } + + /// + /// Gets or sets the maximum number of I/O operations dispatched for a given purpose. + /// + public int PrereadIOMax + { + get + { + return this.GetIntegerParameter(Windows8Param.PrereadIOMax); + } + + set + { + this.SetIntegerParameter(Windows8Param.PrereadIOMax, value); + } + } + + /// + /// Gets the callback for log flush. + /// + /// The delegate that's called for log flush. + internal NATIVE_JET_PFNDURABLECOMMITCALLBACK GetDurableCommitCallback() + { + NATIVE_JET_PFNDURABLECOMMITCALLBACK pfndurablecommit = null; + + IntPtr rawValue = this.GetIntPtrParameter(Windows8Param.DurableCommitCallback); + if (rawValue != IntPtr.Zero) + { + pfndurablecommit = (NATIVE_JET_PFNDURABLECOMMITCALLBACK)Marshal.GetDelegateForFunctionPointer(rawValue, typeof(NATIVE_JET_PFNDURABLECOMMITCALLBACK)); + } + + return pfndurablecommit; + } + + /// + /// Sets the callback for log flush. + /// It is the caller's responsibility to hold a reference to the delegate + /// so that it doesn't get GC'ed. + /// + /// + /// The callback. + /// + internal void SetDurableCommitCallback( + NATIVE_JET_PFNDURABLECOMMITCALLBACK callback) + { + IntPtr nativeDelegate; + if (callback != null) + { + nativeDelegate = Marshal.GetFunctionPointerForDelegate(callback); + } + else + { + nativeDelegate = IntPtr.Zero; + } + + this.SetIntPtrParameter(Windows8Param.DurableCommitCallback, nativeDelegate); + } + + /// + /// Get a system parameter which is an IntPtr. + /// + /// The parameter to get. + /// The value of the parameter. + private IntPtr GetIntPtrParameter(JET_param param) + { + IntPtr value = IntPtr.Zero; + string ignored; + Api.JetGetSystemParameter(this.instance, this.sesid, param, ref value, out ignored, 0); + return value; + } + + /// + /// Set a system parameter which is an IntPtr. + /// + /// The parameter to set. + /// The value to set. + private void SetIntPtrParameter(JET_param param, IntPtr value) + { + Api.JetSetSystemParameter(this.instance, this.sesid, param, value, null); + } + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/Windows8JetApi.cs b/WelsonJS.Toolkit/EsentInterop/Windows8JetApi.cs new file mode 100644 index 0000000..9c18582 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/Windows8JetApi.cs @@ -0,0 +1,833 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop.Implementation +{ + using System; + using System.Collections.Generic; + using System.Globalization; + using System.Runtime.InteropServices; + using Microsoft.Isam.Esent.Interop.Vista; + using Microsoft.Isam.Esent.Interop.Windows8; + + /// + /// Windows8 calls to the ESENT interop layer. These calls take the managed types (e.g. JET_SESID) and + /// return errors. + /// + internal sealed partial class JetApi : IJetApi + { + #region Transactions + /// + /// Causes a session to enter a transaction or create a new save point in an existing + /// transaction. + /// + /// The session to begin the transaction for. + /// An optional identifier supplied by the user for identifying the transaction. + /// Transaction options. + /// An error if the call fails. + public int JetBeginTransaction3(JET_SESID sesid, long userTransactionId, BeginTransactionGrbit grbit) + { + TraceFunctionCall(); + return Err(NativeMethods.JetBeginTransaction3(sesid.Value, userTransactionId, unchecked((uint)grbit))); + } + + /// + /// Commits the changes made to the state of the database during the current save point + /// and migrates them to the previous save point. If the outermost save point is committed + /// then the changes made during that save point will be committed to the state of the + /// database and the session will exit the transaction. + /// + /// The session to commit the transaction for. + /// Commit options. + /// Duration to commit lazy transaction. + /// Commit-id associated with this commit record. + /// An error if the call fails. + public int JetCommitTransaction2(JET_SESID sesid, CommitTransactionGrbit grbit, TimeSpan durableCommit, out JET_COMMIT_ID commitId) + { + TraceFunctionCall(); + this.CheckSupportsWindows8Features("JetCommitTransaction2"); + int err; + uint cmsecDurableCommit = (uint)durableCommit.TotalMilliseconds; + + NATIVE_COMMIT_ID nativeCommitId = new NATIVE_COMMIT_ID(); + unsafe + { + err = Err(NativeMethods.JetCommitTransaction2(sesid.Value, unchecked((uint)grbit), cmsecDurableCommit, ref nativeCommitId)); + } + + commitId = new JET_COMMIT_ID(nativeCommitId); + + return err; + } + + #endregion + + /// + /// Gets extended information about an error. + /// + /// The error code about which to retrieve information. + /// Information about the specified error code. + /// An error code. + public int JetGetErrorInfo( + JET_err error, + out JET_ERRINFOBASIC errinfo) + { + TraceFunctionCall(); + this.CheckSupportsWindows8Features("JetGetErrorInfo"); + + NATIVE_ERRINFOBASIC nativeErrinfobasic = new NATIVE_ERRINFOBASIC(); + errinfo = new JET_ERRINFOBASIC(); + + nativeErrinfobasic.cbStruct = checked((uint)Marshal.SizeOf(typeof(NATIVE_ERRINFOBASIC))); + int nativeErr = (int)error; + + int err = Implementation.NativeMethods.JetGetErrorInfoW( + ref nativeErr, + ref nativeErrinfobasic, + nativeErrinfobasic.cbStruct, + (uint)JET_ErrorInfo.SpecificErr, + (uint)ErrorInfoGrbit.None); + errinfo.SetFromNative(ref nativeErrinfobasic); + + return err; + } + + /// + /// Resizes a currently open database. + /// + /// The session to use. + /// The database to grow. + /// The desired size of the database, in pages. + /// The size of the database, in pages, after the call. + /// Resize options. + /// An error code. + public int JetResizeDatabase( + JET_SESID sesid, + JET_DBID dbid, + int desiredPages, + out int actualPages, + ResizeDatabaseGrbit grbit) + { + TraceFunctionCall(); + this.CheckSupportsWindows8Features("JetResizeDatabase"); + CheckNotNegative(desiredPages, "desiredPages"); + + uint actualPagesNative = 0; + int err = Err(NativeMethods.JetResizeDatabase( + sesid.Value, dbid.Value, checked((uint)desiredPages), out actualPagesNative, (uint)grbit)); + actualPages = checked((int)actualPagesNative); + return err; + } + + /// + /// Creates indexes over data in an ESE database. + /// + /// The session to use. + /// The table to create the index on. + /// Array of objects describing the indexes to be created. + /// Number of index description objects. + /// + /// + /// and + /// are very similar, and appear to take the same arguments. The difference is in the + /// implementation. JetCreateIndex2 uses LCIDs for Unicode indices (e.g. 1033), while + /// JetCreateIndex4 uses Locale Names (e.g. "en-US" or "de-DE". LCIDs are older, and not as well + /// supported in newer version of windows. + /// + /// + /// An error code. + /// + /// + public int JetCreateIndex4( + JET_SESID sesid, + JET_TABLEID tableid, + JET_INDEXCREATE[] indexcreates, + int numIndexCreates) + { + TraceFunctionCall(); + this.CheckSupportsWindows8Features("JetCreateIndex4"); + CheckNotNull(indexcreates, "indexcreates"); + CheckNotNegative(numIndexCreates, "numIndexCreates"); + if (numIndexCreates > indexcreates.Length) + { + throw new ArgumentOutOfRangeException( + "numIndexCreates", numIndexCreates, "numIndexCreates is larger than the number of indexes passed in"); + } + + return CreateIndexes3(sesid, tableid, indexcreates, numIndexCreates); + } + + /// + /// 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. + /// + /// 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. + /// + /// An error code. + public int JetOpenTemporaryTable2(JET_SESID sesid, JET_OPENTEMPORARYTABLE temporarytable) + { + TraceFunctionCall(); + this.CheckSupportsWindows8Features("JetOpenTemporaryTable2"); + CheckNotNull(temporarytable, "temporarytable"); + + NATIVE_OPENTEMPORARYTABLE2 nativetemporarytable = temporarytable.GetNativeOpenTemporaryTable2(); + var nativecolumnids = new uint[nativetemporarytable.ccolumn]; + NATIVE_COLUMNDEF[] nativecolumndefs = GetNativecolumndefs(temporarytable.prgcolumndef, temporarytable.ccolumn); + unsafe + { + using (var gchandlecollection = new GCHandleCollection()) + { + // Pin memory + nativetemporarytable.prgcolumndef = (NATIVE_COLUMNDEF*)gchandlecollection.Add(nativecolumndefs); + nativetemporarytable.rgcolumnid = (uint*)gchandlecollection.Add(nativecolumnids); + if (null != temporarytable.pidxunicode) + { + NATIVE_UNICODEINDEX2 unicode = temporarytable.pidxunicode.GetNativeUnicodeIndex2(); + unicode.szLocaleName = gchandlecollection.Add(Util.ConvertToNullTerminatedUnicodeByteArray(temporarytable.pidxunicode.GetEffectiveLocaleName())); + nativetemporarytable.pidxunicode = (NATIVE_UNICODEINDEX2*)gchandlecollection.Add(unicode); + } + + // Call the interop method + int err = Err(NativeMethods.JetOpenTemporaryTable2(sesid.Value, ref nativetemporarytable)); + + // Convert the return values + SetColumnids(temporarytable.prgcolumndef, temporarytable.prgcolumnid, nativecolumnids, temporarytable.ccolumn); + temporarytable.tableid = new JET_TABLEID { Value = nativetemporarytable.tableid }; + + return err; + } + } + } + + /// + /// Creates a table, adds columns, and indices on that table. + /// + /// The session to use. + /// The database to which to add the new table. + /// Object describing the table to create. + /// An error if the call fails. + public int JetCreateTableColumnIndex4( + JET_SESID sesid, + JET_DBID dbid, + JET_TABLECREATE tablecreate) + { + TraceFunctionCall(); + this.CheckSupportsWindows8Features("JetCreateTableColumnIndex4"); + CheckNotNull(tablecreate, "tablecreate"); + + return CreateTableColumnIndex4(sesid, dbid, tablecreate); + } + + #region Session Parameters + + /// + /// Gets a parameter on the provided session state, used for the lifetime of this session or until reset. + /// + /// The session to set the parameter on. + /// The ID of the session parameter to set, see + /// and . + /// A 32-bit integer to retrieve. + /// An error if the call fails. + public int JetGetSessionParameter( + JET_SESID sesid, + JET_sesparam sesparamid, + out int value) + { + TraceFunctionCall(); + this.CheckSupportsWindows8Features("JetGetSessionParameter"); + int err; + + int actualDataSize; + err = NativeMethods.JetGetSessionParameter( + sesid.Value, + (uint)sesparamid, + out value, + sizeof(int), + out actualDataSize); + + if (err >= (int)JET_err.Success) + { + if (actualDataSize != sizeof(int)) + { + throw new ArgumentException( + string.Format( + CultureInfo.InvariantCulture, + "Bad return value. Unexpected data size returned. Expected {0}, but received {1}.", + sizeof(int), + actualDataSize), + "sesparamid"); + } + } + + return Err(err); + } + + /// + /// Gets a parameter on the provided session state, used for the lifetime of this session or until reset. + /// + /// The session to set the parameter on. + /// The ID of the session parameter to set, see + /// and . + /// A byte array to retrieve. + /// AThe length of the data array. + /// The actual size of the data field. + /// An error if the call fails. + public int JetGetSessionParameter( + JET_SESID sesid, + JET_sesparam sesparamid, + byte[] data, + int length, + out int actualDataSize) + { + TraceFunctionCall(); + this.CheckSupportsWindows8Features("JetGetSessionParameter"); + CheckDataSize(data, length, "length"); + + int err; + + err = NativeMethods.JetGetSessionParameter( + sesid.Value, + (uint)sesparamid, + data, + length, + out actualDataSize); + + return Err(err); + } + + /// + /// Sets a parameter on the provided session state, used for the lifetime of this session or until reset. + /// + /// The session to set the parameter on. + /// The ID of the session parameter to set. + /// A 32-bit integer to set. + /// An error if the call fails. + public int JetSetSessionParameter( + JET_SESID sesid, + JET_sesparam sesparamid, + int valueToSet) + { + TraceFunctionCall(); + this.CheckSupportsWindows8Features("JetSetSessionParameter"); + int err; + + err = NativeMethods.JetSetSessionParameter(sesid.Value, (uint)sesparamid, ref valueToSet, sizeof(int)); + + return Err(err); + } + + /// + /// Sets a parameter on the provided session state, used for the lifetime of this session or until reset. + /// + /// The session to set the parameter on. + /// The ID of the session parameter to set. + /// Data to set in this session parameter. + /// Size of the data provided. + /// An error if the call fails. + public int JetSetSessionParameter( + JET_SESID sesid, + JET_sesparam sesparamid, + byte[] data, + int dataSize) + { + TraceFunctionCall(); + this.CheckSupportsWindows8Features("JetSetSessionParameter"); + CheckNotNegative(dataSize, "dataSize"); + CheckDataSize(data, dataSize, "dataSize"); + + int err; + + err = NativeMethods.JetSetSessionParameter(sesid.Value, (uint)sesparamid, data, dataSize); + + return Err(err); + } + + #endregion + + #region JetGetIndexInfo overloads + /// + /// Retrieves information about indexes on a table. + /// + /// The session to use. + /// The database to use. + /// The name of the table to retrieve index information about. + /// The name of the index to retrieve information about. + /// Filled in with information about indexes on the table. + /// The type of information to retrieve. + /// An error if the call fails. + public int JetGetIndexInfo( + JET_SESID sesid, + JET_DBID dbid, + string tablename, + string indexname, + out JET_INDEXCREATE result, + JET_IdxInfo infoLevel) + { + TraceFunctionCall(); + CheckNotNull(tablename, "tablename"); + int err; + + switch (infoLevel) + { + case Microsoft.Isam.Esent.Interop.Windows7.Windows7IdxInfo.CreateIndex: + case Microsoft.Isam.Esent.Interop.Windows7.Windows7IdxInfo.CreateIndex2: + case Microsoft.Isam.Esent.Interop.Windows8.Windows8IdxInfo.InfoCreateIndex3: + break; + default: + throw new ArgumentException(string.Format("{0} is not a valid value JET_IdxInfo for this JET_INDEXCREATE overload.")); + } + + if (this.Capabilities.SupportsWindows8Features) + { + { + int bufferSize = 10 * Marshal.SizeOf(typeof(NATIVE_INDEXCREATE3)); + IntPtr unmanagedBuffer = Marshal.AllocHGlobal(bufferSize); + try + { + // var nativeIndexcreate = new NATIVE_INDEXCREATE3(); + // nativeIndexcreate.cbStruct = checked((uint)bufferSize); + infoLevel = Windows8IdxInfo.InfoCreateIndex3; + + err = Err(NativeMethods.JetGetIndexInfoW( + sesid.Value, + dbid.Value, + tablename, + indexname, + unmanagedBuffer, + (uint)bufferSize, + (uint)infoLevel)); + + NATIVE_INDEXCREATE3 nativeIndexcreate = (NATIVE_INDEXCREATE3)Marshal.PtrToStructure(unmanagedBuffer, typeof(NATIVE_INDEXCREATE3)); + + result = new JET_INDEXCREATE(); + result.SetAllFromNativeIndexCreate(ref nativeIndexcreate); + } + finally + { + Marshal.FreeHGlobal(unmanagedBuffer); + } + } + } + else + { + result = null; + err = Err((int)JET_err.FeatureNotAvailable); + } + + return err; + } + + /// + /// Retrieves information about indexes on a table. + /// + /// The session to use. + /// The table to retrieve index information about. + /// The name of the index to retrieve information about. + /// Filled in with information about indexes on the table. + /// The type of information to retrieve. + /// An error if the call fails. + public int JetGetTableIndexInfo( + JET_SESID sesid, + JET_TABLEID tableid, + string indexname, + out JET_INDEXCREATE result, + JET_IdxInfo infoLevel) + { + TraceFunctionCall(); + int err; + + switch (infoLevel) + { + case Microsoft.Isam.Esent.Interop.Windows7.Windows7IdxInfo.CreateIndex: + case Microsoft.Isam.Esent.Interop.Windows7.Windows7IdxInfo.CreateIndex2: + case Microsoft.Isam.Esent.Interop.Windows8.Windows8IdxInfo.InfoCreateIndex3: + break; + default: + throw new ArgumentException(string.Format("{0} is not a valid value JET_IdxInfo for this JET_INDEXCREATE overload.")); + } + + if (this.Capabilities.SupportsWindows8Features) + { + { + int bufferSize = 10 * Marshal.SizeOf(typeof(NATIVE_INDEXCREATE3)); + IntPtr unmanagedBuffer = Marshal.AllocHGlobal(bufferSize); + try + { + // var nativeIndexcreate = new NATIVE_INDEXCREATE3(); + // nativeIndexcreate.cbStruct = checked((uint)bufferSize); + infoLevel = Windows8IdxInfo.InfoCreateIndex3; + + err = Err(NativeMethods.JetGetTableIndexInfoW( + sesid.Value, + tableid.Value, + indexname, + unmanagedBuffer, + (uint)bufferSize, + (uint)infoLevel)); + + NATIVE_INDEXCREATE3 nativeIndexcreate = (NATIVE_INDEXCREATE3)Marshal.PtrToStructure(unmanagedBuffer, typeof(NATIVE_INDEXCREATE3)); + + result = new JET_INDEXCREATE(); + result.SetAllFromNativeIndexCreate(ref nativeIndexcreate); + } + finally + { + Marshal.FreeHGlobal(unmanagedBuffer); + } + } + } + else + { + result = null; + err = Err((int)JET_err.FeatureNotAvailable); + } + + return err; + } + #endregion + + #region prereading + /// + /// If the records with the specified key rangess are not in the buffer + /// cache, then start asynchronous reads to bring the records into the + /// database buffer cache. + /// + /// The session to use. + /// The table to issue the prereads against. + /// The key ranges to preread. + /// The index of the first key range in the array to read. + /// The maximum number of key ranges to preread. + /// Returns the number of keys actually preread. + /// List of column ids for long value columns to preread. + /// Preread options. Used to specify the direction of the preread. + /// + /// An error if the call fails. + /// + public int JetPrereadIndexRanges( + JET_SESID sesid, + JET_TABLEID tableid, + JET_INDEX_RANGE[] indexRanges, + int rangeIndex, + int rangeCount, + out int rangesPreread, + JET_COLUMNID[] columnsPreread, + PrereadIndexRangesGrbit grbit) + { + TraceFunctionCall(); + this.CheckSupportsWindows8Features("JetPrereadIndexRanges"); + CheckNotNull(indexRanges, "indexRanges"); + CheckDataSize(indexRanges, rangeIndex, "rangeIndex", rangeCount, "rangeCount"); + + var handles = new GCHandleCollection(); + try + { + NATIVE_INDEX_RANGE[] nativeRanges = new NATIVE_INDEX_RANGE[rangeCount]; + for (int i = 0; i < rangeCount; i++) + { + nativeRanges[i] = indexRanges[i + rangeIndex].GetNativeIndexRange(ref handles); + } + + if (columnsPreread != null) + { + var nativecolumnids = new uint[columnsPreread.Length]; + for (int i = 0; i < columnsPreread.Length; i++) + { + nativecolumnids[i] = (uint)columnsPreread[i].Value; + } + + return Err(NativeMethods.JetPrereadIndexRanges(sesid.Value, tableid.Value, nativeRanges, (uint)rangeCount, out rangesPreread, nativecolumnids, (uint)columnsPreread.Length, checked((uint)grbit))); + } + else + { + return Err(NativeMethods.JetPrereadIndexRanges(sesid.Value, tableid.Value, nativeRanges, (uint)rangeCount, out rangesPreread, null, (uint)0, checked((uint)grbit))); + } + } + finally + { + handles.Dispose(); + } + } + + /// + /// If the records with the specified key ranges are not in the + /// buffer cache then start asynchronous reads to bring the records + /// into the database buffer cache. + /// + /// The session to use. + /// The table to issue the prereads against. + /// The start of key ranges to preread. + /// The lengths of the start keys to preread. + /// The end of key rangess to preread. + /// The lengths of the end keys to preread. + /// The index of the first key range in the array to read. + /// The maximum number of key ranges to preread. + /// Returns the number of keys actually preread. + /// List of column ids for long value columns to preread. + /// Preread options. Used to specify the direction of the preread. + /// An error or warning. + public int JetPrereadKeyRanges( + JET_SESID sesid, + JET_TABLEID tableid, + byte[][] keysStart, + int[] keyStartLengths, + byte[][] keysEnd, + int[] keyEndLengths, + int rangeIndex, + int rangeCount, + out int rangesPreread, + JET_COLUMNID[] columnsPreread, + PrereadIndexRangesGrbit grbit) + { + TraceFunctionCall(); + this.CheckSupportsWindows8Features("JetPrereadKeyRanges"); + CheckDataSize(keysStart, rangeIndex, "rangeIndex", rangeCount, "rangeCount"); + CheckDataSize(keyStartLengths, rangeIndex, "rangeIndex", rangeCount, "rangeCount"); + CheckNotNull(keysStart, "keysStart"); + if (keysEnd != null) + { + CheckNotNull(keyEndLengths, "keyEndLengths"); + CheckDataSize(keysEnd, rangeIndex, "rangeIndex", rangeCount, "rangeCount"); + } + + if (keyEndLengths != null) + { + CheckNotNull(keysEnd, "keysEnd"); + CheckDataSize(keyEndLengths, rangeIndex, "rangeIndex", rangeCount, "rangeCount"); + } + + grbit = grbit | PrereadIndexRangesGrbit.NormalizedKey; + + using (var handles = new GCHandleCollection()) + { + NATIVE_INDEX_COLUMN[] startColumn; + NATIVE_INDEX_COLUMN[] endColumn; + NATIVE_INDEX_RANGE[] ranges = new NATIVE_INDEX_RANGE[rangeCount]; + for (int i = 0; i < rangeCount; i++) + { + startColumn = new NATIVE_INDEX_COLUMN[1]; + startColumn[0].pvData = handles.Add(keysStart[i + rangeIndex]); + startColumn[0].cbData = (uint)keyStartLengths[i + rangeIndex]; + ranges[i].rgStartColumns = handles.Add(startColumn); + ranges[i].cStartColumns = 1; + if (keysEnd != null) + { + endColumn = new NATIVE_INDEX_COLUMN[1]; + endColumn[0].pvData = handles.Add(keysEnd[i + rangeIndex]); + endColumn[0].cbData = (uint)keyEndLengths[i + rangeIndex]; + ranges[i].rgEndColumns = handles.Add(endColumn); + ranges[i].cEndColumns = 1; + } + } + + if (columnsPreread != null) + { + var nativecolumnids = new uint[columnsPreread.Length]; + for (int i = 0; i < columnsPreread.Length; i++) + { + nativecolumnids[i] = (uint)columnsPreread[i].Value; + } + + return Err(NativeMethods.JetPrereadIndexRanges(sesid.Value, tableid.Value, ranges, (uint)rangeCount, out rangesPreread, nativecolumnids, (uint)columnsPreread.Length, checked((uint)grbit))); + } + else + { + return Err(NativeMethods.JetPrereadIndexRanges(sesid.Value, tableid.Value, ranges, (uint)rangeCount, out rangesPreread, null, (uint)0, checked((uint)grbit))); + } + } + } + + /// + /// Set an array of simple filters for + /// + /// The session to use for the call. + /// The cursor to position. + /// Simple record filters. + /// Move options. + /// An error if the call fails. + public int JetSetCursorFilter(JET_SESID sesid, JET_TABLEID tableid, JET_INDEX_COLUMN[] filters, CursorFilterGrbit grbit) + { + TraceFunctionCall(); + this.CheckSupportsWindows8Features("JetSetCursorFilter"); + + if (filters == null || filters.Length == 0) + { + return Err(NativeMethods.JetSetCursorFilter(sesid.Value, tableid.Value, null, 0, checked((uint)grbit))); + } + + var handles = new GCHandleCollection(); + try + { + NATIVE_INDEX_COLUMN[] nativeFilters = new NATIVE_INDEX_COLUMN[filters.Length]; + + for (int i = 0; i < filters.Length; i++) + { + nativeFilters[i] = filters[i].GetNativeIndexColumn(ref handles); + } + + return Err(NativeMethods.JetSetCursorFilter(sesid.Value, tableid.Value, nativeFilters, (uint)filters.Length, checked((uint)grbit))); + } + finally + { + handles.Dispose(); + } + } + #endregion + + #region Private utility functions + /// + /// Make native indexcreate structures from the managed ones. + /// + /// Index create structures to convert. + /// The handle collection used to pin the data. + /// Pinned native versions of the index creates. + private static unsafe NATIVE_INDEXCREATE3[] GetNativeIndexCreate3s( + IList managedIndexCreates, + ref GCHandleCollection handles) + { + NATIVE_INDEXCREATE3[] nativeIndices = null; + + if (managedIndexCreates != null && managedIndexCreates.Count > 0) + { + nativeIndices = new NATIVE_INDEXCREATE3[managedIndexCreates.Count]; + + for (int i = 0; i < managedIndexCreates.Count; ++i) + { + nativeIndices[i] = managedIndexCreates[i].GetNativeIndexcreate3(); + + if (null != managedIndexCreates[i].pidxUnicode) + { + NATIVE_UNICODEINDEX2 unicode = managedIndexCreates[i].pidxUnicode.GetNativeUnicodeIndex2(); + unicode.szLocaleName = handles.Add(Util.ConvertToNullTerminatedUnicodeByteArray(managedIndexCreates[i].pidxUnicode.GetEffectiveLocaleName())); + nativeIndices[i].pidxUnicode = (NATIVE_UNICODEINDEX2*)handles.Add(unicode); + nativeIndices[i].grbit |= (uint)VistaGrbits.IndexUnicode; + } + + nativeIndices[i].szKey = handles.Add(Util.ConvertToNullTerminatedUnicodeByteArray(managedIndexCreates[i].szKey)); + nativeIndices[i].szIndexName = handles.Add(Util.ConvertToNullTerminatedUnicodeByteArray(managedIndexCreates[i].szIndexName)); + nativeIndices[i].rgconditionalcolumn = GetNativeConditionalColumns(managedIndexCreates[i].rgconditionalcolumn, true, ref handles); + + // Convert pSpaceHints. + if (managedIndexCreates[i].pSpaceHints != null) + { + NATIVE_SPACEHINTS nativeSpaceHints = managedIndexCreates[i].pSpaceHints.GetNativeSpaceHints(); + + nativeIndices[i].pSpaceHints = handles.Add(nativeSpaceHints); + } + } + } + + return nativeIndices; + } + + /// + /// Creates indexes over data in an ESE database. + /// + /// The session to use. + /// The table to create the index on. + /// Array of objects describing the indexes to be created. + /// Number of index description objects. + /// An error code. + private static int CreateIndexes3(JET_SESID sesid, JET_TABLEID tableid, IList indexcreates, int numIndexCreates) + { + // pin the memory + var handles = new GCHandleCollection(); + try + { + NATIVE_INDEXCREATE3[] nativeIndexcreates = GetNativeIndexCreate3s(indexcreates, ref handles); + return Err(NativeMethods.JetCreateIndex4W(sesid.Value, tableid.Value, nativeIndexcreates, checked((uint)numIndexCreates))); + } + finally + { + handles.Dispose(); + } + } + + /// + /// Creates a table, adds columns, and indices on that table. + /// + /// The session to use. + /// The database to which to add the new table. + /// Object describing the table to create. + /// An error if the call fails. + private static int CreateTableColumnIndex4( + JET_SESID sesid, + JET_DBID dbid, + JET_TABLECREATE tablecreate) + { + NATIVE_TABLECREATE4 nativeTableCreate = tablecreate.GetNativeTableCreate4(); + + unsafe + { + var handles = new GCHandleCollection(); + try + { + // Convert/pin the column definitions. + nativeTableCreate.rgcolumncreate = (NATIVE_COLUMNCREATE*)GetNativeColumnCreates(tablecreate.rgcolumncreate, true, ref handles); + + // Convert/pin the index definitions. + NATIVE_INDEXCREATE3[] nativeIndexCreates = GetNativeIndexCreate3s(tablecreate.rgindexcreate, ref handles); + nativeTableCreate.rgindexcreate = handles.Add(nativeIndexCreates); + + // Convert/pin the space hints. + if (tablecreate.pSeqSpacehints != null) + { + NATIVE_SPACEHINTS nativeSpaceHints = tablecreate.pSeqSpacehints.GetNativeSpaceHints(); + nativeTableCreate.pSeqSpacehints = (NATIVE_SPACEHINTS*)handles.Add(nativeSpaceHints); + } + + if (tablecreate.pLVSpacehints != null) + { + NATIVE_SPACEHINTS nativeSpaceHints = tablecreate.pLVSpacehints.GetNativeSpaceHints(); + nativeTableCreate.pLVSpacehints = (NATIVE_SPACEHINTS*)handles.Add(nativeSpaceHints); + } + + int err = NativeMethods.JetCreateTableColumnIndex4W(sesid.Value, dbid.Value, ref nativeTableCreate); + + // Modified fields. + tablecreate.tableid = new JET_TABLEID + { + Value = nativeTableCreate.tableid + }; + + tablecreate.cCreated = checked((int)nativeTableCreate.cCreated); + + if (tablecreate.rgcolumncreate != null) + { + for (int i = 0; i < tablecreate.rgcolumncreate.Length; ++i) + { + tablecreate.rgcolumncreate[i].SetFromNativeColumnCreate(ref nativeTableCreate.rgcolumncreate[i]); + } + } + + if (tablecreate.rgindexcreate != null) + { + for (int i = 0; i < tablecreate.rgindexcreate.Length; ++i) + { + tablecreate.rgindexcreate[i].SetFromNativeIndexCreate(ref nativeIndexCreates[i]); + } + } + + return Err(err); + } + finally + { + handles.Dispose(); + } + } + } + + // Do not add new public functions here, go above private functions above ... + #endregion + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/Windows8NativeMethods.cs b/WelsonJS.Toolkit/EsentInterop/Windows8NativeMethods.cs new file mode 100644 index 0000000..7278212 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/Windows8NativeMethods.cs @@ -0,0 +1,95 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop.Implementation +{ + using System; + using System.Runtime.InteropServices; + using Microsoft.Isam.Esent.Interop.Vista; + using Microsoft.Isam.Esent.Interop.Windows8; + + /// + /// Native interop for Windows8 functions in ese.dll. + /// + internal static partial class NativeMethods + { + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetGetErrorInfoW( + ref int error, + [In, Out] ref Windows8.NATIVE_ERRINFOBASIC pvResult, + uint cbMax, + uint InfoLevel, + uint grbit); + + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetResizeDatabase( + IntPtr sesid, + uint dbid, + uint cpg, + out uint pcpgActual, + uint grbit); + + #region DDL + [DllImport(EsentDll, CharSet = CharSet.Unicode, ExactSpelling = true)] + public static extern int JetCreateIndex4W( + IntPtr sesid, IntPtr tableid, [In] NATIVE_INDEXCREATE3[] pindexcreate, uint cIndexCreate); + + [DllImport(EsentDll, CharSet = CharSet.Unicode, ExactSpelling = true)] + public static extern int JetCreateTableColumnIndex4W(IntPtr sesid, uint dbid, ref NATIVE_TABLECREATE4 tablecreate3); + #endregion + + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetOpenTemporaryTable2(IntPtr sesid, [In] [Out] ref NATIVE_OPENTEMPORARYTABLE2 popentemporarytable); + + #region Session Parameters + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetGetSessionParameter( + IntPtr sesid, + uint sesparamid, + out int data, + int dataSize, + out int actualDataSize); + + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetGetSessionParameter( + IntPtr sesid, + uint sesparamid, + [Out] byte[] data, + int dataSize, + out int actualDataSize); + + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetSetSessionParameter( + IntPtr sesid, + uint sesparamid, + byte[] data, + int dataSize); + + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetSetSessionParameter( + IntPtr sesid, + uint sesparamid, + ref int data, + int dataSize); + + #endregion + + #region Misc + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetCommitTransaction2( + IntPtr sesid, + uint grbit, + uint cmsecDurableCommit, + ref NATIVE_COMMIT_ID pCommitId); + + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetPrereadIndexRanges(IntPtr sesid, IntPtr tableid, [In] NATIVE_INDEX_RANGE[] pIndexRanges, uint cIndexRanges, out int pcRangesPreread, uint[] rgcolumnidPreread, uint ccolumnidPreread, uint grbit); + + [DllImport(EsentDll, ExactSpelling = true)] + public static extern int JetSetCursorFilter(IntPtr sesid, IntPtr tableid, [In] NATIVE_INDEX_COLUMN[] pFilters, uint cFilters, uint grbit); + #endregion + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/Windows8Param.cs b/WelsonJS.Toolkit/EsentInterop/Windows8Param.cs new file mode 100644 index 0000000..ee4013b --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/Windows8Param.cs @@ -0,0 +1,61 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop.Windows8 +{ + /// + /// System parameters that were introduced in Windows 8. + /// + public static class Windows8Param + { + /// + /// Per-instance property for relative cache priorities (default = 100). + /// + public const JET_param CachePriority = (JET_param)177; + + /// + /// Percentage of version store that can be used by oldest transaction + /// before (default = 100). + /// + public const JET_param MaxTransactionSize = (JET_param)178; + + /// + /// Maximum number of I/O operations dispatched for a given purpose. + /// + public const JET_param PrereadIOMax = (JET_param)179; + + /// + /// Database Maintenance serialization is enabled for databases sharing + /// the same disk. + /// + public const JET_param EnableDBScanSerialization = (JET_param)180; + + /// + /// The threshold for what is considered a hung IO that should be acted upon. + /// + public const JET_param HungIOThreshold = (JET_param)181; + + /// + /// A set of actions to be taken on IOs that appear hung. + /// + public const JET_param HungIOActions = (JET_param)182; + + /// + /// Smallest amount of data that should be compressed with xpress compression. + /// + public const JET_param MinDataForXpress = (JET_param)183; + + /// + /// Friendly name for this instance of the process. + /// + public const JET_param ProcessFriendlyName = (JET_param)186; + + /// + /// Callback for when log is flushed. + /// + public const JET_param DurableCommitCallback = (JET_param)187; + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/Windows8SystemParameters.cs b/WelsonJS.Toolkit/EsentInterop/Windows8SystemParameters.cs new file mode 100644 index 0000000..9697c00 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/Windows8SystemParameters.cs @@ -0,0 +1,81 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using Microsoft.Isam.Esent.Interop.Windows8; + + /// + /// This class provides static properties to set and get + /// global ESENT system parameters. + /// + public partial class SystemParameters + { + /// + /// Gets or sets the smallest amount of data that should be compressed with xpress compression. + /// + public static int MinDataForXpress + { + get + { + return GetIntegerParameter(Windows8Param.MinDataForXpress); + } + + set + { + SetIntegerParameter(Windows8Param.MinDataForXpress, value); + } + } + + /// + /// Gets or sets the threshold for what is considered a hung IO that should be acted upon. + /// + public static int HungIOThreshold + { + get + { + return GetIntegerParameter(Windows8Param.HungIOThreshold); + } + + set + { + SetIntegerParameter(Windows8Param.HungIOThreshold, value); + } + } + + /// + /// Gets or sets the set of actions to be taken on IOs that appear hung. + /// + public static int HungIOActions + { + get + { + return GetIntegerParameter(Windows8Param.HungIOActions); + } + + set + { + SetIntegerParameter(Windows8Param.HungIOActions, value); + } + } + + /// + /// Gets or sets the friendly name for this instance of the process. + /// + public static string ProcessFriendlyName + { + get + { + return GetStringParameter(Windows8Param.ProcessFriendlyName); + } + + set + { + SetStringParameter(Windows8Param.ProcessFriendlyName, value); + } + } + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/esent.FxCop b/WelsonJS.Toolkit/EsentInterop/esent.FxCop new file mode 100644 index 0000000..1acd96c --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/esent.FxCop @@ -0,0 +1,643 @@ + + + + True + http://www.gotdotnet.com/team/fxcop//xsl/1.35/FxCopReport.xsl + + + + + + True + True + True + 10 + 1 + + False + False + + False + 120 + + + + + + + + + + + + + + + + + + + + + + + + + + + + Esent.Interop + + + + + Esent.Interop + + + + + + + + + + + API + + + + + API + + + + + + + + + columnid + + + + + + + + + sesid + + + + + + + + + dbid + + + + + + + + + tableid + + + + + + + + + + + ColumndefGrbit + + + + + + + + + Multi + ColumndefGrbit.ColumnMultiValued + + + + + + + + + ColumndefGrbit.ColumnNotNULL + + + + + + + + + + + CommitTransactionGrbit + + + + + + + + + CreateDatabaseGrbit + + + + + + + + + EsentException + + + + + Esent.Interop.EsentException + protected EsentException(SerializationInfo, StreamingContext) + + + Esent.Interop.EsentException + public EsentException() + + + Esent.Interop.EsentException + public EsentException(String) + + + Esent.Interop.EsentException + public EsentException(String, Exception) + + + + + + + + + + + EsentException.get_Message():String + System.String.Format(System.String,System.Object) + System.String.Format(System.IFormatProvider,System.String,System.Object[]) + + + + + + + + + + + + + JET_COLTYP + + + + + JET_COLTYP + + + + + JET_COLTYP + + + + + + + + + JET_COLTYP.GUID + + + + + + + + + JET_COLTYP.IEEEDouble + + + + + + + + + JET_COLTYP.IEEESingle + + + + + + + + + + + JET_COLUMNDEF + + + + + JET_COLUMNDEF + + + + + Esent.Interop.JET_COLUMNDEF + + + Esent.Interop.JET_COLUMNDEF + + + + + + + + + cbMax + + + + + cb + JET_COLUMNDEF.cbMax:Int32 + + + + + cb + JET_COLUMNDEF.cbMax:Int32 + + + + + + + + + coltyp + + + + + + + + + cp + + + + + cp + JET_COLUMNDEF.cp:JET_CP + + + + + + + + + grbit + + + + + + + + + + + JET_COLUMNDEF.get_NativeColumndef():NATIVE_COLUMNDEF + Marshal.SizeOf(Object):Int32 + ->System.Runtime.InteropServices.Marshal.SizeOf(System.Object) : Int32 ->Esent.Interop.JET_COLUMNDEF.get_NativeColumndef : NATIVE_COLUMNDEF ->Esent.Interop.UNCHECKED_API.JetAddColumn(Esent.Interop.JET_SESID,Esent.Interop.JET_TABLEID,System.String,Esent.Interop.JET_COLUMNDEF,System.Byte[],Esent.Interop.JET_COLUMNID@) : Int32 ->Esent.Interop.API.JetAddColumn(Esent.Interop.JET_SESID,Esent.Interop.JET_TABLEID,System.String,Esent.Interop.JET_COLUMNDEF,System.Byte[],Esent.Interop.JET_COLUMNID@) : Void + + + + + + + + + + + + + JET_COLUMNID + + + + + JET_COLUMNID + + + + + Esent.Interop.JET_COLUMNID + + + Esent.Interop.JET_COLUMNID + + + + + + + + + JET_CP + + + + + + + + + + + + + + JET_CP.ASCII + + + + + + + + + + + JET_DBID + + + + + JET_DBID + + + + + Esent.Interop.JET_DBID + + + Esent.Interop.JET_DBID + + + + + + + + + JET_INSTANCE + + + + + JET_INSTANCE + + + + + Esent.Interop.JET_INSTANCE + + + Esent.Interop.JET_INSTANCE + + + + + JET_INSTANCE + + + + + + + + + JET_PREP + + + + + JET_PREP + + + + + + + + + JET_SESID + + + + + Esent.Interop.JET_SESID + + + Esent.Interop.JET_SESID + + + + + JET_SESID + + + + + JET_SESID + + + + + + + + + JET_TABLEID + + + + + Esent.Interop.JET_TABLEID + + + Esent.Interop.JET_TABLEID + + + + + JET_TABLEID + + + + + JET_TABLEID + + + + + + + + + + + + + + Esent.Interop.NativeMethods + + + + + + + + + OpenTableGrbit + + + + + + + + + OpenTableGrbit.PermitDDL + + + + + + + + + + + Esent.Interop.UNCHECKED_API + + + + + + + + + UNCHECKED_API.JetAddColumn(JET_SESID, JET_TABLEID, String, JET_COLUMNDEF, Byte[], JET_COLUMNID&):Int32 + GCHandle.AddrOfPinnedObject():IntPtr + ->System.Runtime.InteropServices.GCHandle.AddrOfPinnedObject : IntPtr ->Esent.Interop.UNCHECKED_API.JetAddColumn(Esent.Interop.JET_SESID,Esent.Interop.JET_TABLEID,System.String,Esent.Interop.JET_COLUMNDEF,System.Byte[],Esent.Interop.JET_COLUMNID@) : Int32 ->Esent.Interop.API.JetAddColumn(Esent.Interop.JET_SESID,Esent.Interop.JET_TABLEID,System.String,Esent.Interop.JET_COLUMNDEF,System.Byte[],Esent.Interop.JET_COLUMNID@) : Void + + + UNCHECKED_API.JetAddColumn(JET_SESID, JET_TABLEID, String, JET_COLUMNDEF, Byte[], JET_COLUMNID&):Int32 + GCHandle.Alloc(Object, GCHandleType):GCHandle + ->System.Runtime.InteropServices.GCHandle.Alloc(System.Object,System.Runtime.InteropServices.GCHandleType) : GCHandle ->Esent.Interop.UNCHECKED_API.JetAddColumn(Esent.Interop.JET_SESID,Esent.Interop.JET_TABLEID,System.String,Esent.Interop.JET_COLUMNDEF,System.Byte[],Esent.Interop.JET_COLUMNID@) : Int32 ->Esent.Interop.API.JetAddColumn(Esent.Interop.JET_SESID,Esent.Interop.JET_TABLEID,System.String,Esent.Interop.JET_COLUMNDEF,System.Byte[],Esent.Interop.JET_COLUMNID@) : Void + + + + + + + + + + + + + + + + Mapping the ESE API to managed means using underscores to keep the names the same. + Needed for ESE API compliance + + + + + No valid permission requests were found for assembly '{0}'. You should always specify the minimum security permissions using SecurityAction.RequestMinimum. + + + Sign '{0}' with a strong name key. + + + Consider a design that does not require that '{0}' be an out parameter. + + + '{0}' is an internal class that is apparently never instantiated. If so, remove the code from the assembly. If this class is intended to contain only static methods, consider adding a private constructor to prevent the compiler from generating a default constructor. + + + {0} calls into {1} which has a LinkDemand. By making this call, {1} is indirectly exposed to user code. Review the following call stack that might expose a way to circumvent security protection: {2} + + + If enumeration name '{0}' is singular, change it to a plural form. + + + Correct the casing of member name '{0}'. + + + Correct the spelling of the unrecognized token '{0}' in member name '{1}'. + + + Remove all underscores from type '{0}'. + + + Add an implementation of GetObjectData to type '{0}'. + + + Add the following constructor to {0}: {1}. + + + Correct the capitalization of member name '{0}'. + Correct the capitalization of type name '{0}'. + + + The constituent members of '{0}' appear to represent flags that can be combined rather than discrete values. If this is correct, mark the enumeration with FlagsAttribute. + + + '{0}' should override Equals. + '{0}' should override the equality (==) and inequality (!=) operators. + + + Correct the capitalization of '{0}' in member name '{1}'. + + + {0} makes a call to {1} that does not explicitly provide an IFormatProvider. This should be replaced with a call to {2}. + + + Remove the public constructors from '{0}'. + + + Implement IDisposable on '{0}'. + + + + diff --git a/WelsonJS.Toolkit/EsentInterop/grbits.cs b/WelsonJS.Toolkit/EsentInterop/grbits.cs new file mode 100644 index 0000000..6667371 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/grbits.cs @@ -0,0 +1,1786 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Collections.Generic; + + /// + /// Options for . + /// + [Flags] + public enum CreateInstanceGrbit + { + /// + /// Default options. + /// + None = 0, + } + + /// + /// Options for . + /// + /// + /// + /// + /// + /// + /// + [Flags] + public enum InitGrbit + { + /// + /// Default options. + /// + None = 0 + } + + /// + /// Options for . + /// + /// + [Flags] + public enum TermGrbit + { + /// + /// Default options. + /// + None = 0, + + /// + /// Requests that the instance be shut down cleanly. Any optional + /// cleanup work that would ordinarily be done in the background at + /// run time is completed immediately. + /// + Complete = 1, + + /// + /// Requests that the instance be shut down as quickly as possible. + /// Any optional work that would ordinarily be done in the + /// background at run time is abandoned. + /// + Abrupt = 2, + + /// + /// Interrupts and fails any on-going backup. + /// + StopBackup = 4, + } + + /// + /// Options for . + /// + /// + [Flags] + public enum CreateDatabaseGrbit + { + /// + /// Default options. + /// + None = 0, + + /// + /// By default, if JetCreateDatabase is called and the database already exists, + /// the Api call will fail and the original database will not be overwritten. + /// OverwriteExisting changes this behavior, and the old database + /// will be overwritten with a new one. + /// + OverwriteExisting = 0x200, + + /// + /// Turns off logging. Setting this bit loses the ability to replay log files + /// and recover the database to a consistent usable state after a crash. + /// + RecoveryOff = 0x8, + } + + /// + /// Options for . + /// + [Flags] + public enum DetachDatabaseGrbit + { + /// + /// Default options. + /// + None = 0, + + /// + /// If is used, will be returned. + /// + [Obsolete("ForceDetach is no longer used.")] + ForceDetach = 1, + + /// + /// is no longer used. + /// + [Obsolete("ForceClose is no longer used.")] + ForceClose = 0x2, + + /// + /// If is used, will be returned. + /// + [Obsolete("ForceCloseAndDetach is no longer used.")] + ForceCloseAndDetach = (0x2 | 0x1 /*ForceDetach*/), + } + + /// + /// Options for . + /// + /// + /// + /// + [Flags] + public enum AttachDatabaseGrbit + { + /// + /// Default options. + /// + None = 0, + + /// + /// Prevents modifications to the database. + /// + ReadOnly = 0x1, + + /// + /// If JET_paramEnableIndexChecking has been set, all indexes over Unicode + /// data will be deleted. + /// + DeleteCorruptIndexes = 0x10, + } + + /// + /// Options for . + /// + [Flags] + public enum OpenDatabaseGrbit + { + /// + /// Default options. + /// + None = 0, + + /// + /// Prevents modifications to the database. + /// + ReadOnly = 0x1, + + /// + /// Allows only a single session to attach a database. + /// Normally, several sessions can open a database. + /// + Exclusive = 0x2, + } + + /// + /// Options for . + /// + [Flags] + public enum CloseDatabaseGrbit + { + /// + /// Default options. + /// + None = 0, + } + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + /// + /// Options for . + /// + [Flags] + public enum CompactGrbit + { + /// + /// Default options. + /// + None = 0, + + /// + /// Causes JetCompact to dump statistics on the source database to a file + /// named DFRGINFO.TXT. Statistics include the name of each table in + /// source database, number of rows in each table, total size in bytes of + /// all rows in each table, total size in bytes of all columns of type + /// or + /// that were large enough to be stored separate from the record, number + /// of clustered index leaf pages, and the number of long value leaf pages. + /// In addition, summary statistics including the size of the source database, + /// destination database, time required for database compaction, temporary + /// database space are all dumped as well. + /// + Stats = 0x20, + + /// + /// Used when the source database is known to be corrupt. It enables a + /// whole set of new behaviors intended to salvage as much data as + /// possible from the source database. JetCompact with this option set + /// may return but not copy all of the data + /// created in the source database. Data that was in damaged portions of + /// the source database will be skipped. + /// + [Obsolete("Use esentutl repair functionality instead.")] + Repair = 0x40, + } + + /// + /// Options for . + /// + [Flags] + public enum SnapshotFreezeGrbit + { + /// + /// Default options. + /// + None = 0, + } + + /// + /// Options for . + /// + /// + /// + [Flags] + public enum SnapshotPrepareGrbit + { + /// + /// Default options. + /// + None = 0, + + /// + /// Only logfiles will be taken. + /// + IncrementalSnapshot = 0x1, + + /// + /// A copy snapshot (normal or incremental) with no log truncation. + /// + CopySnapshot = 0x2, + } + + /// + /// Options for . + /// + [Flags] + public enum SnapshotThawGrbit + { + /// + /// Default options. + /// + None = 0, + } + + /// + /// Options for . + /// + [Flags] + public enum BackupGrbit + { + /// + /// Default options. + /// + None = 0, + + /// + /// Creates an incremental backup as opposed to a full backup. This + /// means that only the log files created since the last full or + /// incremental backup will be backed up. + /// + Incremental = 0x1, + + /// + /// Creates a full backup of the database. This allows the preservation + /// of an existing backup in the same directory if the new backup fails. + /// + Atomic = 0x4, + } + + /// + /// Options for . + /// + [Flags] + public enum BeginExternalBackupGrbit + { + /// + /// Default options. + /// + None = 0, + + /// + /// Creates an incremental backup as opposed to a full backup. This + /// means that only the log files since the last full or incremental + /// backup will be backed up. + /// + Incremental = 0x1, + } + + /// + /// Options for . + /// + /// + [Flags] + public enum EndExternalBackupGrbit + { + /// + /// Default options. + /// + None = 0, + + /// + /// The client application finished the backup completely, and is ending normally. + /// + Normal = 0x1, + + /// + /// The client application is aborting the backup. + /// + Abort = 0x2, + } +#endif // !MANAGEDESENT_ON_WSA + + /// + /// Options for . + /// + [Flags] + public enum BeginTransactionGrbit + { + /// + /// Default options. + /// + None = 0, + + /// + /// The transaction will not modify the database. If an update is attempted, + /// that operation will fail with . This + /// option is ignored unless it is requested when the given session is not + /// already in a transaction. + /// + ReadOnly = 0x1, + } + + /// + /// Options for JetCommitTransaction. + /// + /// + /// + [Flags] + public enum CommitTransactionGrbit + { + /// + /// Default options. + /// + None = 0, + + /// + /// The transaction is committed normally but this Api does not wait for + /// the transaction to be flushed to the transaction log file before returning + /// to the caller. This drastically reduces the duration of a commit operation + /// at the cost of durability. Any transaction that is not flushed to the log + /// before a crash will be automatically aborted during crash recovery during + /// the next call to JetInit. If or + /// are specified, this option is ignored. + /// + LazyFlush = 0x1, + + /// + /// If the session has previously committed any transactions and they have not yet + /// been flushed to the transaction log file, they should be flushed immediately. + /// This Api will wait until the transactions have been flushed before returning + /// to the caller. This is useful if the application has previously committed several + /// transactions using JET_bitCommitLazyFlush and now wants to flush all of them to disk. + /// + /// + /// This option may be used even if the session is not currently in a transaction. + /// This option cannot be used in combination with any other option. + /// + WaitLastLevel0Commit = 0x2, + } + + /// + /// Options for JetRollbackTransaction. + /// + [Flags] + public enum RollbackTransactionGrbit + { + /// + /// Default options. + /// + None = 0, + + /// + /// This option requests that all changes made to the state of the + /// database during all save points be undone. As a result, the + /// session will exit the transaction. + /// + RollbackAll = 0x1, + } + + /// + /// Options for JetEndSession. + /// + [Flags] + public enum EndSessionGrbit + { + /// + /// Default options. + /// + None = 0, + } + + /// + /// Options for JetOpenTable. + /// + [Flags] + public enum OpenTableGrbit + { + /// + /// Default options. + /// + None = 0, + + /// + /// This table cannot be opened for write access by another session. + /// + DenyWrite = 0x1, + + /// + /// This table cannot be opened for read access by another session. + /// + DenyRead = 0x2, + + /// + /// Request read-only access to the table. + /// + ReadOnly = 0x4, + + /// + /// Request write access to the table. + /// + Updatable = 0x8, + + /// + /// Allow DDL modifications to a table flagged as FixedDDL. This option + /// must be used with DenyRead. + /// + PermitDDL = 0x10, + + /// + /// Do not cache pages for this table. + /// + NoCache = 0x20, + + /// + /// Provides a hint that the table is probably not in the buffer cache, and + /// that pre-reading may be beneficial to performance. + /// + Preread = 0x40, + + /// + /// Assume a sequential access pattern and prefetch database pages. + /// + Sequential = 0x8000, + + /// + /// Table belongs to stats class 1. + /// + TableClass1 = 0x00010000, + + /// + /// Table belongs to stats class 2. + /// + TableClass2 = 0x00020000, + + /// + /// Table belongs to stats class 3. + /// + TableClass3 = 0x00030000, + + /// + /// Table belongs to stats class 4. + /// + TableClass4 = 0x00040000, + + /// + /// Table belongs to stats class 5. + /// + TableClass5 = 0x00050000, + + /// + /// Table belongs to stats class 6. + /// + TableClass6 = 0x00060000, + + /// + /// Table belongs to stats class 7. + /// + TableClass7 = 0x00070000, + + /// + /// Table belongs to stats class 8. + /// + TableClass8 = 0x00080000, + + /// + /// Table belongs to stats class 9. + /// + TableClass9 = 0x00090000, + + /// + /// Table belongs to stats class 10. + /// + TableClass10 = 0x000A0000, + + /// + /// Table belongs to stats class 11. + /// + TableClass11 = 0x000B0000, + + /// + /// Table belongs to stats class 12. + /// + TableClass12 = 0x000C0000, + + /// + /// Table belongs to stats class 13. + /// + TableClass13 = 0x000D0000, + + /// + /// Table belongs to stats class 14. + /// + TableClass14 = 0x000E0000, + + /// + /// Table belongs to stats class 15. + /// + TableClass15 = 0x000F0000, + } + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + /// + /// Options for . + /// + [Flags] + public enum DupCursorGrbit + { + /// + /// Default options. + /// + None = 0, + } + + /// + /// Options for and . + /// + [Flags] + public enum LsGrbit + { + /// + /// Default options. + /// + None = 0, + + /// + /// The context handle for the chosen object should be reset to JET_LSNil. + /// + Reset = 0x1, + + /// + /// Specifies the context handle should be associated with the given cursor. + /// + Cursor = 0x2, + + /// + /// Specifies that the context handle should be associated with the + /// table associated with the given cursor. It is illegal to use this + /// option with . + /// + Table = 0x4, + } +#endif // !MANAGEDESENT_ON_WSA + + /// + /// Options for the + /// and its associated overloads. + /// + /// + /// + [Flags] + public enum SetColumnGrbit + { + /// + /// Default options. + /// + None = 0, + + /// + /// This option is used to append data to a column of type + /// or . The same behavior can be achieved by determining + /// the size of the existing long value and specifying ibLongValue in psetinfo. + /// However, its simpler to use this grbit since knowing the size of the existing + /// column value is not necessary. + /// + AppendLV = 0x1, + + /// + /// This option is used replace the existing long value with the newly provided + /// data. When this option is used, it is as though the existing long value has + /// been set to 0 (zero) length prior to setting the new data. + /// + OverwriteLV = 0x4, + + /// + /// This option is only applicable for tagged, sparse or multi-valued columns. + /// It causes the column to return the default column value on subsequent retrieve + /// column operations. All existing column values are removed. + /// + RevertToDefaultValue = 0x200, + + /// + /// This option is used to force a long value, columns of type + /// or , to be stored separately from the remainder of record + /// data. This occurs normally when the size of the long value prevents it from being + /// stored with remaining record data. However, this option can be used to force the + /// long value to be stored separately. Note that long values four bytes in size + /// of smaller cannot be forced to be separate. In such cases, the option is ignored. + /// + SeparateLV = 0x40, + + /// + /// This option is used to interpret the input buffer as a integer number of bytes + /// to set as the length of the long value described by the given columnid and if + /// provided, the sequence number in psetinfo->itagSequence. If the size given is + /// larger than the existing column value, the column will be extended with 0s. + /// If the size is smaller than the existing column value then the value will be + /// truncated. + /// + SizeLV = 0x8, + + /// + /// This option is used to enforce that all values in a multi-valued column are + /// distinct. This option compares the source column data, without any + /// transformations, to other existing column values and an error is returned + /// if a duplicate is found. If this option is given, then AppendLV, OverwriteLV + /// and SizeLV cannot also be given. + /// + UniqueMultiValues = 0x80, + + /// + /// This option is used to enforce that all values in a multi-valued column are + /// distinct. This option compares the key normalized transformation of column + /// data, to other similarly transformed existing column values and an error is + /// returned if a duplicate is found. If this option is given, then AppendLV, + /// OverwriteLV and SizeLV cannot also be given. + /// + UniqueNormalizedMultiValues = 0x100, + + /// + /// This option is used to set a value to zero length. Normally, a column value + /// is set to NULL by passing a cbMax of 0 (zero). However, for some types, like + /// JET_coltyp.Text, a column value can be 0 (zero) length instead of NULL, and + /// this option is used to differentiate between NULL and 0 (zero) length. + /// + ZeroLength = 0x20, + + /// + /// Try to store long-value columns in the record, even if they exceed the default + /// separation size. + /// + IntrinsicLV = 0x400, + } + + /// + /// Options for JetRetrieveColumn. + /// + [Flags] + public enum RetrieveColumnGrbit + { + /// + /// Default options. + /// + None = 0, + + /// + /// This flag causes retrieve column to retrieve the modified value instead of + /// the original value. If the value has not been modified, then the original + /// value is retrieved. In this way, a value that has not yet been inserted or + /// updated may be retrieved during the operation of inserting or updating a record. + /// + RetrieveCopy = 0x1, + + /// + /// This option is used to retrieve column values from the index, if possible, + /// without accessing the record. In this way, unnecessary loading of records + /// can be avoided when needed data is available from index entries themselves. + /// + RetrieveFromIndex = 0x2, + + /// + /// This option is used to retrieve column values from the index bookmark, + /// and may differ from the index value when a column appears both in the + /// primary index and the current index. This option should not be specified + /// if the current index is the clustered, or primary, index. This bit cannot + /// be set if RetrieveFromIndex is also set. + /// + RetrieveFromPrimaryBookmark = 0x4, + + /// + /// This option is used to retrieve the sequence number of a multi-valued + /// column value in JET_RETINFO.itagSequence. Retrieving the sequence number + /// can be a costly operation and should only be done if necessary. + /// + RetrieveTag = 0x8, + + /// + /// This option is used to retrieve multi-valued column NULL values. If + /// this option is not specified, multi-valued column NULL values will + /// automatically be skipped. + /// + RetrieveNull = 0x10, + + /// + /// This option affects only multi-valued columns and causes a NULL + /// value to be returned when the requested sequence number is 1 and + /// there are no set values for the column in the record. + /// + RetrieveIgnoreDefault = 0x20, + } + + /// + /// Options for + /// and its associated overloads. + /// + /// + /// + [Flags] + public enum EnumerateColumnsGrbit + { + /// + /// Default options. + /// + None = 0, + + /// + /// When enumerating column values, all columns for which we are retrieving + /// all values and that have only one non-NULL column value may be returned + /// in a compressed format. The status for such columns will be set to + /// and the size of the column value + /// and the memory containing the column value will be returned directly in + /// the structure. It is not guaranteed that + /// all eligible columns are compressed in this manner. See + /// for more information. + /// + EnumerateCompressOutput = 0x00080000, + + /// + /// This option indicates that the modified column values of the record + /// should be enumerated rather than the original column values. If a + /// column value has not been modified, the original column value is + /// enumerated. In this way, a column value that has not yet been inserted + /// or updated may be enumerated when inserting or updating a record. + /// + /// + /// This option is identical to . + /// + EnumerateCopy = 0x1, + + /// + /// If a given column is not present in the record then no column value + /// will be returned. Ordinarily, the default value for the column, + /// if any, would be returned in this case. It is guaranteed that if the + /// column is set to a value different than the default value then that + /// different value will be returned (that is, if a column with a + /// default value is explicitly set to NULL then a NULL will be returned + /// as the value for that column). Even if this option is requested, it + /// is still possible to see a column value that happens to be equal to + /// the default value. No effort is made to remove column values that + /// match their default values. + /// It is important to remember that this option affects the output of + /// + /// and its associated overloads when used with + /// or + /// . + /// + EnumerateIgnoreDefault = 0x20, + + /// + /// If a non-NULL value exists for the requested column or column value + /// then the associated data is not returned. Instead, the associated + /// status for that column or column value will be set to + /// . If the column or column value + /// is NULL then will be returned as usual. + /// + EnumeratePresenceOnly = 0x00020000, + + /// + /// When enumerating all column values in the record (for example,that is + /// when numColumnids is zero), only tagged column values will be returned. + /// This option is not allowed when enumerating a specific array of column IDs. + /// + EnumerateTaggedOnly = 0x00040000, + } + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + /// + /// Options for . + /// + [Flags] + public enum GetRecordSizeGrbit + { + /// + /// Default options. + /// + None = 0, + + /// + /// Retrieve the size of the record that is in the copy buffer prepared + /// or update. Otherwise, the tableid must be positioned on a record, + /// and that record will be used. + /// + InCopyBuffer = 0x1, + + /// + /// The JET_RECSIZE is not zeroed before filling the contents, effectively + /// acting as an accumulation of the statistics for multiple records visited + /// or updated. + /// + RunningTotal = 0x2, + + /// + /// Ignore non-intrinsic Long Values. Only the local record on the page + /// will be used. + /// + Local = 0x4, + } +#endif // !MANAGEDESENT_ON_WSA + + /// + /// Options for . + /// + [Flags] + public enum GetSecondaryIndexBookmarkGrbit + { + /// + /// Default options. + /// + None = 0, + } + + /// + /// Options for . + /// + [Flags] + public enum GotoSecondaryIndexBookmarkGrbit + { + /// + /// Default options. + /// + None = 0, + + /// + /// In the event that the index entry can no longer be found, the cursor + /// will be left positioned where that index entry was previously found. + /// The operation will still fail with JET_errRecordDeleted; however, + /// it will be possible to move to the next or previous index entry + /// relative to the index entry that is now missing. + /// + BookmarkPermitVirtualCurrency = 0x1, + } + + /// + /// Options for JetMove. + /// + [Flags] + public enum MoveGrbit + { + /// + /// Default options. + /// + None = 0, + + /// + /// Moves the cursor forward or backward by the number of index entries + /// required to skip the requested number of index key values encountered + /// in the index. This has the effect of collapsing index entries with + /// duplicate key values into a single index entry. + /// + MoveKeyNE = 0x1, + } + + /// + /// Options for JetMakeKey. + /// + [Flags] + public enum MakeKeyGrbit + { + /// + /// Default options. + /// + None = 0, + + /// + /// A new search key should be constructed. Any previously existing search + /// key is discarded. + /// + NewKey = 0x1, + + /// + /// When this option is specified, all other options are ignored, any + /// previously existing search key is discarded, and the contents of the + /// input buffer are loaded as the new search key. + /// + NormalizedKey = 0x8, + + /// + /// If the size of the input buffer is zero and the current key column + /// is a variable length column, this option indicates that the input + /// buffer contains a zero length value. Otherwise, an input buffer size + /// of zero would indicate a NULL value. + /// + KeyDataZeroLength = 0x10, + + /// + /// This option indicates that the search key should be constructed + /// such that any key columns that come after the current key column + /// should be considered to be wildcards. + /// + StrLimit = 0x2, + + /// + /// This option indicates that the search key should be constructed + /// such that the current key column is considered to be a prefix + /// wildcard and that any key columns that come after the current + /// key column should be considered to be wildcards. + /// + SubStrLimit = 0x4, + + /// + /// The search key should be constructed such that any key columns + /// that come after the current key column should be considered to + /// be wildcards. + /// + FullColumnStartLimit = 0x100, + + /// + /// The search key should be constructed in such a way that any key + /// columns that come after the current key column are considered to + /// be wildcards. + /// + FullColumnEndLimit = 0x200, + + /// + /// The search key should be constructed such that the current key + /// column is considered to be a prefix wildcard and that any key + /// columns that come after the current key column should be considered + /// to be wildcards. + /// + PartialColumnStartLimit = 0x400, + + /// + /// The search key should be constructed such that the current key + /// column is considered to be a prefix wildcard and that any key + /// columns that come after the current key column should be considered + /// to be wildcards. + /// + PartialColumnEndLimit = 0x800, + } + + /// + /// Options for JetRetrieveKey. + /// + [Flags] + public enum RetrieveKeyGrbit + { + /// + /// Default options. + /// + None = 0, + + /// + /// Retrieve the currently constructed key. + /// + RetrieveCopy = 0x1, + } + + /// + /// Options for . + /// + [Flags] + public enum SeekGrbit + { + /// + /// The cursor will be positioned at the index entry closest to the + /// start of the index that exactly matches the search key. + /// + SeekEQ = 0x1, + + /// + /// The cursor will be positioned at the index entry closest to the + /// end of the index that is less than an index entry that would + /// exactly match the search criteria. + /// + SeekLT = 0x2, + + /// + /// The cursor will be positioned at the index entry closest to the + /// end of the index that is less than or equal to an index entry + /// that would exactly match the search criteria. + /// + SeekLE = 0x4, + + /// + /// The cursor will be positioned at the index entry closest to the + /// start of the index that is greater than or equal to an index + /// entry that would exactly match the search criteria. + /// + SeekGE = 0x8, + + /// + /// The cursor will be positioned at the index entry closest to the + /// start of the index that is greater than an index entry that + /// would exactly match the search criteria. + /// + SeekGT = 0x10, + + /// + /// An index range will automatically be setup for all keys that + /// exactly match the search key. + /// + SetIndexRange = 0x20, + } + + /// + /// Options for . + /// + [Flags] + public enum SetIndexRangeGrbit + { + /// + /// Default options. + /// + None = 0x0, + + /// + /// This option indicates that the limit of the index range is inclusive. + /// + RangeInclusive = 0x1, + + /// + /// The search key in the cursor represents the search criteria for the + /// index entry closest to the end of the index that will match the index + /// range. + /// + RangeUpperLimit = 0x2, + + /// + /// The index range should be removed as soon as it has been established. + /// This is useful for testing for the existence of index entries that + /// match the search criteria. + /// + RangeInstantDuration = 0x4, + + /// + /// Cancel and existing index range. + /// + RangeRemove = 0x8, + } + + /// + /// Options for the object. + /// + [Flags] + public enum IndexRangeGrbit + { + /// + /// Records in the cursors indexrange should be included in the output. + /// + RecordInIndex = 0x1, + } + + /// + /// Options for . + /// + [Flags] + public enum IntersectIndexesGrbit + { + /// + /// Default options. + /// + None = 0, + } + + /// + /// Options for and + /// . + /// + [Flags] + public enum SetCurrentIndexGrbit + { + /// + /// Default options. This is the same as . + /// + None = 0, + + /// + /// Indicates that the cursor should be positioned on the first entry of + /// the specified index. If the current index is being selected then this + /// option is ignored. + /// + MoveFirst = 0, + + /// + /// Indicates that the cursor should be positioned on the index entry + /// of the new index that corresponds to the record associated with the + /// index entry at the current position of the cursor on the old index. + /// + NoMove = 0x2, + } + + /// + /// Options for . + /// + /// + [Flags] + public enum SetTableSequentialGrbit + { + /// + /// Default options. + /// + None = 0, + } + + /// + /// Options for . + /// + [Flags] + public enum ResetTableSequentialGrbit + { + /// + /// Default options. + /// + None = 0, + } + + /// + /// Options for JetGetLock. + /// + [Flags] + public enum GetLockGrbit + { + /// + /// Acquire a read lock on the current record. Read locks are incompatible with + /// write locks already held by other sessions but are compatible with read locks + /// held by other sessions. + /// + Read = 0x1, + + /// + /// Acquire a write lock on the current record. Write locks are not compatible + /// with write or read locks held by other sessions but are compatible with + /// read locks held by the same session. + /// + Write = 0x2, + } + + /// + /// Options for . + /// + [Flags] + public enum EscrowUpdateGrbit + { + /// + /// Default options. + /// + None = 0, + + /// + /// Even if the session performing the escrow update has its transaction rollback + /// this update will not be undone. As the log records may not be flushed to disk, + /// recent escrow updates done with this flag may be lost if there is a crash. + /// + NoRollback = 0x1, + } + + /// + /// Options for the structure. + /// + /// + /// + [Flags] + public enum ColumndefGrbit + { + /// + /// Default options. + /// + None = 0x0, + + /// + /// The column will be fixed. It will always use the same amount of space in a row, + /// regardless of how much data is being stored in the column. ColumnFixed + /// cannot be used with ColumnTagged. This bit cannot be used with long values + /// (that is JET_coltyp.LongText and JET_coltyp.LongBinary). + /// + ColumnFixed = 0x1, + + /// + /// The column will be tagged. Tagged columns do not take up any space in the database + /// if they do not contain data. This bit cannot be used with ColumnFixed. + /// + ColumnTagged = 0x2, + + /// + /// The column must never be set to a NULL value. On Windows XP this can only be applied to + /// fixed columns (bit, byte, integer, etc). + /// + ColumnNotNULL = 0x4, + + /// + /// The column is a version column that specifies the version of the row. The value of + /// this column starts at zero and will be automatically incremented for each update on + /// the row. This option can only be applied to columns. This option cannot + /// be used with , , or . + /// + ColumnVersion = 0x8, + + /// + /// The column will automatically be incremented. The number is an increasing number, and + /// is guaranteed to be unique within a table. The numbers, however, might not be continuous. + /// For example, if five rows are inserted into a table, the "autoincrement" column could + /// contain the values { 1, 2, 6, 7, 8 }. This bit can only be used on columns of type + /// or . + /// + ColumnAutoincrement = 0x10, + + /// + /// The column can be updated. This is NOT a valid grbit to set on input to any API. It is + /// returned as part of the structure's grbit member, as an + /// output from Api.JetGetColumnInfo. + /// + ColumnUpdatable = 0x20, + + /// + /// The column can be multi-valued. + /// A multi-valued column can have zero, one, or more values + /// associated with it. The various values in a multi-valued column are identified by a number + /// called the itagSequence member, which belongs to various structures, including: + /// , , , , and . + /// Multi-valued columns must be tagged columns; that is, they cannot be fixed-length or + /// variable-length columns. + /// + ColumnMultiValued = 0x400, + + /// + /// Specifies that a column is an escrow update column. An escrow update column can be + /// updated concurrently by different sessions with JetEscrowUpdate and will maintain + /// transactional consistency. An escrow update column must also meet the following conditions: + /// An escrow update column can be created only when the table is empty. + /// An escrow update column must be of type JET_coltypLong. + /// An escrow update column must have a default value. + /// ColumnEscrowUpdate cannot be used in conjunction with , + /// , or . + /// + ColumnEscrowUpdate = 0x800, + + /// + /// The column will be created in an without version information. This means that other + /// transactions that attempt to add a column with the same name will fail. This bit + /// is only useful with JetAddColumn. It cannot be used within a transaction. + /// + ColumnUnversioned = 0x1000, + + /// + /// In doing an outer join, the retrieve column operation might not have a match + /// from the inner table. + /// + ColumnMaybeNull = 0x2000, + + /// + /// DEPRECATED / Not Fully Implemented: use ColumnDeleteOnZero instead. + /// + ColumnFinalize = 0x4000, + + /// + /// The default value for a column will be provided by a callback function. A column that + /// has a user-defined default must be a tagged column. Specifying + /// means that pvDefault must point to a JET_USERDEFINEDDEFAULT structure, and cbDefault must be + /// set to sizeof( JET_USERDEFINEDDEFAULT ). + /// + ColumnUserDefinedDefault = 0x8000, + + /// + /// The column will be a key column for the temporary table. The order + /// of the column definitions with this option specified in the input + /// array will determine the precedence of each key column for the + /// temporary table. The first column definition in the array that + /// has this option set will be the most significant key column and + /// so on. If more key columns are requested than can be supported + /// by the database engine then this option is ignored for the + /// unsupportable key columns. + /// + TTKey = 0x40, + + /// + /// The sort order of the key column for the temporary table should + /// be descending rather than ascending. If this option is specified + /// without then this option is ignored. + /// + TTDescending = 0x80, + } + + /// + /// Options for the parameter used by + /// . + /// + /// + [Flags] + public enum CreateTableColumnIndexGrbit + { + /// + /// Default options. + /// + None = 0x0, + + /// + /// The DDL is fixed. + /// + FixedDDL = 0x1, + + /// + /// The DDL is inheritable. Implies FixedDDL. + /// + TemplateTable = 0x2, + + /// + /// Used in conjunction with TemplateTable. + /// + NoFixedVarColumnsInDerivedTables = 0x4, + } + + /// + /// Options for and . + /// + /// + /// + /// + /// + /// + /// + /// + [Flags] + public enum CreateIndexGrbit + { + /// + /// Default options. + /// + None = 0x0, + + /// + /// Duplicate index entries (keys) are disallowed. This is enforced when JetUpdate is called, + /// not when JetSetColumn is called. + /// + IndexUnique = 0x1, + + /// + /// The index is a primary (clustered) index. Every table must have exactly one primary index. + /// If no primary index is explicitly defined over a table, then the database engine will + /// create its own primary index. + /// + IndexPrimary = 0x2, + + /// + /// None of the columns over which the index is created may contain a NULL value. + /// + IndexDisallowNull = 0x4, + + /// + /// Do not add an index entry for a row if all of the columns being indexed are NULL. + /// + IndexIgnoreNull = 0x8, + + /// + /// Do not add an index entry for a row if any of the columns being indexed are NULL. + /// + IndexIgnoreAnyNull = 0x20, + + /// + /// Do not add an index entry for a row if the first column being indexed is NULL. + /// + IndexIgnoreFirstNull = 0x40, + + /// + /// Specifies that the index operations will be logged lazily. JET_bitIndexLazyFlush does not + /// affect the laziness of data updates. If the indexing operations is interrupted by process + /// termination, Soft Recovery will still be able to able to get the database to a consistent + /// state, but the index may not be present. + /// + IndexLazyFlush = 0x80, + + /// + /// Do not attempt to build the index, because all entries would evaluate to NULL. grbit MUST + /// also specify JET_bitIgnoreAnyNull when JET_bitIndexEmpty is passed. This is a performance + /// enhancement. For example if a new column is added to a table, then an index is created over + /// this newly added column, all of the records in the table would be scanned even though they + /// would never get added to the index anyway. Specifying JET_bitIndexEmpty skips the scanning + /// of the table, which could potentially take a long time. + /// + IndexEmpty = 0x100, + + /// + /// Causes index creation to be visible to other transactions. Normally a session in a + /// transaction will not be able to see an index creation operation in another session. This + /// flag can be useful if another transaction is likely to create the same index, so that the + /// second index-create will simply fail instead of potentially causing many unnecessary database + /// operations. The second transaction may not be able to use the index immediately. The index + /// creation operation needs to complete before it is usable. The session must not currently be in + /// a transaction to create an index without version information. + /// + IndexUnversioned = 0x200, + + /// + /// Specifying this flag causes NULL values to be sorted after data for all columns in the index. + /// + IndexSortNullsHigh = 0x400, + } + + /// + /// Key definition grbits. Used when retrieving information about an index, contained + /// in the column specified in . + /// + [Flags] + public enum IndexKeyGrbit + { + /// + /// Key segment is ascending. + /// + Ascending = 0x0, + + /// + /// Key segment is descending. + /// + Descending = 0x1, + } + + /// + /// Options for the structure. + /// + [Flags] + public enum ConditionalColumnGrbit + { + /// + /// The column must be null for an index entry to appear in the index. + /// + ColumnMustBeNull = 0x1, + + /// + /// The column must be non-null for an index entry to appear in the index. + /// + ColumnMustBeNonNull = 0x2, + } + + /// + /// Options for temporary table creation, with , + /// Api.JetOpenTempTable2, and . + /// + /// + /// + /// + [Flags] + public enum TempTableGrbit + { + /// + /// Default options. + /// + None = 0, + + /// + /// This option requests that the temporary table be flexible enough to + /// permit the use of JetSeek to lookup records by index key. If this + /// functionality it not required then it is best to not request it. If this + /// functionality is not requested then the temporary table manager may be + /// able to choose a strategy for managing the temporary table that will + /// result in improved performance. + /// + Indexed = 0x1, + + /// + /// This option requests that records with duplicate index keys be removed + /// from the final set of records in the temporary table. + /// Prior to Windows Server 2003, the database engine always assumed this + /// option to be in effect due to the fact that all clustered indexes must + /// also be a primary key and thus must be unique. As of Windows Server + /// 2003, it is now possible to create a temporary table that does NOT + /// remove duplicates when the + /// option is also specified. + /// It is not possible to know which duplicate will win and which duplicates + /// will be discarded in general. However, when the + /// option is requested then the first + /// record with a given index key to be inserted into the temporary table + /// will always win. + /// + Unique = 0x2, + + /// + /// This option requests that the temporary table be flexible enough to + /// allow records that have previously been inserted to be subsequently + /// changed. If this functionality it not required then it is best to not + /// request it. If this functionality is not requested then the temporary + /// table manager may be able to choose a strategy for managing the + /// temporary table that will result in improved performance. + /// + Updatable = 0x4, + + /// + /// This option requests that the temporary table be flexible enough to + /// allow records to be scanned in arbitrary order and direction using + /// . + /// If this functionality it not required then it is best to not + /// request it. If this functionality is not requested then the temporary + /// table manager may be able to choose a strategy for managing the + /// temporary table that will result in improved performance. + /// + Scrollable = 0x8, + + /// + /// This option requests that NULL key column values sort closer + /// to the end of the index than non-NULL key column values. + /// + SortNullsHigh = 0x10, + + /// + /// This option forces the temporary table manager to abandon + /// any attempt to choose a clever strategy for managing the + /// temporary table that will result in enhanced performance. + /// + ForceMaterialization = 0x20, + + /// + /// This option requests that any attempt to insert a record with the same + /// index key as a previously inserted record will immediately fail with + /// . If this option is not requested then a duplicate + /// may be detected immediately and fail or may be silently removed later + /// depending on the strategy chosen by the database engine to implement the + /// temporary table based on the requested functionality. If this + /// functionality it not required then it is best to not request it. If this + /// functionality is not requested then the temporary table manager may be + /// able to choose a strategy for managing the temporary table that will + /// result in improved performance. + /// + ErrorOnDuplicateInsertion = 0x20, + } + + /// + /// Options for . + /// + [Flags] + public enum DeleteColumnGrbit + { + /// + /// Default options. + /// + None = 0, + + /// + /// The API should only attempt to delete columns in the derived table. + /// If a column of that name exists in the base table it will be ignored. + /// + IgnoreTemplateColumns = 0x1, + } + + /// + /// Options for . + /// + [Flags] + public enum RenameColumnGrbit + { + /// + /// Default options. + /// + None = 0, + } + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + /// + /// Options for . + /// + [Flags] + public enum SetColumnDefaultValueGrbit + { + /// + /// Default options. + /// + None = 0, + } + + /// + /// Options for . + /// + [Flags] + public enum IdleGrbit + { + /// + /// Default options. + /// + None = 0x0, + + /// + /// Reserved for future use. If this flag is specified, the API will return . + /// + FlushBuffers = 0x01, + + /// Triggers cleanup of the version store. + Compact = 0x02, + + /// + /// Returns if version store is more than half full. + /// + GetStatus = 0x04, + } +#endif // !MANAGEDESENT_ON_WSA + + /// + /// Options for . + /// + /// + /// + [Flags] + public enum DefragGrbit + { + /// + /// Defragments the available space portion of ESE database space + /// allocation. Database space is divided into two types, owned + /// space and available space. Owned space is allocated to a table + /// or index while available space is ready for use within the table + /// or index, respectively. Available space is much more dynamic in + /// behavior and requires on-line defragmentation more so than owned + /// space or table or index data. + /// + AvailSpaceTreesOnly = 0x40, + + /// + /// Starts a new defragmentation task. + /// + BatchStart = 0x1, + + /// + /// Stops a defragmentation task. + /// + BatchStop = 0x2, + } + + /// + /// Grbits for the various Api.JetGetColumnInfo and Api.JetGetTableColumnInfo + /// overloads. + /// + /// + /// Internally this value is OR'ed together with the + /// info level. The info level is not publically exposed + /// in this CLR code because it's only used to differentiate the type of the output + /// parameter, which is covered by having explicit function overloads with different + /// signatures. There is no need to expose JET_ColInfo to CLR. + /// + [Flags] + public enum ColInfoGrbit + { + /// + /// Default options. + /// + None = 0x0, + + /// + /// For lists (example: ), only return + /// non-derived columns (if the table is derived from a template). + /// + /// This value is 0x80000000. + NonDerivedColumnsOnly = int.MinValue, + + /// + /// For lists (example: ), only return + /// the column name and columnid of each column. + /// + MinimalInfo = 0x40000000, + + /// + /// For lists (example: ), sort + /// returned column list by columnid (the default is to sort list by column name). + /// + SortByColumnid = 0x20000000, + } + + /// + /// Options for . + /// + [Flags] + public enum SpaceHintsGrbit + { + /// + /// Default options. + /// + None = 0x0, + + // Generic bits. + + /// + /// This changes the internal allocation policy to get space hierarchically + /// from a B-Tree's immediate parent. + /// + SpaceHintUtilizeParentSpace = 0x00000001, + + // Create bits. + + /// + /// This bit will enable Append split behavior to grow according to the + /// growth dynamics of the table (set by cbMinExtent, ulGrowth, cbMaxExtent). + /// + CreateHintAppendSequential = 0x00000002, + + /// + /// This bit will enable Hotpoint split behavior to grow according to the + /// growth dynamics of the table (set by cbMinExtent, ulGrowth, cbMaxExtent). + /// + CreateHintHotpointSequential = 0x00000004, + + // Retrieve bits. + + /// + /// Reserved and ignored. + /// + RetrieveHintReserve1 = 0x00000008, + + /// + /// By setting this the client indicates that forward sequential scan is + /// the predominant usage pattern of this table (causing B+ Tree defrag to + /// be auto-triggered to clean it up if fragmented). + /// + RetrieveHintTableScanForward = 0x00000010, + + /// + /// By setting this the client indicates that backwards sequential scan + /// is the predominant usage pattern of this table(causing B+ Tree defrag to + /// be auto-triggered to clean it up if fragmented). + /// + RetrieveHintTableScanBackward = 0x00000020, + + /// + /// Reserved and ignored. + /// + RetrieveHintReserve2 = 0x00000040, + + /// + /// Reserved and ignored. + /// + RetrieveHintReserve3 = 0x00000080, + + // Delete bits. + + /// + /// The application expects this table to be cleaned up in-order + /// sequentially (from lowest key to highest key). + /// + DeleteHintTableSequential = 0x00000100, + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/ijet_logtime.cs b/WelsonJS.Toolkit/EsentInterop/ijet_logtime.cs new file mode 100644 index 0000000..9084c64 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/ijet_logtime.cs @@ -0,0 +1,25 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + + /// + /// Interface for common methods between JET_LOGTIME and JET_BKLOGTIME. + /// + public interface IJET_LOGTIME : INullableJetStruct + { + /// + /// Generate a DateTime representation of this IJET_LOGTIME. + /// + /// + /// A DateTime representing the IJET_LOGTIME. If the IJET_LOGTIME + /// is null then null is returned. + /// + DateTime? ToDateTime(); + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/jet_bkinfo.cs b/WelsonJS.Toolkit/EsentInterop/jet_bkinfo.cs new file mode 100644 index 0000000..008cf71 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/jet_bkinfo.cs @@ -0,0 +1,182 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Diagnostics; + using System.Diagnostics.CodeAnalysis; + using System.Globalization; + using System.Runtime.InteropServices; + + /// + /// Holds a collection of data about a specific backup event. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1300:ElementMustBeginWithUpperCaseLetter", + Justification = "This should match the name of the unmanaged structure.")] + [StructLayout(LayoutKind.Sequential)] + [Serializable] + public struct JET_BKINFO : IEquatable, INullableJetStruct + { + /// + /// Current log position. + /// + private JET_LGPOS logPosition; + + /// + /// Time the backup was made. + /// + private JET_BKLOGTIME backupTime; + + /// + /// Low log generation when the backup was made. + /// + private uint lowGeneration; + + /// + /// High log generation when the backup was made. + /// + private uint highGeneration; + + /// + /// Gets the log position of the backup. + /// + public JET_LGPOS lgposMark + { + [DebuggerStepThrough] + get { return this.logPosition; } + internal set { this.logPosition = value; } + } + + /// + /// Gets the time of the backup. + /// + public JET_BKLOGTIME bklogtimeMark + { + [DebuggerStepThrough] + get { return this.backupTime; } + internal set { this.backupTime = value; } + } + + /// + /// Gets the low generation of the backup. + /// + public int genLow + { + [DebuggerStepThrough] + get { return (int)this.lowGeneration; } + internal set { this.lowGeneration = checked((uint)value); } + } + + /// + /// Gets or sets the high generation of the backup. + /// + public int genHigh + { + [DebuggerStepThrough] + get { return (int)this.highGeneration; } + set { this.highGeneration = checked((uint)value); } + } + + /// + /// Gets a value indicating whether this backup info is null. + /// + public bool HasValue + { + get + { + return this.lgposMark.HasValue + && this.backupTime.HasValue + && 0 != this.lowGeneration + && 0 != this.highGeneration; + } + } + + /// + /// Determines whether two specified instances of JET_BKINFO + /// are equal. + /// + /// The first instance to compare. + /// The second instance to compare. + /// True if the two instances are equal. + public static bool operator ==(JET_BKINFO lhs, JET_BKINFO rhs) + { + return lhs.Equals(rhs); + } + + /// + /// Determines whether two specified instances of JET_BKINFO + /// are not equal. + /// + /// The first instance to compare. + /// The second instance to compare. + /// True if the two instances are not equal. + public static bool operator !=(JET_BKINFO lhs, JET_BKINFO rhs) + { + return !(lhs == rhs); + } + + /// + /// Generate a string representation of the structure. + /// + /// The structure as a string. + public override string ToString() + { + return string.Format( + CultureInfo.InvariantCulture, + "JET_BKINFO({0}-{1}:{2}:{3})", + this.genLow, + this.genHigh, + this.lgposMark, + this.bklogtimeMark); + } + + /// + /// Returns a value indicating whether this instance is equal + /// to another instance. + /// + /// An object to compare with this instance. + /// True if the two instances are equal. + public override bool Equals(object obj) + { + if (obj == null || this.GetType() != obj.GetType()) + { + return false; + } + + return this.Equals((JET_BKINFO)obj); + } + + /// + /// Returns the hash code for this instance. + /// + /// The hash code for this instance. + public override int GetHashCode() + { + return this.logPosition.GetHashCode() + ^ this.backupTime.GetHashCode() + ^ unchecked((int)this.lowGeneration << 16) + ^ unchecked((int)this.lowGeneration >> 16) + ^ unchecked((int)this.highGeneration); + } + + /// + /// Returns a value indicating whether this instance is equal + /// to another instance. + /// + /// An instance to compare with this instance. + /// True if the two instances are equal. + public bool Equals(JET_BKINFO other) + { + return this.logPosition == other.logPosition + && this.backupTime == other.backupTime + && this.lowGeneration == other.lowGeneration + && this.highGeneration == other.highGeneration; + } + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/jet_bklogtime.cs b/WelsonJS.Toolkit/EsentInterop/jet_bklogtime.cs new file mode 100644 index 0000000..20babcf --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/jet_bklogtime.cs @@ -0,0 +1,249 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Diagnostics.CodeAnalysis; + using System.Globalization; + using System.Runtime.InteropServices; + + /// + /// Describes a date/time when a backup occurred. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1305:FieldNamesMustNotUseHungarianNotation", + Justification = "This should match the name of the unmanaged structure.")] + [StructLayout(LayoutKind.Sequential)] + [Serializable] + public struct JET_BKLOGTIME : IEquatable, IJET_LOGTIME + { + /// + /// The time in seconds. This value can be 0 to 59. + /// + private readonly byte bSeconds; + + /// + /// The time in minutes. This value can be 0 to 59. + /// + private readonly byte bMinutes; + + /// + /// The time in hours. This value can be 0 to 23. + /// + private readonly byte bHours; + + /// + /// The day of the month. This value can be 0 to 31. 0 is + /// used when the structure is null. + /// + private readonly byte bDays; + + /// + /// The month. This value can be 0 to 12. 0 is + /// used when the structure is null. + /// + private readonly byte bMonth; + + /// + /// The year of the event, offset by 1900. + /// + private readonly byte bYear; + + /// + /// IsUTC flag at the first bit. Starting from win8, milliseconds (low part) is filled at left 7 bits. + /// + private readonly byte bFiller1; + + /// + /// OSSnapshot flag at the first bit, Starting from win8, milliseconds (high part) is filled at following 3 bits. Other bits are reserved. + /// + private readonly byte bFiller2; + + /// + /// Initializes a new instance of the struct. + /// + /// + /// The DateTime to initialize the structure with. + /// + /// + /// True if this time is for a snapshot backup. + /// + internal JET_BKLOGTIME(DateTime time, bool isSnapshot) + { + this.bSeconds = checked((byte)time.Second); + this.bMinutes = checked((byte)time.Minute); + this.bHours = checked((byte)time.Hour); + this.bDays = checked((byte)time.Day); + this.bMonth = checked((byte)time.Month); + this.bYear = checked((byte)(time.Year - 1900)); + + // bFiller1: fTimeIsUTC at the first bit, bMillisecondsLow at left 7 bits + this.bFiller1 = (time.Kind == DateTimeKind.Utc) ? (byte)0x1 : (byte)0; + this.bFiller1 |= checked((byte)((time.Millisecond & 0x7F) << 1)); + + // bFiller2: fOSSnapshot at the first bit, bMillisecondsHigh at following 3 bits + this.bFiller2 = isSnapshot ? (byte)0x1 : (byte)0; + this.bFiller2 |= checked((byte)((time.Millisecond & 0x380) >> 6)); + } + + /// + /// Gets a value indicating whether the JET_BKLOGTIME has a null value. + /// + public bool HasValue + { + get { return 0 != this.bMonth && 0 != this.bDays; } + } + + /// + /// Gets a value indicating whether the JET_BKLOGTIME is in UTC. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1300:ElementMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + public bool fTimeIsUTC + { + get { return 0 != (this.bFiller1 & 0x1); } + } + + /// + /// Gets a value indicating whether the JET_BKLOGTIME is for a snapshot backup. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1300:ElementMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + public bool fOSSnapshot + { + get { return 0 != (this.bFiller2 & 0x1); } + } + + /// + /// Determines whether two specified instances of JET_BKLOGTIME + /// are equal. + /// + /// The first instance to compare. + /// The second instance to compare. + /// True if the two instances are equal. + public static bool operator ==(JET_BKLOGTIME lhs, JET_BKLOGTIME rhs) + { + return lhs.Equals(rhs); + } + + /// + /// Determines whether two specified instances of JET_BKLOGTIME + /// are not equal. + /// + /// The first instance to compare. + /// The second instance to compare. + /// True if the two instances are not equal. + public static bool operator !=(JET_BKLOGTIME lhs, JET_BKLOGTIME rhs) + { + return !(lhs == rhs); + } + + /// + /// Generate a DateTime representation of this JET_BKLOGTIME. + /// + /// + /// A DateTime representing the JET_BKLOGTIME. If the JET_BKLOGTIME + /// is null then null is returned. + /// + public DateTime? ToDateTime() + { + if (!this.HasValue) + { + return null; + } + + return new DateTime( + this.bYear + 1900, + this.bMonth, + this.bDays, + this.bHours, + this.bMinutes, + this.bSeconds, + checked((int)((((uint)this.bFiller2 & 0xE) << 6) | (((uint)this.bFiller1 & 0xFE) >> 1))), + this.fTimeIsUTC ? DateTimeKind.Utc : DateTimeKind.Local); + } + + /// + /// Generate a string representation of the structure. + /// + /// The structure as a string. + public override string ToString() + { + return string.Format( + CultureInfo.InvariantCulture, + "JET_BKLOGTIME({0}:{1}:{2}:{3}:{4}:{5}:0x{6:x}:0x{7:x})", + this.bSeconds, + this.bMinutes, + this.bHours, + this.bDays, + this.bMonth, + this.bYear, + this.bFiller1, + this.bFiller2); + } + + /// + /// Returns a value indicating whether this instance is equal + /// to another instance. + /// + /// An object to compare with this instance. + /// True if the two instances are equal. + public override bool Equals(object obj) + { + if (obj == null || this.GetType() != obj.GetType()) + { + return false; + } + + return this.Equals((JET_BKLOGTIME)obj); + } + + /// + /// Returns the hash code for this instance. + /// + /// The hash code for this instance. + public override int GetHashCode() + { + // None of the members are larger than a byte and many use fewer than + // all 8 bits (e.g. a month count uses only 4 bits). Spread the members + // out through the 32-bit hash value. + // (This is better than the default implementation of GetHashCode, which + // easily aliases different JET_BKLOGTIMES to the same hash code) + return this.bSeconds.GetHashCode() + ^ (this.bMinutes << 6) + ^ (this.bHours << 12) + ^ (this.bDays << 17) + ^ (this.bMonth << 22) + ^ (this.bYear << 24) + ^ this.bFiller1 + ^ (this.bFiller2 << 8); + } + + /// + /// Returns a value indicating whether this instance is equal + /// to another instance. + /// + /// An instance to compare with this instance. + /// True if the two instances are equal. + public bool Equals(JET_BKLOGTIME other) + { + return this.bSeconds == other.bSeconds + && this.bMinutes == other.bMinutes + && this.bHours == other.bHours + && this.bDays == other.bDays + && this.bMonth == other.bMonth + && this.bYear == other.bYear + && this.bFiller1 == other.bFiller1 + && this.bFiller2 == other.bFiller2; + } + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/jet_callback.cs b/WelsonJS.Toolkit/EsentInterop/jet_callback.cs new file mode 100644 index 0000000..f5212f5 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/jet_callback.cs @@ -0,0 +1,34 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + + /// + /// A multi-purpose callback function used by the database engine to inform + /// the application of an event involving online defragmentation and cursor + /// state notifications. + /// + /// The session for which the callback is being made. + /// The database for which the callback is being made. + /// The cursor for which the callback is being made. + /// The operation for which the callback is being made. + /// First callback-specific argument. + /// Second callback-specific argument. + /// Callback context. + /// This parameter is not used. + /// An ESENT error code. + public delegate JET_err JET_CALLBACK( + JET_SESID sesid, + JET_DBID dbid, + JET_TABLEID tableid, + JET_cbtyp cbtyp, + object arg1, + object arg2, + IntPtr context, + IntPtr unused); +} diff --git a/WelsonJS.Toolkit/EsentInterop/jet_cbtyp.cs b/WelsonJS.Toolkit/EsentInterop/jet_cbtyp.cs new file mode 100644 index 0000000..8611034 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/jet_cbtyp.cs @@ -0,0 +1,97 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + + /// + /// Type of progress being reported. + /// + [Flags] + public enum JET_cbtyp + { + /// + /// This callback is reserved and always considered invalid. + /// + Null = 0, + + /// + /// A finalizable column has gone to zero. + /// + Finalize = 0x1, + + /// + /// This callback will occur just before a new record is inserted into + /// a table by a call to JetUpdate. + /// + BeforeInsert = 0x2, + + /// + /// This callback will occur just after a new record has been inserted + /// into a table by a call to JetUpdate but before JetUpdate returns. + /// + AfterInsert = 0x4, + + /// + /// This callback will occur just prior to an existing record in a table + /// being changed by a call to JetUpdate. + /// + BeforeReplace = 0x8, + + /// + /// This callback will occur just after an existing record in a table + /// has been changed by a call to JetUpdate but prior to JetUpdate returning. + /// + AfterReplace = 0x10, + + /// + /// This callback will occur just before an existing record in a table + /// is deleted by a call to JetDelete. + /// + BeforeDelete = 0x20, + + /// + /// This callback will occur just after an existing record in a table + /// is deleted by a call to JetDelete. + /// + AfterDelete = 0x40, + + /// + /// This callback will occur when the engine needs to retrieve the + /// user defined default value of a column from the application. + /// This callback is essentially a limited implementation of + /// JetRetrieveColumn that is evaluated by the application. A maximum + /// of one column value can be returned for a user defined default value. + /// + UserDefinedDefaultValue = 0x80, + + /// + /// This callback will occur when the online defragmentation of a + /// database as initiated by JetDefragment has stopped due to either the + /// process being completed or the time limit being reached. + /// + OnlineDefragCompleted = 0x100, + + /// + /// This callback will occur when the application needs to clean up + /// the context handle for the Local Storage associated with a cursor + /// that is being released by the database engine. For more information, + /// see JetSetLS. The delegate for this callback reason is + /// configured by means of JetSetSystemParameter with JET_paramRuntimeCallback. + /// + FreeCursorLS = 0x200, + + /// + /// This callback will occur as the result of the need for the application + /// to cleanup the context handle for the Local Storage associated with + /// a table that is being released by the database engine. For more information, + /// see JetSetLS. The delegate for this callback reason is configured + /// by means of JetSetSystemParameter with JET_paramRuntimeCallback. + /// + FreeTableLS = 0x400, + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/jet_colinfo.cs b/WelsonJS.Toolkit/EsentInterop/jet_colinfo.cs new file mode 100644 index 0000000..998baeb --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/jet_colinfo.cs @@ -0,0 +1,36 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + /// + /// Info levels for retrieving column info. + /// + internal enum JET_ColInfo + { + /// + /// Default option. Retrieves a JET_COLUMNDEF. + /// + Default = 0, + + /// + /// Retrieves a JET_COLUMNLIST structure, containing all the columns + /// in the table. + /// + List = 1, + + /// + /// Retrieves a JET_COLUMNBASE structure. + /// + Base = 4, + + /// + /// Retrieves a JET_COLUMNDEF, the szColumnName argument is interpreted + /// as a pointer to a columnid. + /// + ByColid = 6, + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/jet_coltyp.cs b/WelsonJS.Toolkit/EsentInterop/jet_coltyp.cs new file mode 100644 index 0000000..37dd734 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/jet_coltyp.cs @@ -0,0 +1,84 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using Microsoft.Isam.Esent.Interop.Vista; + + /// + /// ESENT column types. This list is not extensive. Some column types introduced later + /// are in different classes, such as . + /// + /// + /// + public enum JET_coltyp + { + /// + /// Null column type. Invalid for column creation. + /// + Nil = 0, + + /// + /// True, False or NULL. + /// + Bit = 1, + + /// + /// 1-byte integer, unsigned. + /// + UnsignedByte = 2, + + /// + /// 2-byte integer, signed. + /// + Short = 3, + + /// + /// 4-byte integer, signed. + /// + Long = 4, + + /// + /// 8-byte integer, signed. + /// + Currency = 5, + + /// + /// 4-byte IEEE single-precisions. + /// + IEEESingle = 6, + + /// + /// 8-byte IEEE double-precision. + /// + IEEEDouble = 7, + + /// + /// Integral date, fractional time. + /// + DateTime = 8, + + /// + /// Binary data, up to 255 bytes. + /// + Binary = 9, + + /// + /// Text data, up to 255 bytes. + /// + Text = 10, + + /// + /// Binary data, up to 2GB. + /// + LongBinary = 11, + + /// + /// Text data, up to 2GB. + /// + LongText = 12, + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/jet_columnbase.cs b/WelsonJS.Toolkit/EsentInterop/jet_columnbase.cs new file mode 100644 index 0000000..e0d3f89 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/jet_columnbase.cs @@ -0,0 +1,332 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Diagnostics.CodeAnalysis; + using System.Globalization; + using System.Runtime.InteropServices; + + /// + /// The native ANSI version of the JET_COLUMNBASE structure. + /// + [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)] + [SuppressMessage("Microsoft.StyleCop.CSharp.NamingRules", + "SA1305:FieldNamesMustNotUseHungarianNotation", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1307:AccessibleFieldsMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + internal struct NATIVE_COLUMNBASE + { + /// + /// Size of the structure. + /// + public uint cbStruct; + + /// + /// Column ID. + /// + public uint columnid; + + /// + /// Type of the column. + /// + public uint coltyp; + + /// + /// Reserved. Should be 0. + /// + [Obsolete("Reserved")] + public ushort wCountry; + + /// + /// Obsolete. Should be . + /// + [Obsolete("Use cp")] + public ushort langid; + + /// + /// Code page for text columns. + /// + public ushort cp; + + /// + /// Reserved. Should be 0. + /// + [Obsolete("Reserved")] + public ushort wFiller; + + /// + /// Maximum length of the column. + /// + public uint cbMax; + + /// + /// Column options. + /// + public uint grbit; + + /// + /// The table from which the current table inherits its DDL. + /// + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = NameSize)] + public string szBaseTableName; + + /// + /// The name of the column in the template table. + /// + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = NameSize)] + public string szBaseColumnName; + + /// + /// Max size of the table/column name string. + /// + private const int NameSize = 256; + } + + /// + /// The native Unicode version of the JET_COLUMNBASE structure. + /// + [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)] + [SuppressMessage("Microsoft.StyleCop.CSharp.NamingRules", + "SA1305:FieldNamesMustNotUseHungarianNotation", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1307:AccessibleFieldsMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + internal struct NATIVE_COLUMNBASE_WIDE + { + /// + /// Size of the structure. + /// + public uint cbStruct; + + /// + /// Column ID. + /// + public uint columnid; + + /// + /// Type of the column. + /// + public uint coltyp; + + /// + /// Reserved. Should be 0. + /// + [Obsolete("Reserved")] + public ushort wCountry; + + /// + /// Obsolete. Should be . + /// + [Obsolete("Use cp")] + public ushort langid; + + /// + /// Code page for text columns. + /// + public ushort cp; + + /// + /// Reserved. Should be 0. + /// + [Obsolete("Reserved")] + public ushort wFiller; + + /// + /// Maximum length of the column. + /// + public uint cbMax; + + /// + /// Column options. + /// + public uint grbit; + + /// + /// The table from which the current table inherits its DDL. + /// + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = NameSize)] + public string szBaseTableName; + + /// + /// The name of the column in the template table. + /// + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = NameSize)] + public string szBaseColumnName; + + /// + /// Max size of the table/column name string. + /// + private const int NameSize = 256; + } + + /// + /// Describes a column in a table of an ESENT database. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1300:ElementMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + public sealed class JET_COLUMNBASE : IEquatable + { + /// + /// Initializes a new instance of the class. + /// + internal JET_COLUMNBASE() + { + } + + /// + /// Initializes a new instance of the class. + /// + /// + /// The value. + /// + internal JET_COLUMNBASE(NATIVE_COLUMNBASE value) + { + this.coltyp = (JET_coltyp)value.coltyp; + this.cp = (JET_CP)value.cp; + this.cbMax = checked((int)value.cbMax); + this.grbit = (ColumndefGrbit)value.grbit; + this.columnid = new JET_COLUMNID { Value = value.columnid }; + this.szBaseTableName = StringCache.TryToIntern(value.szBaseTableName); + this.szBaseColumnName = StringCache.TryToIntern(value.szBaseColumnName); + } + + /// + /// Initializes a new instance of the class. + /// + /// + /// The value. + /// + internal JET_COLUMNBASE(NATIVE_COLUMNBASE_WIDE value) + { + this.coltyp = (JET_coltyp)value.coltyp; + this.cp = (JET_CP)value.cp; + this.cbMax = checked((int)value.cbMax); + this.grbit = (ColumndefGrbit)value.grbit; + this.columnid = new JET_COLUMNID + { + Value = value.columnid + }; + this.szBaseTableName = StringCache.TryToIntern(value.szBaseTableName); + this.szBaseColumnName = StringCache.TryToIntern(value.szBaseColumnName); + } + + /// + /// Gets type of the column. + /// + public JET_coltyp coltyp { get; internal set; } + + /// + /// Gets code page of the column. This is only meaningful for columns of type + /// and . + /// + public JET_CP cp { get; internal set; } + + /// + /// Gets the maximum length of the column. This is only meaningful for columns of + /// type , , and + /// . + /// + public int cbMax { get; internal set; } + + /// + /// Gets the column options. + /// + public ColumndefGrbit grbit { get; internal set; } + + /// + /// Gets the columnid of the column. + /// + public JET_COLUMNID columnid { get; internal set; } + + /// + /// Gets the table from which the current table inherits its DDL. + /// + public string szBaseTableName { get; internal set; } + + /// + /// Gets the name of the column in the template table. + /// + public string szBaseColumnName { get; internal set; } + + /// + /// Returns a that represents the current . + /// + /// + /// A that represents the current . + /// + public override string ToString() + { + return string.Format(CultureInfo.InvariantCulture, "JET_COLUMNBASE({0},{1})", this.coltyp, this.grbit); + } + + /// + /// Returns the hash code for this instance. + /// + /// The hash code for this instance. + public override int GetHashCode() + { + var hashes = new[] + { + this.coltyp.GetHashCode(), + this.cp.GetHashCode(), + this.cbMax, + this.grbit.GetHashCode(), + this.columnid.GetHashCode(), + this.szBaseTableName.GetHashCode(), + this.szBaseColumnName.GetHashCode(), + }; + + return Util.CalculateHashCode(hashes); + } + + /// + /// Returns a value indicating whether this instance is equal + /// to another instance. + /// + /// An object to compare with this instance. + /// True if the two instances are equal. + public override bool Equals(object obj) + { + if (obj == null || GetType() != obj.GetType()) + { + return false; + } + + return this.Equals((JET_COLUMNBASE)obj); + } + + /// + /// Returns a value indicating whether this instance is equal + /// to another instance. + /// + /// An instance to compare with this instance. + /// True if the two instances are equal. + public bool Equals(JET_COLUMNBASE other) + { + if (null == other) + { + return false; + } + + return this.coltyp == other.coltyp + && this.cp == other.cp + && this.cbMax == other.cbMax + && this.columnid == other.columnid + && this.grbit == other.grbit + && string.Equals(this.szBaseTableName, other.szBaseTableName, StringComparison.Ordinal) + && string.Equals(this.szBaseColumnName, other.szBaseColumnName, StringComparison.Ordinal); + } + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/jet_columncreate.cs b/WelsonJS.Toolkit/EsentInterop/jet_columncreate.cs new file mode 100644 index 0000000..fd0cfa9 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/jet_columncreate.cs @@ -0,0 +1,347 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Diagnostics; + using System.Diagnostics.CodeAnalysis; + using System.Globalization; + using System.Runtime.InteropServices; + + /// + /// The native version of the JET_COLUMNCREATE structure. + /// + [StructLayout(LayoutKind.Sequential)] + [SuppressMessage("Microsoft.StyleCop.CSharp.NamingRules", + "SA1305:FieldNamesMustNotUseHungarianNotation", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1307:AccessibleFieldsMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + internal struct NATIVE_COLUMNCREATE + { + /// + /// Size of the structure. + /// + public uint cbStruct; + + /// + /// Name of the column. + /// + public IntPtr szColumnName; + + /// + /// Type of the columnn. + /// + public uint coltyp; + + /// + /// The maximum length of this column (only relevant for binary and text columns). + /// + public uint cbMax; + + /// + /// Column options. + /// + public uint grbit; + + /// + /// Default value (NULL if none). + /// + public IntPtr pvDefault; + + /// + /// Size of the default value. + /// + public uint cbDefault; + + /// + /// Code page (for text columns only). + /// + public uint cp; + + /// + /// The returned column id. + /// + public uint columnid; + + /// + /// The returned error code. + /// + public int err; + } + + /// + /// Describes a column in a table of an ESENT database. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1300:ElementMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + [Serializable] + public sealed class JET_COLUMNCREATE : IContentEquatable, IDeepCloneable + { + /// + /// Name of the column. + /// + private string name; + + /// + /// The type of the column. + /// + private JET_coltyp columnType; + + /// + /// Maximum size of the column. + /// + private int maxSize; + + /// + /// Column options. + /// + private ColumndefGrbit options; + + /// + /// Default value (NULL if none). + /// + private byte[] defaultValue; + + /// + /// Size of the default value. + /// + private int defaultValueSize; + + /// + /// The code page. Only valid for text columns. + /// + private JET_CP codePage; + + /// + /// Id of the column. Not serialized because it is an internal + /// value and shouldn't be persisted. + /// + [NonSerialized] + private JET_COLUMNID id; + + /// + /// The returned error code. + /// + private JET_err errorCode; + + /// + /// Gets or sets the name of the column to create. + /// + public string szColumnName + { + [DebuggerStepThrough] + get { return this.name; } + set { this.name = value; } + } + + /// + /// Gets or sets type of the column. + /// + public JET_coltyp coltyp + { + [DebuggerStepThrough] + get { return this.columnType; } + set { this.columnType = value; } + } + + /// + /// Gets or sets the maximum length of the column. This is only meaningful for columns of + /// type , , and + /// . + /// + public int cbMax + { + [DebuggerStepThrough] + get { return this.maxSize; } + set { this.maxSize = value; } + } + + /// + /// Gets or sets the column options. + /// + public ColumndefGrbit grbit + { + [DebuggerStepThrough] + get { return this.options; } + set { this.options = value; } + } + + /// + /// Gets or sets the default value (NULL if none). + /// + public byte[] pvDefault + { + get { return this.defaultValue; } + set { this.defaultValue = value; } + } + + /// + /// Gets or sets the size of the default value. + /// + public int cbDefault + { + get { return this.defaultValueSize; } + set { this.defaultValueSize = value; } + } + + /// + /// Gets or sets code page of the column. This is only meaningful for columns of type + /// and . + /// + public JET_CP cp + { + [DebuggerStepThrough] + get { return this.codePage; } + set { this.codePage = value; } + } + + /// + /// Gets the columnid of the column. + /// + public JET_COLUMNID columnid + { + [DebuggerStepThrough] + get { return this.id; } + internal set { this.id = value; } + } + + /// + /// Gets or sets the error code from creating this column. + /// + public JET_err err + { + [DebuggerStepThrough] + get { return this.errorCode; } + set { this.errorCode = value; } + } + + /// + /// Returns a value indicating whether this instance is equal + /// to another instance. + /// + /// An instance to compare with this instance. + /// True if the two instances are equal. + public bool ContentEquals(JET_COLUMNCREATE other) + { + if (null == other) + { + return false; + } + + this.CheckMembersAreValid(); + other.CheckMembersAreValid(); + + return this.err == other.err + && this.szColumnName == other.szColumnName + && this.coltyp == other.coltyp + && this.cbMax == other.cbMax + && this.grbit == other.grbit + && this.cbDefault == other.cbDefault + && this.cp == other.cp + && this.columnid == other.columnid + && Util.ArrayEqual(this.pvDefault, other.pvDefault, 0, other.cbDefault); + } + + #region IDeepCloneable + /// + /// Returns a deep copy of the object. + /// + /// A deep copy of the object. + public JET_COLUMNCREATE DeepClone() + { + JET_COLUMNCREATE result = (JET_COLUMNCREATE)this.MemberwiseClone(); + if (this.pvDefault != null) + { + result.pvDefault = new byte[this.pvDefault.Length]; + Array.Copy(this.pvDefault, result.pvDefault, this.pvDefault.Length); + } + + return result; + } + #endregion + + /// + /// Generate a string representation of the instance. + /// + /// The structure as a string. + public override string ToString() + { + return string.Format(CultureInfo.InvariantCulture, "JET_COLUMNCREATE({0},{1},{2})", this.szColumnName, this.coltyp, this.grbit); + } + + /// + /// Check this object to make sure its parameters are valid. + /// + internal void CheckMembersAreValid() + { + if (null == this.szColumnName) + { + throw new ArgumentNullException("szColumnName"); + } + + if (this.cbDefault < 0) + { + throw new ArgumentOutOfRangeException("cbDefault", this.cbDefault, "cannot be negative"); + } + + if (null == this.pvDefault && 0 != this.cbDefault) + { + throw new ArgumentOutOfRangeException("cbDefault", this.cbDefault, "must be 0"); + } + + if (null != this.pvDefault && (this.cbDefault > this.pvDefault.Length)) + { + throw new ArgumentOutOfRangeException("cbDefault", this.cbDefault, "can't be greater than pvDefault.Length"); + } + } + + /// + /// Returns the unmanaged columncreate that represents this managed class. + /// , , , + /// and are not converted. + /// + /// A native (interop) version of the JET_COLUMNCREATE. + internal NATIVE_COLUMNCREATE GetNativeColumnCreate() + { + var native = new NATIVE_COLUMNCREATE(); + native.cbStruct = checked((uint)Marshal.SizeOf(typeof(NATIVE_COLUMNCREATE))); + + // columncreate.szColumnName is converted at pinvoke time. + native.szColumnName = IntPtr.Zero; + native.coltyp = (uint)this.coltyp; + native.cbMax = (uint)this.cbMax; + native.grbit = (uint)this.grbit; + + // columncreate.pvDefault is converted at pinvoke time. + native.pvDefault = IntPtr.Zero; + + native.cbDefault = checked((uint)this.cbDefault); + + native.cp = (uint)this.cp; + + return native; + } + + /// + /// Sets only the output fields of the object from a native JET_COLUMNCREATE struct, + /// specifically and . + /// + /// + /// The native columncreate to set the values from. + /// + internal void SetFromNativeColumnCreate(ref NATIVE_COLUMNCREATE value) + { + this.columnid = new JET_COLUMNID { Value = value.columnid }; + this.err = (JET_err)value.err; + } + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/jet_columndef.cs b/WelsonJS.Toolkit/EsentInterop/jet_columndef.cs new file mode 100644 index 0000000..4c8d4ed --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/jet_columndef.cs @@ -0,0 +1,237 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Diagnostics; + using System.Diagnostics.CodeAnalysis; + using System.Globalization; + using System.Runtime.InteropServices; + + /// + /// The native version of the JET_COLUMNDEF structure. + /// + [StructLayout(LayoutKind.Sequential)] + [SuppressMessage("Microsoft.StyleCop.CSharp.NamingRules", + "SA1305:FieldNamesMustNotUseHungarianNotation", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1307:AccessibleFieldsMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + internal struct NATIVE_COLUMNDEF + { + /// + /// Size of the structure. + /// + public uint cbStruct; + + /// + /// Column ID. + /// + public uint columnid; + + /// + /// Type of the column. + /// + public uint coltyp; + + /// + /// Reserved. Should be 0. + /// + [Obsolete("Reserved")] + public ushort wCountry; + + /// + /// Obsolete. Should be 0. + /// + [Obsolete("Use cp")] + public ushort langid; + + /// + /// Code page for text columns. + /// + public ushort cp; + + /// + /// Reserved. Should be 0. + /// + [Obsolete("Reserved")] + public ushort wCollate; + + /// + /// Maximum length of the column. + /// + public uint cbMax; + + /// + /// Column options. + /// + public uint grbit; + } + + /// + /// Describes a column in a table of an ESENT database. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1300:ElementMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + [Serializable] + public sealed class JET_COLUMNDEF : IContentEquatable, IDeepCloneable + { + /// + /// The type of the column. + /// + private JET_coltyp columnType; + + /// + /// The code page. Only valid for text columns. + /// + private JET_CP codePage; + + /// + /// Maximum size of the column. + /// + private int maxSize; + + /// + /// Id of the column. Not serialized because it is an internal + /// value and shouldn't be persisted. + /// + [NonSerialized] + private JET_COLUMNID id; + + /// + /// Column options. + /// + private ColumndefGrbit options; + + /// + /// Gets or sets type of the column. + /// + public JET_coltyp coltyp + { + [DebuggerStepThrough] + get { return this.columnType; } + set { this.columnType = value; } + } + + /// + /// Gets or sets code page of the column. This is only meaningful for columns of type + /// and . + /// + public JET_CP cp + { + [DebuggerStepThrough] + get { return this.codePage; } + set { this.codePage = value; } + } + + /// + /// Gets or sets the maximum length of the column. This is only meaningful for columns of + /// type , , and + /// . + /// + public int cbMax + { + [DebuggerStepThrough] + get { return this.maxSize; } + set { this.maxSize = value; } + } + + /// + /// Gets or sets the column options. + /// + public ColumndefGrbit grbit + { + [DebuggerStepThrough] + get { return this.options; } + set { this.options = value; } + } + + /// + /// Gets the columnid of the column. + /// + public JET_COLUMNID columnid + { + [DebuggerStepThrough] + get { return this.id; } + internal set { this.id = value; } + } + + /// + /// Returns a that represents the current . + /// + /// + /// A that represents the current . + /// + public override string ToString() + { + return string.Format(CultureInfo.InvariantCulture, "JET_COLUMNDEF({0},{1})", this.columnType, this.options); + } + + /// + /// Returns a value indicating whether this instance is equal + /// to another instance. + /// + /// An instance to compare with this instance. + /// True if the two instances are equal. + public bool ContentEquals(JET_COLUMNDEF other) + { + if (null == other) + { + return false; + } + + return this.columnType == other.columnType + && this.codePage == other.codePage + && this.maxSize == other.maxSize + && this.id == other.id + && this.options == other.options; + } + + /// + /// Returns a deep copy of the object. + /// + /// A deep copy of the object. + public JET_COLUMNDEF DeepClone() + { + return (JET_COLUMNDEF)this.MemberwiseClone(); + } + + /// + /// Returns the unmanaged columndef that represents this managed class. + /// + /// A native (interop) version of the JET_COLUMNDEF. + internal NATIVE_COLUMNDEF GetNativeColumndef() + { + var columndef = new NATIVE_COLUMNDEF(); + columndef.cbStruct = checked((uint)Marshal.SizeOf(typeof(NATIVE_COLUMNDEF))); + columndef.cp = (ushort)this.cp; + columndef.cbMax = checked((uint)this.cbMax); + columndef.grbit = (uint)this.grbit; + columndef.coltyp = checked((uint)this.coltyp); + return columndef; + } + + /// + /// Sets the fields of the object from a native JET_COLUMNDEF struct. + /// + /// + /// The native columndef to set the values from. + /// + internal void SetFromNativeColumndef(NATIVE_COLUMNDEF value) + { + this.coltyp = (JET_coltyp)value.coltyp; + this.cp = (JET_CP)value.cp; + this.cbMax = checked((int)value.cbMax); + this.grbit = (ColumndefGrbit)value.grbit; + this.columnid = new JET_COLUMNID { Value = value.columnid }; + } + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/jet_columnlist.cs b/WelsonJS.Toolkit/EsentInterop/jet_columnlist.cs new file mode 100644 index 0000000..28067b6 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/jet_columnlist.cs @@ -0,0 +1,217 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Diagnostics.CodeAnalysis; + using System.Globalization; + using System.Runtime.InteropServices; + + /// + /// The native version of the JET_COLUMNLIST structure. + /// + [StructLayout(LayoutKind.Sequential)] + [SuppressMessage("Microsoft.StyleCop.CSharp.NamingRules", + "SA1305:FieldNamesMustNotUseHungarianNotation", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1307:AccessibleFieldsMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + internal struct NATIVE_COLUMNLIST + { + /// + /// Size of the structure. + /// + public uint cbStruct; + + /// + /// Tableid of the temporary table. + /// + public IntPtr tableid; + + /// + /// Number of records in the temporary table. + /// + public uint cRecord; + + /// + /// Columnid of the presentation order column. + /// + public uint columnidPresentationOrder; + + /// + /// Columnid of the name column. + /// + public uint columnidcolumnname; + + /// + /// Columnid of the columnid column. + /// + public uint columnidcolumnid; + + /// + /// Columnid of the coltyp column. + /// + public uint columnidcoltyp; + + /// + /// Columnid of the country column. + /// + public uint columnidCountry; + + /// + /// Columnid of the langid column. + /// + public uint columnidLangid; + + /// + /// Columnid of the codepage column. + /// + public uint columnidCp; + + /// + /// Columnid of the collation column. + /// + public uint columnidCollate; + + /// + /// Columnid of the cbMax column. + /// + public uint columnidcbMax; + + /// + /// Columnid of the grbit column. + /// + public uint columnidgrbit; + + /// + /// Columnid of the default value column. + /// + public uint columnidDefault; + + /// + /// Columnid of the base table name column. + /// + public uint columnidBaseTableName; + + /// + /// Columnid of the base column name column. + /// + public uint columnidBaseColumnName; + + /// + /// The column identifier of the name of the column definition. + /// + public uint columnidDefinitionName; + } + + /// + /// Information about a temporary table containing information + /// about all columns for a given table. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1300:ElementMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + public class JET_COLUMNLIST + { + /// + /// Gets tableid of the temporary table. This should be closed + /// when the table is no longer needed. + /// + public JET_TABLEID tableid { get; internal set; } + + /// + /// Gets the number of records in the temporary table. + /// + public int cRecord { get; internal set; } + + /// + /// Gets the columnid of the column in the temporary table which + /// stores the name of the column. + /// + public JET_COLUMNID columnidcolumnname { get; internal set; } + + /// + /// Gets the columnid of the column in the temporary table which + /// stores the id of the column. + /// + public JET_COLUMNID columnidcolumnid { get; internal set; } + + /// + /// Gets the columnid of the column in the temporary table which + /// stores the type of the column. + /// + public JET_COLUMNID columnidcoltyp { get; internal set; } + + /// + /// Gets the columnid of the column in the temporary table which + /// stores the code page of the column. + /// + public JET_COLUMNID columnidCp { get; internal set; } + + /// + /// Gets the columnid of the column in the temporary table which + /// stores the maximum length of the column. + /// + public JET_COLUMNID columnidcbMax { get; internal set; } + + /// + /// Gets the columnid of the column in the temporary table which + /// stores the grbit of the column. + /// + public JET_COLUMNID columnidgrbit { get; internal set; } + + /// + /// Gets the columnid of the column in the temporary table which + /// stores the default value of the column. + /// + public JET_COLUMNID columnidDefault { get; internal set; } + + /// + /// Gets the columnid of the column in the temporary table which + /// stores the name of the base table. + /// + public JET_COLUMNID columnidBaseTableName { get; internal set; } + + /// + /// Returns a that represents the current . + /// + /// + /// A that represents the current . + /// + public override string ToString() + { + return string.Format( + CultureInfo.InvariantCulture, + "JET_COLUMNLIST(0x{0:x},{1} records)", + this.tableid, + this.cRecord); + } + + /// + /// Sets the fields of the object from a native JET_COLUMNLIST struct. + /// + /// + /// The native columnlist to set the values from. + /// + internal void SetFromNativeColumnlist(NATIVE_COLUMNLIST value) + { + this.tableid = new JET_TABLEID { Value = value.tableid }; + this.cRecord = checked((int)value.cRecord); + this.columnidcolumnname = new JET_COLUMNID { Value = value.columnidcolumnname }; + this.columnidcolumnid = new JET_COLUMNID { Value = value.columnidcolumnid }; + this.columnidcoltyp = new JET_COLUMNID { Value = value.columnidcoltyp }; + this.columnidCp = new JET_COLUMNID { Value = value.columnidCp }; + this.columnidcbMax = new JET_COLUMNID { Value = value.columnidcbMax }; + this.columnidgrbit = new JET_COLUMNID { Value = value.columnidgrbit }; + this.columnidDefault = new JET_COLUMNID { Value = value.columnidDefault }; + this.columnidBaseTableName = new JET_COLUMNID { Value = value.columnidBaseTableName }; + } + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/jet_commit_id.cs b/WelsonJS.Toolkit/EsentInterop/jet_commit_id.cs new file mode 100644 index 0000000..56bf41b --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/jet_commit_id.cs @@ -0,0 +1,248 @@ +// -------------------------------------------------------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +// +// Information context surrounded data emitted from JET_PFNEMITLOGDATA. +// +// -------------------------------------------------------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop.Windows8 +{ + using System; + using System.Diagnostics.CodeAnalysis; + using System.Globalization; + using System.Runtime.InteropServices; + + /// + /// Information context surrounded data emitted from JET_PFNEMITLOGDATA. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1305:FieldNamesMustNotUseHungarianNotation", + Justification = "This should match the name of the unmanaged structure.")] + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1307:AccessibleFieldsMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + [StructLayout(LayoutKind.Sequential)] + [Serializable] + internal struct NATIVE_COMMIT_ID + { + /// + /// Signature for this log sequence. + /// + public NATIVE_SIGNATURE signLog; + + /// + /// Reserved value for proper alignment on x86. + /// + public int reserved; + + /// + /// Commit-id for this commit transaction. + /// + public long commitId; + } + + /// + /// Information context surrounded data emitted from JET_PFNEMITLOGDATA. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1300:ElementMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + public class JET_COMMIT_ID : IComparable, IEquatable + { + /// + /// Signature for this log sequence. + /// + private readonly JET_SIGNATURE signLog; + + /// + /// Commit-id for this commit transaction. + /// + private readonly long commitId; + + /// + /// Initializes a new instance of the class. + /// + /// The native version of the structure. + /// to use as the data source. + internal JET_COMMIT_ID(NATIVE_COMMIT_ID native) + { + this.signLog = new JET_SIGNATURE(native.signLog); + this.commitId = native.commitId; + } + +#if MANAGEDESENT_ON_CORECLR + /// + /// Initializes a new instance of the class. This + /// is for testing purposes only. + /// + /// This is being implemented in new Windows UI only because the Desktop test + /// code uses reflection to create the object, and the new Windows UI reflection does not + /// appear to work in this scenario -- Activator.CreateInstance() reflection seems to only + /// work with exising public constructors. + /// The log signature for this sequence. + /// The commit identifier for this commit transaction. + internal JET_COMMIT_ID(JET_SIGNATURE signature, long commitId) + { + this.signLog = signature; + this.commitId = commitId; + } +#endif // MANAGEDESENT_ON_CORECLR + + /// + /// Determine whether one commitid is before another commitid. + /// + /// The first commitid to compare. + /// The second commitid to compare. + /// True if lhs comes before rhs. + public static bool operator <(JET_COMMIT_ID lhs, JET_COMMIT_ID rhs) + { + return lhs.CompareTo(rhs) < 0; + } + + /// + /// Determine whether one commitid is before another commitid. + /// + /// The first commitid to compare. + /// The second commitid to compare. + /// True if lhs comes after rhs. + public static bool operator >(JET_COMMIT_ID lhs, JET_COMMIT_ID rhs) + { + return lhs.CompareTo(rhs) > 0; + } + + /// + /// Determine whether one commitid is before another commitid. + /// + /// The first commitid to compare. + /// The second commitid to compare. + /// True if lhs comes before or equal to rhs. + public static bool operator <=(JET_COMMIT_ID lhs, JET_COMMIT_ID rhs) + { + return lhs.CompareTo(rhs) <= 0; + } + + /// + /// Determine whether one commitid is before another commitid. + /// + /// The first commitid to compare. + /// The second commitid to compare. + /// True if lhs comes after or equal to rhs. + public static bool operator >=(JET_COMMIT_ID lhs, JET_COMMIT_ID rhs) + { + return lhs.CompareTo(rhs) >= 0; + } + + /// + /// Determine whether one commitid is is equal to another commitid. + /// + /// The first commitid to compare. + /// The second commitid to compare. + /// True if lhs comes is equal to rhs. + public static bool operator ==(JET_COMMIT_ID lhs, JET_COMMIT_ID rhs) + { + return lhs.CompareTo(rhs) == 0; + } + + /// + /// Determine whether one commitid is not equal to another commitid. + /// + /// The first commitid to compare. + /// The second commitid to compare. + /// True if lhs comes is not equal to rhs. + public static bool operator !=(JET_COMMIT_ID lhs, JET_COMMIT_ID rhs) + { + return lhs.CompareTo(rhs) != 0; + } + + /// + /// Generate a string representation of the structure. + /// + /// The structure as a string. + public override string ToString() + { + return string.Format( + CultureInfo.InvariantCulture, + "JET_COMMIT_ID({0}:{1}", + this.signLog, + this.commitId); + } + + /// + /// Returns a value comparing this instance with another. + /// + /// An instance to compare with this instance. + /// + /// A signed value representing the relative positions of the instances. + /// + public int CompareTo(JET_COMMIT_ID other) + { + if ((object)other == null) + { + return this.commitId > 0 ? 1 : 0; + } + + if (this.signLog != other.signLog) + { + throw new ArgumentException("The commit-ids belong to different log-streams"); + } + + return this.commitId.CompareTo(other.commitId); + } + + /// + /// Returns a value indicating whether this instance is equal + /// to another instance. + /// + /// An object to compare with this instance. + /// true if the two instances are equal. + public bool Equals(JET_COMMIT_ID other) + { + return this.CompareTo(other) == 0; + } + + /// + /// Returns a value indicating whether this instance is equal + /// to another instance. + /// + /// An object to compare with this instance. + /// true if the two instances are equal. + public override bool Equals(object obj) + { + if (obj == null || GetType() != obj.GetType()) + { + return false; + } + + return this.CompareTo((JET_COMMIT_ID)obj) == 0; + } + + /// + /// Returns the hash code for this instance. + /// + /// The hash code for this instance. + public override int GetHashCode() + { + return this.commitId.GetHashCode() + ^ this.signLog.GetHashCode(); + } + + /// + /// Converts the class to a NATIVE_COMMIT_ID structure. + /// + /// A NATIVE_COMMIT_ID structure. + internal NATIVE_COMMIT_ID GetNativeCommitId() + { + NATIVE_COMMIT_ID native = new NATIVE_COMMIT_ID(); + + native.signLog = this.signLog.GetNativeSignature(); + native.commitId = checked((long)this.commitId); + + return native; + } + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/jet_conditionalcolumn.cs b/WelsonJS.Toolkit/EsentInterop/jet_conditionalcolumn.cs new file mode 100644 index 0000000..c933f4a --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/jet_conditionalcolumn.cs @@ -0,0 +1,157 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Diagnostics; + using System.Diagnostics.CodeAnalysis; + using System.Globalization; + using System.Runtime.InteropServices; + + /// + /// The native version of the JET_CONDITIONALCOLUMN structure. + /// + [StructLayout(LayoutKind.Sequential)] + [SuppressMessage("Microsoft.StyleCop.CSharp.NamingRules", + "SA1305:FieldNamesMustNotUseHungarianNotation", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1307:AccessibleFieldsMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + internal struct NATIVE_CONDITIONALCOLUMN + { + /// + /// Size of the structure. + /// + public uint cbStruct; + + /// + /// Name of the column. + /// + public IntPtr szColumnName; + + /// + /// Conditional column option. + /// + public uint grbit; + } + + /// + /// Defines how conditional indexing is performed for a given index. A + /// conditional index contains an index entry for only those rows that + /// match the specified condition. However, the conditional column is not + /// part of the index's key, it only controls the presence of the index entry. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1300:ElementMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + [SuppressMessage("Microsoft.StyleCop.CSharp.NamingRules", + "SA1305:FieldNamesMustNotUseHungarianNotation", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + [Serializable] + public sealed class JET_CONDITIONALCOLUMN : IContentEquatable, IDeepCloneable + { + /// + /// Column name. + /// + private string columnName; + + /// + /// Conditional column option. + /// + private ConditionalColumnGrbit option; + + /// + /// Gets or sets the name of the conditional column. + /// + public string szColumnName + { + [DebuggerStepThrough] + get { return this.columnName; } + set { this.columnName = value; } + } + + /// + /// Gets or sets the options for the conditional index. + /// + public ConditionalColumnGrbit grbit + { + [DebuggerStepThrough] + get { return this.option; } + set { this.option = value; } + } + + /// + /// Initializes a new instance of the class. + /// + public JET_CONDITIONALCOLUMN() + { + } + + /// + /// Initializes a new instance of the class. + /// + /// The native object from which to read values. + internal JET_CONDITIONALCOLUMN(ref NATIVE_CONDITIONALCOLUMN native) + { + this.szColumnName = Marshal.PtrToStringUni(native.szColumnName); + this.grbit = (ConditionalColumnGrbit)native.grbit; + } + + /// + /// Returns a deep copy of the object. + /// + /// A deep copy of the object. + public JET_CONDITIONALCOLUMN DeepClone() + { + return (JET_CONDITIONALCOLUMN)this.MemberwiseClone(); + } + + /// + /// Generate a string representation of the instance. + /// + /// The structure as a string. + public override string ToString() + { + return string.Format( + CultureInfo.InvariantCulture, + "JET_CONDITIONALCOLUMN({0}:{1})", + this.columnName, + this.option); + } + + /// + /// Returns a value indicating whether this instance is equal + /// to another instance. + /// + /// An instance to compare with this instance. + /// True if the two instances are equal. + public bool ContentEquals(JET_CONDITIONALCOLUMN other) + { + if (null == other) + { + return false; + } + + return this.columnName == other.columnName && this.option == other.option; + } + + /// + /// Gets the NATIVE_CONDITIONALCOLUMN version of this object. + /// + /// A NATIVE_CONDITIONALCOLUMN for this object. + internal NATIVE_CONDITIONALCOLUMN GetNativeConditionalColumn() + { + var native = new NATIVE_CONDITIONALCOLUMN(); + native.cbStruct = (uint)Marshal.SizeOf(typeof(NATIVE_CONDITIONALCOLUMN)); + native.grbit = (uint)this.grbit; + return native; + } + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/jet_convert.cs b/WelsonJS.Toolkit/EsentInterop/jet_convert.cs new file mode 100644 index 0000000..96790ae --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/jet_convert.cs @@ -0,0 +1,21 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK +namespace Microsoft.Isam.Esent.Interop +{ + using System; + + /// + /// Conversion options for . This feature + /// was discontinued in Windows Server 2003. + /// + [Obsolete("Not available in Windows Server 2003 and up.")] + public abstract class JET_CONVERT + { + } +} +#endif // !MANAGEDESENT_ON_WSA \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/jet_cp.cs b/WelsonJS.Toolkit/EsentInterop/jet_cp.cs new file mode 100644 index 0000000..448c070 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/jet_cp.cs @@ -0,0 +1,29 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + /// + /// Codepage for an ESENT column. + /// + public enum JET_CP + { + /// + /// Code page for non-text columns. + /// + None = 0, + + /// + /// Unicode encoding. + /// + Unicode = 1200, + + /// + /// ASCII encoding. + /// + ASCII = 1252, + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/jet_dbinfo.cs b/WelsonJS.Toolkit/EsentInterop/jet_dbinfo.cs new file mode 100644 index 0000000..9ca0337 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/jet_dbinfo.cs @@ -0,0 +1,81 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + /// + /// Info levels for retrieving database info. + /// + public enum JET_DbInfo + { + /// + /// Returns the path to the database file (string). + /// + Filename = 0, + + /// + /// Returns the locale identifier (LCID) associated with this database (Int32). + /// + LCID = 3, + + /// + /// Returns a . This indicates whether the + /// database is opened in exclusive mode. If the database is in exclusive mode then + /// will be returned, otherwise zero is + /// returned. Other database grbit options for JetAttachDatabase and JetOpenDatabase + /// are not returned. + /// + Options = 6, + + /// + /// Returns a number one greater than the maximum level to which transactions can be + /// nested. If is called (in a nesting fashion, that is, on the + /// same session, without a commit or rollback) as many times as this value, on the + /// last call will be returned (Int32). + /// + Transactions = 7, + + /// + /// Returns the major version of the database engine (Int32). + /// + Version = 8, + + /// + /// Returns the filesize of the database, in pages (Int32). + /// + Filesize = 10, + + /// + /// Returns the owned space of the database, in pages (Int32). + /// + SpaceOwned = 11, + + /// + /// Returns the available space in the database, in pages (Int32). + /// + SpaceAvailable = 12, + + /// + /// Returns a object. + /// + Misc = 14, + + /// + /// Returns a boolean indicating whether the database is attached (boolean). + /// + DBInUse = 15, + + /// + /// Returns the page size of the database (Int32). + /// + PageSize = 17, + + /// + /// Returns the type of the database (). + /// + FileType = 19, + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/jet_dbinfomisc.cs b/WelsonJS.Toolkit/EsentInterop/jet_dbinfomisc.cs new file mode 100644 index 0000000..5e79bb3 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/jet_dbinfomisc.cs @@ -0,0 +1,1165 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Collections.Generic; + using System.Diagnostics; + using System.Diagnostics.CodeAnalysis; + using System.Globalization; + using System.Runtime.InteropServices; + + /// + /// The native version of the JET_DBINFOMISC structure. + /// + [StructLayout(LayoutKind.Sequential)] + [SuppressMessage("Microsoft.StyleCop.CSharp.NamingRules", + "SA1305:FieldNamesMustNotUseHungarianNotation", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1307:AccessibleFieldsMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + internal struct NATIVE_DBINFOMISC + { + /// + /// Version of Esent that created the database. + /// + public uint ulVersion; + + /// + /// Incremental version of Esent that created the database. + /// + public uint ulUpdate; + + /// + /// Database signature. + /// + public NATIVE_SIGNATURE signDb; + + /// + /// Consistent/inconsistent state. + /// + public uint dbstate; + + /// + /// Null if in inconsistent state. + /// + public JET_LGPOS lgposConsistent; + + /// + /// Null if in inconsistent state. + /// + public JET_LOGTIME logtimeConsistent; + + /// + /// Last attach time. + /// + public JET_LOGTIME logtimeAttach; + + /// + /// Lgpos at last attach. + /// + public JET_LGPOS lgposAttach; + + /// + /// Last detach time. + /// + public JET_LOGTIME logtimeDetach; + + /// + /// Lgpos at last detach. + /// + public JET_LGPOS lgposDetach; + + /// + /// Logfile signature. + /// + public NATIVE_SIGNATURE signLog; + + /// + /// Last successful full backup. + /// + public JET_BKINFO bkinfoFullPrev; + + /// + /// Last successful incremental backup. Reset when + /// is set. + /// + public JET_BKINFO bkinfoIncPrev; + + /// + /// Current backup. + /// + public JET_BKINFO bkinfoFullCur; + + /// + /// Internal use only. + /// + public uint fShadowingDisabled; + + /// + /// Internal use only. + /// + public uint fUpgradeDb; + + /// + /// OS major version. + /// + public uint dwMajorVersion; + + /// + /// OS minor version. + /// + public uint dwMinorVersion; + + /// + /// OS build number. + /// + public uint dwBuildNumber; + + /// + /// OS Service Pack number. + /// + public uint lSPNumber; + + /// + /// Database page size (0 = 4Kb page). + /// + public uint cbPageSize; + } + + /// + /// Native version of the JET_DBINFOMISC structure. + /// Adds support for fields that we added in Windows 7. + /// + [StructLayout(LayoutKind.Sequential)] + [SuppressMessage("Microsoft.StyleCop.CSharp.NamingRules", + "SA1305:FieldNamesMustNotUseHungarianNotation", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1307:AccessibleFieldsMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + internal struct NATIVE_DBINFOMISC4 + { + /// + /// The core dbinfo structure. + /// + public NATIVE_DBINFOMISC dbinfo; + + // Fields added in JET_DBINFOMISC2 + + /// + /// The minimum log generation required for replaying the logs. + /// Typically the checkpoint generation. + /// + public uint genMinRequired; + + /// + /// The maximum log generation required for replaying the logs. + /// + public uint genMaxRequired; + + /// + /// Creation time of the logfile. + /// + public JET_LOGTIME logtimeGenMaxCreate; + + /// + /// Number of times repair has been called on this database. + /// + public uint ulRepairCount; + + /// + /// The last time that repair was run against this database. + /// + public JET_LOGTIME logtimeRepair; + + /// + /// Number of times this database was repaired before the last defrag. + /// + public uint ulRepairCountOld; + + /// + /// Number of times a one bit error was successfully fixed. + /// + public uint ulECCFixSuccess; + + /// + /// The last time a one bit error was successfully fixed. + /// + public JET_LOGTIME logtimeECCFixSuccess; + + /// + /// The number of times a one bit error was successfully fixed before the last repair. + /// + public uint ulECCFixSuccessOld; + + /// + /// Number of times an uncorrectable one bit error was encountered. + /// + public uint ulECCFixFail; + + /// + /// The last time an uncorrectable one bit error was encountered. + /// + public JET_LOGTIME logtimeECCFixFail; + + /// + /// The number of times an uncorrectable one bit error was encountered. + /// + public uint ulECCFixFailOld; + + /// + /// Number of times a non-correctable checksum error was found. + /// + public uint ulBadChecksum; + + /// + /// The last time a non-correctable checksum error was found. + /// + public JET_LOGTIME logtimeBadChecksum; + + /// + /// The number of times a non-correctable checksum error was found before the last repair. + /// + public uint ulBadChecksumOld; + + // Fields added in JET_DBINFOMISC3 + + /// + /// The maximum log generation committed to the database. Typically the current log generation. + /// + public uint genCommitted; + + // Fields added in JET_DBINFOMISC4 + + /// + /// Last successful copy backup. + /// + public JET_BKINFO bkinfoCopyPrev; + + /// + /// Last successful differential backup. Reset when + /// bkinfoFullPrev is set. + /// + public JET_BKINFO bkinfoDiffPrev; + } + + /// + /// Holds miscellaneous information about a database. This is + /// the information that is contained in the database header. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1300:ElementMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + [SuppressMessage("Microsoft.StyleCop.CSharp.NamingRules", + "SA1305:FieldNamesMustNotUseHungarianNotation", + Justification = "Need to avoid clash between members and properties.")] + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1309:FieldNamesMustNotBeginWithUnderscore", + Justification = "Need to avoid clash between members and properties.")] + [Serializable] + public sealed partial class JET_DBINFOMISC : IEquatable + { + #region Fields + /// + /// Version of Esent that created the database. + /// + private int _ulVersion; + + /// + /// Incremental version of Esent that created the database. + /// + private int _ulUpdate; + + /// + /// Database signature. + /// + private JET_SIGNATURE _signDb; + + /// + /// Consistent/inconsistent state. + /// + private JET_dbstate _dbstate; + + /// + /// Null if in inconsistent state. + /// + private JET_LGPOS _lgposConsistent; + + /// + /// Null if in inconsistent state. + /// + private JET_LOGTIME _logtimeConsistent; + + /// + /// Last attach time. + /// + private JET_LOGTIME _logtimeAttach; + + /// + /// Lgpos at last attach. + /// + private JET_LGPOS _lgposAttach; + + /// + /// Last detach time. + /// + private JET_LOGTIME _logtimeDetach; + + /// + /// Lgpos at last detach. + /// + private JET_LGPOS _lgposDetach; + + /// + /// Logfile signature. + /// + private JET_SIGNATURE _signLog; + + /// + /// Last successful full backup. + /// + private JET_BKINFO _bkinfoFullPrev; + + /// + /// Last successful incremental backup. Reset when + /// is set. + /// + private JET_BKINFO _bkinfoIncPrev; + + /// + /// Current backup. + /// + private JET_BKINFO _bkinfoFullCur; + + /// + /// Internal use only. + /// + private bool _fShadowingDisabled; + + /// + /// Internal use only. + /// + private bool _fUpgradeDb; + + /// + /// OS major version. + /// + private int _dwMajorVersion; + + /// + /// OS minor version. + /// + private int _dwMinorVersion; + + /// + /// OS build number. + /// + private int _dwBuildNumber; + + /// + /// OS Service Pack number. + /// + private int _lSPNumber; + + /// + /// Database page size (0 = 4Kb page). + /// + private int _cbPageSize; + + /// + /// The minimum log generation required for replaying the logs. + /// Typically the checkpoint generation. + /// + private int _genMinRequired; + + /// + /// The maximum log generation required for replaying the logs. + /// + private int _genMaxRequired; + + /// + /// Creation time of the logfile. + /// + private JET_LOGTIME _logtimeGenMaxCreate; + + /// + /// Number of times repair has been called on this database. + /// + private int _ulRepairCount; + + /// + /// The last time that repair was run against this database. + /// + private JET_LOGTIME _logtimeRepair; + + /// + /// Number of times this database was repaired before the last defrag. + /// + private int _ulRepairCountOld; + + /// + /// Number of times a one bit error was successfully fixed. + /// + private int _ulECCFixSuccess; + + /// + /// The last time a one bit error was successfully fixed. + /// + private JET_LOGTIME _logtimeECCFixSuccess; + + /// + /// The number of times a one bit error was successfully fixed before the last repair. + /// + private int _ulECCFixSuccessOld; + + /// + /// Number of times an uncorrectable one bit error was encountered. + /// + private int _ulECCFixFail; + + /// + /// The last time an uncorrectable one bit error was encountered. + /// + private JET_LOGTIME _logtimeECCFixFail; + + /// + /// The number of times an uncorrectable one bit error was encountered. + /// + private int _ulECCFixFailOld; + + /// + /// Number of times a non-correctable checksum error was found. + /// + private int _ulBadChecksum; + + /// + /// The last time a non-correctable checksum error was found. + /// + private JET_LOGTIME _logtimeBadChecksum; + + /// + /// The number of times a non-correctable checksum error was found before the last repair. + /// + private int _ulBadChecksumOld; + + /// + /// The maximum log generation committed to the database. Typically the current log generation. + /// + private int _genCommitted; + + /// + /// Last successful copy backup. + /// + private JET_BKINFO _bkinfoCopyPrev; + + /// + /// Last successful differential backup. Reset when + /// is set. + /// + private JET_BKINFO _bkinfoDiffPrev; + + #endregion + + #region Properties + + /// + /// Gets the version of Esent that created the database. + /// + public int ulVersion + { + [DebuggerStepThrough] + get { return this._ulVersion; } + internal set { this._ulVersion = value; } + } + + /// + /// Gets the incremental version of Esent that created the database. + /// + public int ulUpdate + { + [DebuggerStepThrough] + get { return this._ulUpdate; } + internal set { this._ulUpdate = value; } + } + + /// + /// Gets the database signature. + /// + public JET_SIGNATURE signDb + { + [DebuggerStepThrough] + get { return this._signDb; } + internal set { this._signDb = value; } + } + + /// + /// Gets the consistent/inconsistent state of the database. + /// + public JET_dbstate dbstate + { + [DebuggerStepThrough] + get { return this._dbstate; } + internal set { this._dbstate = value; } + } + + /// + /// Gets the lgpos when the database was made consistent. + /// This value is null if the database is inconsistent. + /// + public JET_LGPOS lgposConsistent + { + [DebuggerStepThrough] + get { return this._lgposConsistent; } + internal set { this._lgposConsistent = value; } + } + + /// + /// Gets the time when the database was made consistent. + /// This value is null if the database is inconsistent. + /// + public JET_LOGTIME logtimeConsistent + { + [DebuggerStepThrough] + get { return this._logtimeConsistent; } + internal set { this._logtimeConsistent = value; } + } + + /// + /// Gets the time when the database was attached. + /// + public JET_LOGTIME logtimeAttach + { + [DebuggerStepThrough] + get { return this._logtimeAttach; } + internal set { this._logtimeAttach = value; } + } + + /// + /// Gets the lgpos of the last attach. + /// + public JET_LGPOS lgposAttach + { + [DebuggerStepThrough] + get { return this._lgposAttach; } + internal set { this._lgposAttach = value; } + } + + /// + /// Gets the time of the last detach. + /// + public JET_LOGTIME logtimeDetach + { + [DebuggerStepThrough] + get { return this._logtimeDetach; } + internal set { this._logtimeDetach = value; } + } + + /// + /// Gets the lgpos of the last detach. + /// + public JET_LGPOS lgposDetach + { + [DebuggerStepThrough] + get { return this._lgposDetach; } + internal set { this._lgposDetach = value; } + } + + /// + /// Gets the logfile signature of logs used to modify the database. + /// + public JET_SIGNATURE signLog + { + [DebuggerStepThrough] + get { return this._signLog; } + internal set { this._signLog = value; } + } + + /// + /// Gets information about the last successful full backup. + /// + public JET_BKINFO bkinfoFullPrev + { + [DebuggerStepThrough] + get { return this._bkinfoFullPrev; } + internal set { this._bkinfoFullPrev = value; } + } + + /// + /// Gets information about the last successful incremental backup. + /// This value is reset when is set. + /// + public JET_BKINFO bkinfoIncPrev + { + [DebuggerStepThrough] + get { return this._bkinfoIncPrev; } + internal set { this._bkinfoIncPrev = value; } + } + + /// + /// Gets information about the current backup. + /// + public JET_BKINFO bkinfoFullCur + { + [DebuggerStepThrough] + get { return this._bkinfoFullCur; } + internal set { this._bkinfoFullCur = value; } + } + + /// + /// Gets a value indicating whether catalog shadowing is enabled. + /// This value is for internal use only. + /// + public bool fShadowingDisabled + { + [DebuggerStepThrough] + get { return this._fShadowingDisabled; } + internal set { this._fShadowingDisabled = value; } + } + + /// + /// Gets a value indicating whether the database is being upgraded. + /// This value is for internal use only. + /// + public bool fUpgradeDb + { + [DebuggerStepThrough] + get { return this._fUpgradeDb; } + internal set { this._fUpgradeDb = value; } + } + + /// + /// Gets the OS major version from the last attach. + /// + public int dwMajorVersion + { + [DebuggerStepThrough] + get { return this._dwMajorVersion; } + internal set { this._dwMajorVersion = value; } + } + + /// + /// Gets the OS minor version from the last attach. + /// + public int dwMinorVersion + { + [DebuggerStepThrough] + get { return this._dwMinorVersion; } + internal set { this._dwMinorVersion = value; } + } + + /// + /// Gets the OS build number from the last attach. + /// + public int dwBuildNumber + { + [DebuggerStepThrough] + get { return this._dwBuildNumber; } + internal set { this._dwBuildNumber = value; } + } + + /// + /// Gets the OS Service Pack number from the last attach. + /// + public int lSPNumber + { + [DebuggerStepThrough] + get { return this._lSPNumber; } + internal set { this._lSPNumber = value; } + } + + /// + /// Gets the database page size. A value of 0 means 4Kb pages. + /// + public int cbPageSize + { + [DebuggerStepThrough] + get { return this._cbPageSize; } + internal set { this._cbPageSize = value; } + } + + /// + /// Gets the minimum log generation required for replaying the logs. + /// Typically the checkpoint generation. + /// + public int genMinRequired + { + [DebuggerStepThrough] + get { return this._genMinRequired; } + internal set { this._genMinRequired = value; } + } + + /// + /// Gets the maximum log generation required for replaying the logs. + /// + public int genMaxRequired + { + [DebuggerStepThrough] + get { return this._genMaxRequired; } + internal set { this._genMaxRequired = value; } + } + + /// + /// Gets the creation time of the logfile. + /// + public JET_LOGTIME logtimeGenMaxCreate + { + [DebuggerStepThrough] + get { return this._logtimeGenMaxCreate; } + internal set { this._logtimeGenMaxCreate = value; } + } + + /// + /// Gets the number of times repair has been called on this database. + /// + public int ulRepairCount + { + [DebuggerStepThrough] + get { return this._ulRepairCount; } + internal set { this._ulRepairCount = value; } + } + + /// + /// Gets the last time that repair was run against this database. + /// + public JET_LOGTIME logtimeRepair + { + [DebuggerStepThrough] + get { return this._logtimeRepair; } + internal set { this._logtimeRepair = value; } + } + + /// + /// Gets the number of times this database was repaired before the last defrag. + /// + public int ulRepairCountOld + { + [DebuggerStepThrough] + get { return this._ulRepairCountOld; } + internal set { this._ulRepairCountOld = value; } + } + + /// + /// Gets the number of times a one bit error was successfully fixed. + /// + public int ulECCFixSuccess + { + [DebuggerStepThrough] + get { return this._ulECCFixSuccess; } + internal set { this._ulECCFixSuccess = value; } + } + + /// + /// Gets the last time a one bit error was successfully fixed. + /// + public JET_LOGTIME logtimeECCFixSuccess + { + [DebuggerStepThrough] + get { return this._logtimeECCFixSuccess; } + internal set { this._logtimeECCFixSuccess = value; } + } + + /// + /// Gets the number of times a one bit error was successfully fixed before the last repair. + /// + public int ulECCFixSuccessOld + { + [DebuggerStepThrough] + get { return this._ulECCFixSuccessOld; } + internal set { this._ulECCFixSuccessOld = value; } + } + + /// + /// Gets the number of times an uncorrectable one bit error was encountered. + /// + public int ulECCFixFail + { + [DebuggerStepThrough] + get { return this._ulECCFixFail; } + internal set { this._ulECCFixFail = value; } + } + + /// + /// Gets the last time an uncorrectable one bit error was encountered. + /// + public JET_LOGTIME logtimeECCFixFail + { + [DebuggerStepThrough] + get { return this._logtimeECCFixFail; } + internal set { this._logtimeECCFixFail = value; } + } + + /// + /// Gets the number of times an uncorrectable one bit error was encountered. + /// + public int ulECCFixFailOld + { + [DebuggerStepThrough] + get { return this._ulECCFixFailOld; } + internal set { this._ulECCFixFailOld = value; } + } + + /// + /// Gets the number of times a non-correctable checksum error was found. + /// + public int ulBadChecksum + { + [DebuggerStepThrough] + get { return this._ulBadChecksum; } + internal set { this._ulBadChecksum = value; } + } + + /// + /// Gets the last time a non-correctable checksum error was found. + /// + public JET_LOGTIME logtimeBadChecksum + { + [DebuggerStepThrough] + get { return this._logtimeBadChecksum; } + internal set { this._logtimeBadChecksum = value; } + } + + /// + /// Gets the number of times a non-correctable checksum error was found before the last repair. + /// + public int ulBadChecksumOld + { + [DebuggerStepThrough] + get { return this._ulBadChecksumOld; } + internal set { this._ulBadChecksumOld = value; } + } + + /// + /// Gets the maximum log generation committed to the database. Typically the current log generation. + /// + public int genCommitted + { + [DebuggerStepThrough] + get { return this._genCommitted; } + internal set { this._genCommitted = value; } + } + + /// + /// Gets information about the last successful copy backup. + /// + public JET_BKINFO bkinfoCopyPrev + { + [DebuggerStepThrough] + get { return this._bkinfoCopyPrev; } + internal set { this._bkinfoCopyPrev = value; } + } + + /// + /// Gets information about the last successful differential backup. Reset when + /// is set. + /// + public JET_BKINFO bkinfoDiffPrev + { + [DebuggerStepThrough] + get { return this._bkinfoDiffPrev; } + internal set { this._bkinfoDiffPrev = value; } + } + + #endregion + + /// + /// Gets a string representation of this object. + /// + /// A string representation of this object. + public override string ToString() + { + return string.Format(CultureInfo.InvariantCulture, "JET_DBINFOMISC({0})", this._signDb); + } + + /// + /// Returns the hash code for this instance. + /// + /// The hash code for this instance. + public override int GetHashCode() + { + var hashes = new[] + { + this._ulVersion, + this._ulUpdate, + this._signDb.GetHashCode(), + this._dbstate.GetHashCode(), + this._lgposConsistent.GetHashCode(), + this._logtimeConsistent.GetHashCode(), + this._logtimeAttach.GetHashCode(), + this._lgposAttach.GetHashCode(), + this._logtimeDetach.GetHashCode(), + this._lgposDetach.GetHashCode(), + this._signLog.GetHashCode(), + this._bkinfoFullPrev.GetHashCode(), + this._bkinfoIncPrev.GetHashCode(), + this._bkinfoFullCur.GetHashCode(), + this._fShadowingDisabled.GetHashCode(), + this._fUpgradeDb.GetHashCode(), + this._dwMajorVersion, + this._dwMinorVersion, + this._dwBuildNumber, + this._lSPNumber, + this._cbPageSize, + this._genMinRequired, + this._genMaxRequired, + this._logtimeGenMaxCreate.GetHashCode(), + this._ulRepairCount, + this._logtimeRepair.GetHashCode(), + this._ulRepairCountOld, + this._ulECCFixSuccess, + this._logtimeECCFixSuccess.GetHashCode(), + this._ulECCFixSuccessOld, + this._ulECCFixFail, + this._logtimeECCFixFail.GetHashCode(), + this._ulECCFixFailOld, + this._ulBadChecksum, + this._logtimeBadChecksum.GetHashCode(), + this._ulBadChecksumOld, + this._genCommitted, + this._bkinfoCopyPrev.GetHashCode(), + this._bkinfoDiffPrev.GetHashCode(), + }; + + var listHashes = new List(hashes); + this.AddNotYetPublishedHashCodes(listHashes); + + return Util.CalculateHashCode(listHashes); + } + + /// + /// Determines whether the specified is equal to the current . + /// + /// The to compare with the current . + /// + /// True if the specified is equal to the current ; otherwise, false. + /// + public override bool Equals(object obj) + { + if (obj == null || this.GetType() != obj.GetType()) + { + return false; + } + + return this.Equals((JET_DBINFOMISC)obj); + } + + /// + /// Indicates whether the current object is equal to another object of the same type. + /// + /// An object to compare with this object. + /// + /// True if the current object is equal to the parameter; otherwise, false. + /// + public bool Equals(JET_DBINFOMISC other) + { + if (null == other) + { + return false; + } + + bool notYetPublishedEquals = true; + this.NotYetPublishedEquals(other, ref notYetPublishedEquals); + + return notYetPublishedEquals + && this._ulVersion == other._ulVersion + && this._ulUpdate == other._ulUpdate + && this._signDb == other._signDb + && this._dbstate == other._dbstate + && this._lgposConsistent == other._lgposConsistent + && this._logtimeConsistent == other._logtimeConsistent + && this._logtimeAttach == other._logtimeAttach + && this._lgposAttach == other._lgposAttach + && this._logtimeDetach == other._logtimeDetach + && this._lgposDetach == other._lgposDetach + && this._signLog == other._signLog + && this._bkinfoFullPrev == other._bkinfoFullPrev + && this._bkinfoIncPrev == other._bkinfoIncPrev + && this._bkinfoFullCur == other._bkinfoFullCur + && this._fShadowingDisabled == other._fShadowingDisabled + && this._fUpgradeDb == other._fUpgradeDb + && this._dwMajorVersion == other._dwMajorVersion + && this._dwMinorVersion == other._dwMinorVersion + && this._dwBuildNumber == other._dwBuildNumber + && this._lSPNumber == other._lSPNumber + && this._cbPageSize == other._cbPageSize + && this._genMinRequired == other._genMinRequired + && this._genMaxRequired == other._genMaxRequired + && this._logtimeGenMaxCreate == other._logtimeGenMaxCreate + && this._ulRepairCount == other._ulRepairCount + && this._logtimeRepair == other._logtimeRepair + && this._ulRepairCountOld == other._ulRepairCountOld + && this._ulECCFixSuccess == other._ulECCFixSuccess + && this._logtimeECCFixSuccess == other._logtimeECCFixSuccess + && this._ulECCFixSuccessOld == other._ulECCFixSuccessOld + && this._ulECCFixFail == other._ulECCFixFail + && this._logtimeECCFixFail == other._logtimeECCFixFail + && this._ulECCFixFailOld == other._ulECCFixFailOld + && this._ulBadChecksum == other._ulBadChecksum + && this._logtimeBadChecksum == other._logtimeBadChecksum + && this._ulBadChecksumOld == other._ulBadChecksumOld + && this._genCommitted == other._genCommitted + && this._bkinfoCopyPrev == other._bkinfoCopyPrev + && this._bkinfoDiffPrev == other._bkinfoDiffPrev; + } + + /// + /// Sets the members of this object from a native object. + /// + /// The native object. + internal void SetFromNativeDbinfoMisc(ref NATIVE_DBINFOMISC native) + { + unchecked + { + this._ulVersion = (int)native.ulVersion; + this._ulUpdate = (int)native.ulUpdate; + this._signDb = new JET_SIGNATURE(native.signDb); + this._dbstate = (JET_dbstate)native.dbstate; + this._lgposConsistent = native.lgposConsistent; + this._logtimeConsistent = native.logtimeConsistent; + this._logtimeAttach = native.logtimeAttach; + this._lgposAttach = native.lgposAttach; + this._logtimeDetach = native.logtimeDetach; + this._lgposDetach = native.lgposDetach; + this._signLog = new JET_SIGNATURE(native.signLog); + this._bkinfoFullPrev = native.bkinfoFullPrev; + this._bkinfoIncPrev = native.bkinfoIncPrev; + this._bkinfoFullCur = native.bkinfoFullCur; + this._fShadowingDisabled = 0 != native.fShadowingDisabled; + this._fUpgradeDb = 0 != native.fUpgradeDb; + this._dwMajorVersion = (int)native.dwMajorVersion; + this._dwMinorVersion = (int)native.dwMinorVersion; + this._dwBuildNumber = (int)native.dwBuildNumber; + this._lSPNumber = (int)native.lSPNumber; + this._cbPageSize = (int)native.cbPageSize; + } + } + + /// + /// Sets the members of this object from a native object. + /// + /// The native object. + internal void SetFromNativeDbinfoMisc(ref NATIVE_DBINFOMISC4 native) + { + this.SetFromNativeDbinfoMisc(ref native.dbinfo); + + unchecked + { + this._genMinRequired = (int)native.genMinRequired; + this._genMaxRequired = (int)native.genMaxRequired; + this._logtimeGenMaxCreate = native.logtimeGenMaxCreate; + this._ulRepairCount = (int)native.ulRepairCount; + this._logtimeRepair = native.logtimeRepair; + this._ulRepairCountOld = (int)native.ulRepairCountOld; + this._ulECCFixSuccess = (int)native.ulECCFixSuccess; + this._logtimeECCFixSuccess = native.logtimeECCFixSuccess; + this._ulECCFixSuccessOld = (int)native.ulECCFixSuccessOld; + this._ulECCFixFail = (int)native.ulECCFixFail; + this._logtimeECCFixFail = native.logtimeECCFixFail; + this._ulECCFixFailOld = (int)native.ulECCFixFailOld; + this._ulBadChecksum = (int)native.ulBadChecksum; + this._logtimeBadChecksum = native.logtimeBadChecksum; + this._ulBadChecksumOld = (int)native.ulBadChecksumOld; + this._genCommitted = (int)native.genCommitted; + this._bkinfoCopyPrev = native.bkinfoCopyPrev; + this._bkinfoDiffPrev = native.bkinfoDiffPrev; + } + } + + /// + /// Calculates the native version of the structure. + /// + /// The native version of the structure. + internal NATIVE_DBINFOMISC GetNativeDbinfomisc() + { + NATIVE_DBINFOMISC native = new NATIVE_DBINFOMISC(); + + unchecked + { + native.ulVersion = (uint)this._ulVersion; + native.ulUpdate = (uint)this._ulUpdate; + native.signDb = this._signDb.GetNativeSignature(); + native.dbstate = (uint)this._dbstate; + native.lgposConsistent = this._lgposConsistent; + native.logtimeConsistent = this._logtimeConsistent; + native.logtimeAttach = this._logtimeAttach; + native.lgposAttach = this._lgposAttach; + native.logtimeDetach = this._logtimeDetach; + native.lgposDetach = this._lgposDetach; + native.signLog = this._signLog.GetNativeSignature(); + native.bkinfoFullPrev = this._bkinfoFullPrev; + native.bkinfoIncPrev = this._bkinfoIncPrev; + native.bkinfoFullCur = this._bkinfoFullCur; + native.fShadowingDisabled = this._fShadowingDisabled ? 1u : 0u; + native.fUpgradeDb = this._fUpgradeDb ? 1u : 0u; + native.dwMajorVersion = (uint)this._dwMajorVersion; + native.dwMinorVersion = (uint)this._dwMinorVersion; + native.dwBuildNumber = (uint)this._dwBuildNumber; + native.lSPNumber = (uint)this._lSPNumber; + native.cbPageSize = (uint)this._cbPageSize; + } + + return native; + } + + /// + /// Calculates the native version of the structure. + /// + /// The native version of the structure. + internal NATIVE_DBINFOMISC4 GetNativeDbinfomisc4() + { + NATIVE_DBINFOMISC4 native = new NATIVE_DBINFOMISC4(); + + native.dbinfo = this.GetNativeDbinfomisc(); + + unchecked + { + native.genMinRequired = (uint)this._genMinRequired; + native.genMaxRequired = (uint)this._genMaxRequired; + native.logtimeGenMaxCreate = this._logtimeGenMaxCreate; + native.ulRepairCount = (uint)this._ulRepairCount; + native.logtimeRepair = this._logtimeRepair; + native.ulRepairCountOld = (uint)this._ulRepairCountOld; + native.ulECCFixSuccess = (uint)this._ulECCFixSuccess; + native.logtimeECCFixSuccess = this._logtimeECCFixSuccess; + native.ulECCFixSuccessOld = (uint)this._ulECCFixSuccessOld; + native.ulECCFixFail = (uint)this._ulECCFixFail; + native.logtimeECCFixFail = this._logtimeECCFixFail; + native.ulECCFixFailOld = (uint)this._ulECCFixFailOld; + native.ulBadChecksum = (uint)this._ulBadChecksum; + native.logtimeBadChecksum = this._logtimeBadChecksum; + native.ulBadChecksumOld = (uint)this._ulBadChecksumOld; + native.genCommitted = (uint)this._genCommitted; + native.bkinfoCopyPrev = this._bkinfoCopyPrev; + native.bkinfoDiffPrev = this._bkinfoDiffPrev; + } + + return native; + } + + /// + /// Provides a hook to allow comparison of additional fields in + /// a different file. These additonal fields are not yet published + /// on MSDN. + /// + /// The structure to compare with. + /// Whether the additional fields in + /// are the same as this. + partial void NotYetPublishedEquals(JET_DBINFOMISC other, ref bool notYetPublishedEquals); + + /// + /// Provides a hook to allow additional fields to be calculated in the hashcode. + /// These additonal fields are not yet published on MSDN. + /// + /// The list of hashcodes to add to. + partial void AddNotYetPublishedHashCodes(IList hashCodes); + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/jet_dbstate.cs b/WelsonJS.Toolkit/EsentInterop/jet_dbstate.cs new file mode 100644 index 0000000..1a9c1bb --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/jet_dbstate.cs @@ -0,0 +1,39 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + /// + /// Database states (used in ). + /// + public enum JET_dbstate + { + /// + /// The database was just created. + /// + JustCreated = 1, + + /// + /// Dirty shutdown (inconsistent) database. + /// + DirtyShutdown = 2, + + /// + /// Clean shutdown (consistent) database. + /// + CleanShutdown = 3, + + /// + /// Database is being converted. + /// + BeingConverted = 4, + + /// + /// Database was force-detached. + /// + ForceDetach = 5, + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/jet_enumcolumn.cs b/WelsonJS.Toolkit/EsentInterop/jet_enumcolumn.cs new file mode 100644 index 0000000..74f854b --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/jet_enumcolumn.cs @@ -0,0 +1,196 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Diagnostics.CodeAnalysis; + using System.Globalization; + using System.Runtime.InteropServices; + + /// + /// Native (unmanaged) version of the JET_ENUMCOLUMN structure. + /// + [StructLayout(LayoutKind.Sequential)] + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1300:ElementMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + [SuppressMessage("Microsoft.StyleCop.CSharp.NamingRules", + "SA1305:FieldNamesMustNotUseHungarianNotation", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1307:AccessibleFieldsMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + internal unsafe struct NATIVE_ENUMCOLUMN + { + /// + /// The columnid that was enumerated. + /// + public uint columnid; + + /// + /// The column status code from the enumeration of the column. + /// + public int err; + + /// + /// The size of the value that was enumerated for the column. + /// This member is only used if is equal to + /// . + /// + /// + /// The unmanaged JET_ENUMCOLUMN structure is a union so this + /// is aliased with cEnumColumnValue. + /// + public uint cbData; + + /// + /// The the value that was enumerated for the column. + /// This member is only used if is equal to + /// . + /// + /// + /// The unmanaged JET_ENUMCOLUMN structure is a union so this + /// is aliased with rgEnumColumnValue. + /// + public IntPtr pvData; + + /// + /// Gets or sets the number of entries in rgEnumColumnValue. + /// This member is only used if is not + /// . + /// + /// + /// The unmanaged JET_ENUMCOLUMN structure is a union so this + /// property uses cbData as its backing storage. + /// + public uint cEnumColumnValue + { + get + { + return this.cbData; + } + + set + { + this.cbData = value; + } + } + + /// + /// Gets or sets an array of column values. + /// This member is only used if is not + /// . + /// + /// + /// The unmanaged JET_ENUMCOLUMN structure is a union so this + /// property uses pvData as its backing storage. + /// + public NATIVE_ENUMCOLUMNVALUE* rgEnumColumnValue + { + get + { + return (NATIVE_ENUMCOLUMNVALUE*)this.pvData; + } + + set + { + this.pvData = new IntPtr(value); + } + } + } + + /// + /// Enumerates the column values of a record using the JetEnumerateColumns + /// function. JetEnumerateColumns returns an array of JET_ENUMCOLUMNVALUE + /// structures. The array is returned in memory that was allocated using + /// the callback that was supplied to that function. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1300:ElementMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + public class JET_ENUMCOLUMN + { + /// + /// Gets the columnid ID that was enumerated. + /// + public JET_COLUMNID columnid { get; internal set; } + + /// + /// Gets the column status code that results from the enumeration. + /// + /// + public JET_wrn err { get; internal set; } + + /// + /// Gets the number of column values enumerated for the column. + /// This member is only used if is not + /// . + /// + public int cEnumColumnValue { get; internal set; } + + /// + /// Gets the enumerated column values for the column. + /// This member is only used if is not + /// . + /// + public JET_ENUMCOLUMNVALUE[] rgEnumColumnValue { get; internal set; } + + /// + /// Gets the size of the value that was enumerated for the column. + /// This member is only used if is equal to + /// . + /// + public int cbData { get; internal set; } + + /// + /// Gets the the value that was enumerated for the column. + /// This member is only used if is equal to + /// . + /// This points to memory allocated with the + /// allocator callback passed to + /// . + /// Remember to release the memory when finished. + /// + public IntPtr pvData { get; internal set; } + + /// + /// Returns a that represents the current . + /// + /// + /// A that represents the current . + /// + public override string ToString() + { + return string.Format(CultureInfo.InvariantCulture, "JET_ENUMCOLUMN(0x{0:x})", this.columnid); + } + + /// + /// Sets the fields of the object from a native JET_ENUMCOLUMN struct. + /// + /// + /// The native enumcolumn to set the values from. + /// + internal void SetFromNativeEnumColumn(NATIVE_ENUMCOLUMN value) + { + this.columnid = new JET_COLUMNID { Value = value.columnid }; + this.err = (JET_wrn)value.err; + if (JET_wrn.ColumnSingleValue == this.err) + { + this.cbData = checked((int)value.cbData); + this.pvData = value.pvData; + } + else + { + this.cEnumColumnValue = checked((int)value.cEnumColumnValue); + this.rgEnumColumnValue = null; + } + } + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/jet_enumcolumnid.cs b/WelsonJS.Toolkit/EsentInterop/jet_enumcolumnid.cs new file mode 100644 index 0000000..b869153 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/jet_enumcolumnid.cs @@ -0,0 +1,126 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Diagnostics.CodeAnalysis; + using System.Globalization; + using System.Runtime.InteropServices; + + /// + /// The native (unmanaged) version of the + /// class. + /// + [StructLayout(LayoutKind.Sequential)] + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1307:AccessibleFieldsMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + internal unsafe struct NATIVE_ENUMCOLUMNID + { + /// + /// Column ID to enumerate. + /// + public uint columnid; + + /// + /// Count of column values to enumerate. + /// + public uint ctagSequence; + + /// + /// Column values to enumerate. + /// + public uint* rgtagSequence; + } + + /// + /// Enumerates a specific set of columns and, optionally, a specific set + /// of multiple values for those columns when the JetEnumerateColumns + /// function is used. JetEnumerateColumns optionally takes an array of + /// JET_ENUMCOLUMNID structures. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1300:ElementMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + public class JET_ENUMCOLUMNID + { + /// + /// Gets or sets the columnid ID to enumerate. + /// + /// + /// If the column ID is 0 (zero) then the enumeration of this column is + /// skipped and a corresponding slot in the output array of JET_ENUMCOLUMN + /// structures will be generated with a column state of JET_wrnColumnSkipped. + /// + public JET_COLUMNID columnid { get; set; } + + /// + /// Gets or sets the count of column values (by one-based index) to + /// enumerate for the specified column ID. If ctagSequence is 0 (zero) then + /// rgtagSequence is ignored and all column values for the specified column + /// ID will be enumerated. + /// + public int ctagSequence { get; set; } + + /// + /// Gets or sets the array of one-based indices into the array of column values for a + /// given column. A single element is an itagSequence which is defined in + /// JET_RETRIEVECOLUMN. An itagSequence of 0 (zero) means "skip". An + /// itagSequence of 1 means return the first column value of the column, + /// 2 means the second, and so on. + /// + public int[] rgtagSequence { get; set; } + + /// + /// Returns a that represents the current . + /// + /// + /// A that represents the current . + /// + public override string ToString() + { + return string.Format(CultureInfo.InvariantCulture, "JET_ENUMCOLUMNID(0x{0:x})", this.columnid); + } + + /// + /// Check to see if ctagSequence is negative or greater than the length + /// of rgtagSequence. + /// + internal void CheckDataSize() + { + if (this.ctagSequence < 0) + { + throw new ArgumentOutOfRangeException("ctagSequence", "ctagSequence cannot be negative"); + } + + if ((null == this.rgtagSequence && 0 != this.ctagSequence) || (null != this.rgtagSequence && this.ctagSequence > this.rgtagSequence.Length)) + { + throw new ArgumentOutOfRangeException( + "ctagSequence", + this.ctagSequence, + "cannot be greater than the length of the pvData"); + } + } + + /// + /// Gets the native (interop) version of this object. + /// + /// A NATIVE_ENUMCOLUMNID representing this object. + internal NATIVE_ENUMCOLUMNID GetNativeEnumColumnid() + { + this.CheckDataSize(); + var value = new NATIVE_ENUMCOLUMNID + { + columnid = this.columnid.Value, + ctagSequence = checked((uint)this.ctagSequence) + }; + return value; + } + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/jet_enumcolumnvalue.cs b/WelsonJS.Toolkit/EsentInterop/jet_enumcolumnvalue.cs new file mode 100644 index 0000000..a30dd16 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/jet_enumcolumnvalue.cs @@ -0,0 +1,117 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Diagnostics.CodeAnalysis; + using System.Globalization; + using System.Runtime.InteropServices; + + /// + /// Native (unmanaged) version of the JET_ENUMCOLUMNVALUE class. + /// + [StructLayout(LayoutKind.Sequential)] + [SuppressMessage("Microsoft.StyleCop.CSharp.NamingRules", + "SA1305:FieldNamesMustNotUseHungarianNotation", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1307:AccessibleFieldsMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + internal struct NATIVE_ENUMCOLUMNVALUE + { + /// + /// The column value that was enumerated. + /// + public uint itagSequence; + + /// + /// Error or warning from the enumeration. + /// + public int err; + + /// + /// Size of returned data. + /// + public uint cbData; + + /// + /// Pointer to returned data. + /// + public IntPtr pvData; + } + + /// + /// Enumerates the column values of a record using the JetEnumerateColumns + /// function. + /// returns an array of JET_ENUMCOLUMNVALUE + /// structures. The array is returned in memory that was allocated using + /// the callback that was supplied to that function. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1300:ElementMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + [SuppressMessage("Microsoft.StyleCop.CSharp.NamingRules", + "SA1305:FieldNamesMustNotUseHungarianNotation", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + public class JET_ENUMCOLUMNVALUE + { + /// + /// Gets the column value (by one-based index) that was enumerated. + /// + public int itagSequence { get; internal set; } + + /// + /// Gets the column status code resulting from the enumeration of the + /// column value. + /// + /// + /// + /// + public JET_wrn err { get; internal set; } + + /// + /// Gets the size of the column value for the column. + /// + public int cbData { get; internal set; } + + /// + /// Gets the value that was enumerated for the column. + /// + public IntPtr pvData { get; internal set; } + + /// + /// Returns a that represents the current . + /// + /// + /// A that represents the current . + /// + public override string ToString() + { + return string.Format( + CultureInfo.InvariantCulture, + "JET_ENUMCOLUMNVALUE(itagSequence = {0}, cbData = {1})", + this.itagSequence, + this.cbData); + } + + /// + /// Sets the fields of the object from a native JET_ENUMCOLUMN struct. + /// + /// + /// The native enumcolumn to set the values from. + /// + internal void SetFromNativeEnumColumnValue(NATIVE_ENUMCOLUMNVALUE value) + { + this.itagSequence = checked((int)value.itagSequence); + this.err = (JET_wrn)value.err; + this.cbData = checked((int)value.cbData); + this.pvData = value.pvData; + } + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/jet_err.cs b/WelsonJS.Toolkit/EsentInterop/jet_err.cs new file mode 100644 index 0000000..998a5a1 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/jet_err.cs @@ -0,0 +1,2013 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System.Diagnostics.CodeAnalysis; + + /// + /// ESENT error codes. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.DocumentationRules", + "SA1629:DocumentationTextMustEndWithAPeriod", + Justification = "Auto-generated comments.")] + [SuppressMessage( + "Microsoft.StyleCop.CSharp.DocumentationRules", + "SA1628:DocumentationTextMustBeginWithACapitalLetter", + Justification = "Auto-generated comments.")] + public enum JET_err + { + /// + /// Successful operation. + /// + Success = 0, + + #region Errors + + /// + /// Resource Failure Simulator failure + /// + RfsFailure = -100, + + /// + /// Resource Failure Simulator not initialized + /// + RfsNotArmed = -101, + + /// + /// Could not close file + /// + FileClose = -102, + + /// + /// Could not start thread + /// + OutOfThreads = -103, + + /// + /// System busy due to too many IOs + /// + TooManyIO = -105, + + /// + /// A requested async task could not be executed + /// + TaskDropped = -106, + + /// + /// Fatal internal error + /// + InternalError = -107, + + /// + /// You are running MinESE, that does not have all features compiled in. This functionality is only supported in a full version of ESE. + /// + DisabledFunctionality = -112, + + /// + /// The desired OS functionality could not be located and loaded / linked. + /// + UnloadableOSFunctionality = -113, + + /// + /// A required hardware device or functionality was missing. + /// + DeviceMissing = -114, + + /// + /// A required hardware device was misconfigured externally. + /// + DeviceMisconfigured = -115, + + /// + /// Timeout occurred while waiting for a hardware device to respond. + /// + DeviceTimeout = -116, + + /// + /// A required hardware device didn't function as expected. + /// + DeviceFailure = -118, + + /// + /// Buffer dependencies improperly set. Recovery failure + /// + DatabaseBufferDependenciesCorrupted = -255, + + /// + /// Version already existed. Recovery failure + /// + PreviousVersion = -322, + + /// + /// Reached Page Boundary + /// + PageBoundary = -323, + + /// + /// Reached Key Boundary + /// + KeyBoundary = -324, + + /// + /// Database corrupted + /// + BadPageLink = -327, + + /// + /// Bookmark has no corresponding address in database + /// + BadBookmark = -328, + + /// + /// A call to the operating system failed + /// + NTSystemCallFailed = -334, + + /// + /// Database corrupted + /// + BadParentPageLink = -338, + + /// + /// AvailExt cache doesn't match btree + /// + SPAvailExtCacheOutOfSync = -340, + + /// + /// AvailExt space tree is corrupt + /// + SPAvailExtCorrupted = -341, + + /// + /// Out of memory allocating an AvailExt cache node + /// + SPAvailExtCacheOutOfMemory = -342, + + /// + /// OwnExt space tree is corrupt + /// + SPOwnExtCorrupted = -343, + + /// + /// Dbtime on current page is greater than global database dbtime + /// + DbTimeCorrupted = -344, + + /// + /// key truncated on index that disallows key truncation + /// + KeyTruncated = -346, + + /// + /// Some database pages have become unreachable even from the avail tree, only an offline defragmentation can return the lost space. + /// + DatabaseLeakInSpace = -348, + + /// + /// Database corrupted. Searching an unexpectedly empty page. + /// + BadEmptyPage = -351, + + /// + /// Number of lines on the page is too few compared to the line being operated on + /// + BadLineCount = -354, + + /// + /// Key is too large + /// + KeyTooBig = -408, + + /// + /// illegal attempt to separate an LV which must be intrinsic + /// + CannotSeparateIntrinsicLV = -416, + + /// + /// Operation not supported on separated long-value + /// + SeparatedLongValue = -421, + + /// + /// Can only preread long value columns that can be separate, e.g. not size constrained so that they are fixed or variable columns + /// + MustBeSeparateLongValue = -423, + + /// + /// Cannot preread long values when current index secondary + /// + InvalidPreread = -424, + + /// + /// Column reference is invalid + /// + InvalidColumnReference = -426, + + /// + /// Column reference is stale + /// + StaleColumnReference = -427, + + /// + /// A compression integrity check failed. Decompressing data failed the integrity checksum indicating a data corruption in the compress/decompress pipeline. + /// + CompressionIntegrityCheckFailed = -431, + + /// + /// Logged operation cannot be redone + /// + InvalidLoggedOperation = -500, + + /// + /// Log file is corrupt + /// + LogFileCorrupt = -501, + + /// + /// No backup directory given + /// + NoBackupDirectory = -503, + + /// + /// The backup directory is not empty + /// + BackupDirectoryNotEmpty = -504, + + /// + /// Backup is active already + /// + BackupInProgress = -505, + + /// + /// Restore in progress + /// + RestoreInProgress = -506, + + /// + /// Missing the log file for check point + /// + MissingPreviousLogFile = -509, + + /// + /// Failure writing to log file + /// + LogWriteFail = -510, + + /// + /// Try to log something after recovery failed + /// + LogDisabledDueToRecoveryFailure = -511, + + /// + /// Try to log something during recovery redo + /// + CannotLogDuringRecoveryRedo = -512, + + /// + /// Name of logfile does not match internal generation number + /// + LogGenerationMismatch = -513, + + /// + /// Version of log file is not compatible with Jet version + /// + BadLogVersion = -514, + + /// + /// Timestamp in next log does not match expected + /// + InvalidLogSequence = -515, + + /// + /// Log is not active + /// + LoggingDisabled = -516, + + /// + /// An operation generated a log record which was too large to fit in the log buffer or in a single log file + /// + LogBufferTooSmall = -517, + + /// + /// Maximum log file number exceeded + /// + LogSequenceEnd = -519, + + /// + /// No backup in progress + /// + NoBackup = -520, + + /// + /// Backup call out of sequence + /// + InvalidBackupSequence = -521, + + /// + /// Cannot do backup now + /// + BackupNotAllowedYet = -523, + + /// + /// Could not delete backup file + /// + DeleteBackupFileFail = -524, + + /// + /// Could not make backup temp directory + /// + MakeBackupDirectoryFail = -525, + + /// + /// Cannot perform incremental backup when circular logging enabled + /// + InvalidBackup = -526, + + /// + /// Restored with errors + /// + RecoveredWithErrors = -527, + + /// + /// Current log file missing + /// + MissingLogFile = -528, + + /// + /// Log disk full + /// + LogDiskFull = -529, + + /// + /// Bad signature for a log file + /// + BadLogSignature = -530, + + /// + /// Bad signature for a db file + /// + BadDbSignature = -531, + + /// + /// Bad signature for a checkpoint file + /// + BadCheckpointSignature = -532, + + /// + /// Checkpoint file not found or corrupt + /// + CheckpointCorrupt = -533, + + /// + /// Patch file page not found during recovery + /// + MissingPatchPage = -534, + + /// + /// Patch file page is not valid + /// + BadPatchPage = -535, + + /// + /// Redo abruptly ended due to sudden failure in reading logs from log file + /// + RedoAbruptEnded = -536, + + /// + /// Hard restore detected that patch file is missing from backup set + /// + PatchFileMissing = -538, + + /// + /// Database does not belong with the current set of log files + /// + DatabaseLogSetMismatch = -539, + + /// + /// Database and streaming file do not match each other + /// + DatabaseStreamingFileMismatch = -540, + + /// + /// actual log file size does not match JET_paramLogFileSize + /// + LogFileSizeMismatch = -541, + + /// + /// Could not locate checkpoint file + /// + CheckpointFileNotFound = -542, + + /// + /// The required log files for recovery is missing. + /// + RequiredLogFilesMissing = -543, + + /// + /// Soft recovery is intended on a backup database. Restore should be used instead + /// + SoftRecoveryOnBackupDatabase = -544, + + /// + /// databases have been recovered, but the log file size used during recovery does not match JET_paramLogFileSize + /// + LogFileSizeMismatchDatabasesConsistent = -545, + + /// + /// the log file sector size does not match the current volume's sector size + /// + LogSectorSizeMismatch = -546, + + /// + /// databases have been recovered, but the log file sector size (used during recovery) does not match the current volume's sector size + /// + LogSectorSizeMismatchDatabasesConsistent = -547, + + /// + /// databases have been recovered, but all possible log generations in the current sequence are used; delete all log files and the checkpoint file and backup the databases before continuing + /// + LogSequenceEndDatabasesConsistent = -548, + + /// + /// Illegal attempt to replay a streaming file operation where the data wasn't logged. Probably caused by an attempt to roll-forward with circular logging enabled + /// + StreamingDataNotLogged = -549, + + /// + /// Database was not shutdown cleanly. Recovery must first be run to properly complete database operations for the previous shutdown. + /// + DatabaseDirtyShutdown = -550, + + /// + /// Database last consistent time unmatched + /// + ConsistentTimeMismatch = -551, + + /// + /// Patch file is not generated from this backup + /// + DatabasePatchFileMismatch = -552, + + /// + /// The starting log number too low for the restore + /// + EndingRestoreLogTooLow = -553, + + /// + /// The starting log number too high for the restore + /// + StartingRestoreLogTooHigh = -554, + + /// + /// Restore log file has bad signature + /// + GivenLogFileHasBadSignature = -555, + + /// + /// Restore log file is not contiguous + /// + GivenLogFileIsNotContiguous = -556, + + /// + /// Some restore log files are missing + /// + MissingRestoreLogFiles = -557, + + /// + /// The database missed a previous full backup before incremental backup + /// + MissingFullBackup = -560, + + /// + /// The backup database size is not in 4k + /// + BadBackupDatabaseSize = -561, + + /// + /// Attempted to upgrade a database that is already current + /// + DatabaseAlreadyUpgraded = -562, + + /// + /// Attempted to use a database which was only partially converted to the current format -- must restore from backup + /// + DatabaseIncompleteUpgrade = -563, + + /// + /// Some current log files are missing for continuous restore + /// + MissingCurrentLogFiles = -565, + + /// + /// dbtime on page smaller than dbtimeBefore in record + /// + DbTimeTooOld = -566, + + /// + /// dbtime on page in advance of the dbtimeBefore in record + /// + DbTimeTooNew = -567, + + /// + /// Some log or patch files are missing during backup + /// + MissingFileToBackup = -569, + + /// + /// torn-write was detected in a backup set during hard restore + /// + LogTornWriteDuringHardRestore = -570, + + /// + /// torn-write was detected during hard recovery (log was not part of a backup set) + /// + LogTornWriteDuringHardRecovery = -571, + + /// + /// corruption was detected in a backup set during hard restore + /// + LogCorruptDuringHardRestore = -573, + + /// + /// corruption was detected during hard recovery (log was not part of a backup set) + /// + LogCorruptDuringHardRecovery = -574, + + /// + /// Cannot have logging enabled while attempting to upgrade db + /// + MustDisableLoggingForDbUpgrade = -575, + + /// + /// TargetInstance specified for restore is not found or log files don't match + /// + BadRestoreTargetInstance = -577, + + /// + /// Soft recovery successfully replayed all operations, but the Undo phase of recovery was skipped + /// + RecoveredWithoutUndo = -579, + + /// + /// Databases to be restored are not from the same shadow copy backup + /// + DatabasesNotFromSameSnapshot = -580, + + /// + /// Soft recovery on a database from a shadow copy backup set + /// + SoftRecoveryOnSnapshot = -581, + + /// + /// One or more logs that were committed to this database, are missing. These log files are required to maintain durable ACID semantics, but not required to maintain consistency if the JET_bitReplayIgnoreLostLogs bit is specified during recovery. + /// + CommittedLogFilesMissing = -582, + + /// + /// The physical sector size reported by the disk subsystem, is unsupported by ESE for a specific file type. + /// + SectorSizeNotSupported = -583, + + /// + /// Soft recovery successfully replayed all operations and intended to skip the Undo phase of recovery, but the Undo phase was not required + /// + RecoveredWithoutUndoDatabasesConsistent = -584, + + /// + /// One or more logs were found to be corrupt during recovery. These log files are required to maintain durable ACID semantics, but not required to maintain consistency if the JET_bitIgnoreLostLogs bit and JET_paramDeleteOutOfRangeLogs is specified during recovery. + /// + CommittedLogFileCorrupt = -586, + + /// + /// The previous log's accumulated segment checksum doesn't match the next log + /// + LogSequenceChecksumMismatch = -590, + + /// + /// Database divergence mismatch. Page was uninitialized on remote node, but initialized on local node. + /// + PageInitializedMismatch = -596, + + /// + /// Unicode translation buffer too small + /// + UnicodeTranslationBufferTooSmall = -601, + + /// + /// Unicode normalization failed + /// + UnicodeTranslationFail = -602, + + /// + /// OS does not provide support for Unicode normalisation (and no normalisation callback was specified) + /// + UnicodeNormalizationNotSupported = -603, + + /// + /// Can not validate the language + /// + UnicodeLanguageValidationFailure = -604, + + /// + /// Existing log file has bad signature + /// + ExistingLogFileHasBadSignature = -610, + + /// + /// Existing log file is not contiguous + /// + ExistingLogFileIsNotContiguous = -611, + + /// + /// Checksum error in log file during backup + /// + LogReadVerifyFailure = -612, + + /// + /// too many outstanding generations between checkpoint and current generation + /// + CheckpointDepthTooDeep = -614, + + /// + /// hard recovery attempted on a database that wasn't a backup database + /// + RestoreOfNonBackupDatabase = -615, + + /// + /// log truncation attempted but not all required logs were copied + /// + LogFileNotCopied = -616, + + /// + /// A surrogate backup is in progress. + /// + SurrogateBackupInProgress = -617, + + /// + /// Too many outstanding generations between JetBeginTransaction and current generation. + /// + TransactionTooLong = -618, + + /// + /// The specified JET_ENGINEFORMATVERSION value is too low to be supported by this version of ESE. + /// + EngineFormatVersionNoLongerSupportedTooLow = -619, + + /// + /// The specified JET_ENGINEFORMATVERSION value is too high, higher than this version of ESE knows about. + /// + EngineFormatVersionNotYetImplementedTooHigh = -620, + + /// + /// Thrown by a format feature (not at JetSetSystemParameter) if the client requests a feature that requires a version higher than that set for the JET_paramEngineFormatVersion. + /// + EngineFormatVersionParamTooLowForRequestedFeature = -621, + + /// + /// The specified JET_ENGINEFORMATVERSION is set too low for this log stream, the log files have already been upgraded to a higher version. A higher JET_ENGINEFORMATVERSION value must be set in the param. + /// + EngineFormatVersionSpecifiedTooLowForLogVersion = -622, + + /// + /// The specified JET_ENGINEFORMATVERSION is set too low for this database file, the database file has already been upgraded to a higher version. A higher JET_ENGINEFORMATVERSION value must be set in the param. + /// + EngineFormatVersionSpecifiedTooLowForDatabaseVersion = -623, + + /// + /// Backup was aborted by server by calling JetTerm with JET_bitTermStopBackup or by calling JetStopBackup + /// + BackupAbortByServer = -801, + + /// + /// Invalid flags parameter + /// + InvalidGrbit = -900, + + /// + /// Termination in progress + /// + TermInProgress = -1000, + + /// + /// API not supported + /// + FeatureNotAvailable = -1001, + + /// + /// Invalid name + /// + InvalidName = -1002, + + /// + /// Invalid API parameter + /// + InvalidParameter = -1003, + + /// + /// Tried to attach a read-only database file for read/write operations + /// + DatabaseFileReadOnly = -1008, + + /// + /// Invalid database id + /// + InvalidDatabaseId = -1010, + + /// + /// Out of Memory + /// + OutOfMemory = -1011, + + /// + /// Maximum database size reached + /// + OutOfDatabaseSpace = -1012, + + /// + /// Out of table cursors + /// + OutOfCursors = -1013, + + /// + /// Out of database page buffers + /// + OutOfBuffers = -1014, + + /// + /// Too many indexes + /// + TooManyIndexes = -1015, + + /// + /// Too many columns in an index + /// + TooManyKeys = -1016, + + /// + /// Record has been deleted + /// + RecordDeleted = -1017, + + /// + /// Checksum error on a database page + /// + ReadVerifyFailure = -1018, + + /// + /// Blank database page + /// + PageNotInitialized = -1019, + + /// + /// Out of file handles + /// + OutOfFileHandles = -1020, + + /// + /// The OS returned ERROR_CRC from file IO + /// + DiskReadVerificationFailure = -1021, + + /// + /// Disk IO error + /// + DiskIO = -1022, + + /// + /// Invalid file path + /// + InvalidPath = -1023, + + /// + /// Invalid system path + /// + InvalidSystemPath = -1024, + + /// + /// Invalid log directory + /// + InvalidLogDirectory = -1025, + + /// + /// Record larger than maximum size + /// + RecordTooBig = -1026, + + /// + /// Too many open databases + /// + TooManyOpenDatabases = -1027, + + /// + /// Not a database file + /// + InvalidDatabase = -1028, + + /// + /// Database engine not initialized + /// + NotInitialized = -1029, + + /// + /// Database engine already initialized + /// + AlreadyInitialized = -1030, + + /// + /// Database engine is being initialized + /// + InitInProgress = -1031, + + /// + /// Cannot access file, the file is locked or in use + /// + FileAccessDenied = -1032, + + /// + /// Query support unavailable + /// + QueryNotSupported = -1034, + + /// + /// SQL Link support unavailable + /// + SQLLinkNotSupported = -1035, + + /// + /// Buffer is too small + /// + BufferTooSmall = -1038, + + /// + /// Too many columns defined + /// + TooManyColumns = -1040, + + /// + /// Container is not empty + /// + ContainerNotEmpty = -1043, + + /// + /// Filename is invalid + /// + InvalidFilename = -1044, + + /// + /// Invalid bookmark + /// + InvalidBookmark = -1045, + + /// + /// Column used in an index + /// + ColumnInUse = -1046, + + /// + /// Data buffer doesn't match column size + /// + InvalidBufferSize = -1047, + + /// + /// Cannot set column value + /// + ColumnNotUpdatable = -1048, + + /// + /// Index is in use + /// + IndexInUse = -1051, + + /// + /// Link support unavailable + /// + LinkNotSupported = -1052, + + /// + /// Null keys are disallowed on index + /// + NullKeyDisallowed = -1053, + + /// + /// Operation must be within a transaction + /// + NotInTransaction = -1054, + + /// + /// Transaction must rollback because failure of unversioned update + /// + MustRollback = -1057, + + /// + /// Too many active database users + /// + TooManyActiveUsers = -1059, + + /// + /// Invalid or unknown country/region code + /// + InvalidCountry = -1061, + + /// + /// Invalid or unknown language id + /// + InvalidLanguageId = -1062, + + /// + /// Invalid or unknown code page + /// + InvalidCodePage = -1063, + + /// + /// Invalid flags for LCMapString() + /// + InvalidLCMapStringFlags = -1064, + + /// + /// Attempted to create a version store entry (RCE) larger than a version bucket + /// + VersionStoreEntryTooBig = -1065, + + /// + /// Version store out of memory (and cleanup attempt failed to complete) + /// + VersionStoreOutOfMemoryAndCleanupTimedOut = -1066, + + /// + /// Version store out of memory (cleanup already attempted) + /// + VersionStoreOutOfMemory = -1069, + + /// + /// UNUSED: lCSRPerfFUCB * g_lCursorsMax exceeded (XJET only) + /// + CurrencyStackOutOfMemory = -1070, + + /// + /// Cannot index escrow column + /// + CannotIndex = -1071, + + /// + /// Record has not been deleted + /// + RecordNotDeleted = -1072, + + /// + /// Too many mempool entries requested + /// + TooManyMempoolEntries = -1073, + + /// + /// Out of btree ObjectIDs (perform offline defrag to reclaim freed/unused ObjectIds) + /// + OutOfObjectIDs = -1074, + + /// + /// Long-value ID counter has reached maximum value. (perform offline defrag to reclaim free/unused LongValueIDs) + /// + OutOfLongValueIDs = -1075, + + /// + /// Auto-increment counter has reached maximum value (offline defrag WILL NOT be able to reclaim free/unused Auto-increment values). + /// + OutOfAutoincrementValues = -1076, + + /// + /// Dbtime counter has reached maximum value (perform offline defrag to reclaim free/unused Dbtime values) + /// + OutOfDbtimeValues = -1077, + + /// + /// Sequential index counter has reached maximum value (perform offline defrag to reclaim free/unused SequentialIndex values) + /// + OutOfSequentialIndexValues = -1078, + + /// + /// Multi-instance call with single-instance mode enabled + /// + RunningInOneInstanceMode = -1080, + + /// + /// Single-instance call with multi-instance mode enabled + /// + RunningInMultiInstanceMode = -1081, + + /// + /// Global system parameters have already been set + /// + SystemParamsAlreadySet = -1082, + + /// + /// System path already used by another database instance + /// + SystemPathInUse = -1083, + + /// + /// Logfile path already used by another database instance + /// + LogFilePathInUse = -1084, + + /// + /// Temp path already used by another database instance + /// + TempPathInUse = -1085, + + /// + /// Instance Name already in use + /// + InstanceNameInUse = -1086, + + /// + /// Global system parameters have already been set, but to a conflicting or disagreeable state to the specified values. + /// + SystemParameterConflict = -1087, + + /// + /// This instance cannot be used because it encountered a fatal error + /// + InstanceUnavailable = -1090, + + /// + /// This database cannot be used because it encountered a fatal error + /// + DatabaseUnavailable = -1091, + + /// + /// This instance cannot be used because it encountered a log-disk-full error performing an operation (likely transaction rollback) that could not tolerate failure + /// + InstanceUnavailableDueToFatalLogDiskFull = -1092, + + /// + /// This JET_sesparam* identifier is not known to the ESE engine. + /// + InvalidSesparamId = -1093, + + /// + /// There are too many records to enumerate, switch to an API that handles 64-bit numbers + /// + TooManyRecords = -1094, + + /// + /// This JET_dbparam* identifier is not known to the ESE engine. + /// + InvalidDbparamId = -1095, + + /// + /// Out of sessions + /// + OutOfSessions = -1101, + + /// + /// Write lock failed due to outstanding write lock + /// + WriteConflict = -1102, + + /// + /// Transactions nested too deeply + /// + TransTooDeep = -1103, + + /// + /// Invalid session handle + /// + InvalidSesid = -1104, + + /// + /// Update attempted on uncommitted primary index + /// + WriteConflictPrimaryIndex = -1105, + + /// + /// Operation not allowed within a transaction + /// + InTransaction = -1108, + + /// + /// Must rollback current transaction -- cannot commit or begin a new one + /// + RollbackRequired = -1109, + + /// + /// Read-only transaction tried to modify the database + /// + TransReadOnly = -1110, + + /// + /// Attempt to replace the same record by two different cursors in the same session + /// + SessionWriteConflict = -1111, + + /// + /// record would be too big if represented in a database format from a previous version of Jet + /// + RecordTooBigForBackwardCompatibility = -1112, + + /// + /// The temp table could not be created due to parameters that conflict with JET_bitTTForwardOnly + /// + CannotMaterializeForwardOnlySort = -1113, + + /// + /// This session handle can't be used with this table id + /// + SesidTableIdMismatch = -1114, + + /// + /// Invalid instance handle + /// + InvalidInstance = -1115, + + /// + /// The instance was shutdown successfully but all the attached databases were left in a dirty state by request via JET_bitTermDirty + /// + DirtyShutdown = -1116, + + /// + /// The database page read from disk had the wrong page number. + /// + ReadPgnoVerifyFailure = -1118, + + /// + /// The database page read from disk had a previous write not represented on the page. + /// + ReadLostFlushVerifyFailure = -1119, + + /// + /// File system operation failed with an error indicating the file system is corrupt. + /// + FileSystemCorruption = -1121, + + /// + /// One or more database pages read from disk during recovery do not match the expected state. + /// + RecoveryVerifyFailure = -1123, + + /// + /// Attempted to provide a filter to JetSetCursorFilter() in an unsupported scenario. + /// + FilteredMoveNotSupported = -1124, + + /// + /// Attempted to PrepareToCommit a distributed transaction to non-zero level + /// + MustCommitDistributedTransactionToLevel0 = -1150, + + /// + /// Attempted a write-operation after a distributed transaction has called PrepareToCommit + /// + DistributedTransactionAlreadyPreparedToCommit = -1151, + + /// + /// Attempted to PrepareToCommit a non-distributed transaction + /// + NotInDistributedTransaction = -1152, + + /// + /// Attempted to commit a distributed transaction, but PrepareToCommit has not yet been called + /// + DistributedTransactionNotYetPreparedToCommit = -1153, + + /// + /// Attempted to begin a distributed transaction when not at level 0 + /// + CannotNestDistributedTransactions = -1154, + + /// + /// Attempted to begin a distributed transaction but no callback for DTC coordination was specified on initialisation + /// + DTCMissingCallback = -1160, + + /// + /// Attempted to recover a distributed transaction but no callback for DTC coordination was specified on initialisation + /// + DTCMissingCallbackOnRecovery = -1161, + + /// + /// Unexpected error code returned from DTC callback + /// + DTCCallbackUnexpectedError = -1162, + + /// + /// Database already exists + /// + DatabaseDuplicate = -1201, + + /// + /// Database in use + /// + DatabaseInUse = -1202, + + /// + /// No such database + /// + DatabaseNotFound = -1203, + + /// + /// Invalid database name + /// + DatabaseInvalidName = -1204, + + /// + /// Invalid number of pages + /// + DatabaseInvalidPages = -1205, + + /// + /// Non database file or corrupted db + /// + DatabaseCorrupted = -1206, + + /// + /// Database exclusively locked + /// + DatabaseLocked = -1207, + + /// + /// Cannot disable versioning for this database + /// + CannotDisableVersioning = -1208, + + /// + /// Database engine is incompatible with database + /// + InvalidDatabaseVersion = -1209, + + /// + /// The database is in an older (200) format + /// + Database200Format = -1210, + + /// + /// The database is in an older (400) format + /// + Database400Format = -1211, + + /// + /// The database is in an older (500) format + /// + Database500Format = -1212, + + /// + /// The database page size does not match the engine + /// + PageSizeMismatch = -1213, + + /// + /// Cannot start any more database instances + /// + TooManyInstances = -1214, + + /// + /// A different database instance is using this database + /// + DatabaseSharingViolation = -1215, + + /// + /// An outstanding database attachment has been detected at the start or end of recovery, but database is missing or does not match attachment info + /// + AttachedDatabaseMismatch = -1216, + + /// + /// Specified path to database file is illegal + /// + DatabaseInvalidPath = -1217, + + /// + /// A database is being assigned an id already in use + /// + DatabaseIdInUse = -1218, + + /// + /// Force Detach allowed only after normal detach errored out + /// + ForceDetachNotAllowed = -1219, + + /// + /// Corruption detected in catalog + /// + CatalogCorrupted = -1220, + + /// + /// Database is partially attached. Cannot complete attach operation + /// + PartiallyAttachedDB = -1221, + + /// + /// Database with same signature in use + /// + DatabaseSignInUse = -1222, + + /// + /// Corrupted db but repair not allowed + /// + DatabaseCorruptedNoRepair = -1224, + + /// + /// recovery tried to replay a database creation, but the database was originally created with an incompatible (likely older) version of the database engine + /// + InvalidCreateDbVersion = -1225, + + /// + /// The database cannot be attached because it is currently being rebuilt as part of an incremental reseed. + /// + DatabaseIncompleteIncrementalReseed = -1226, + + /// + /// The database is not a valid state to perform an incremental reseed. + /// + DatabaseInvalidIncrementalReseed = -1227, + + /// + /// The incremental reseed being performed on the specified database cannot be completed due to a fatal error. A full reseed is required to recover this database. + /// + DatabaseFailedIncrementalReseed = -1228, + + /// + /// The incremental reseed being performed on the specified database cannot be completed because the min required log contains no attachment info. A full reseed is required to recover this database. + /// + NoAttachmentsFailedIncrementalReseed = -1229, + + /// + /// Recovery on this database has not yet completed enough to permit access. + /// + DatabaseNotReady = -1230, + + /// + /// Database is attached but only for recovery. It must be explicitly attached before it can be opened. + /// + DatabaseAttachedForRecovery = -1231, + + /// + /// Recovery has not seen any Begin0/Commit0 records and so does not know what trxBegin0 to assign to this transaction + /// + TransactionsNotReadyDuringRecovery = -1232, + + /// + /// Table is exclusively locked + /// + TableLocked = -1302, + + /// + /// Table already exists + /// + TableDuplicate = -1303, + + /// + /// Table is in use, cannot lock + /// + TableInUse = -1304, + + /// + /// No such table or object + /// + ObjectNotFound = -1305, + + /// + /// Bad file/index density + /// + DensityInvalid = -1307, + + /// + /// Table is not empty + /// + TableNotEmpty = -1308, + + /// + /// Invalid table id + /// + InvalidTableId = -1310, + + /// + /// Cannot open any more tables (cleanup already attempted) + /// + TooManyOpenTables = -1311, + + /// + /// Oper. not supported on table + /// + IllegalOperation = -1312, + + /// + /// Cannot open any more tables (cleanup attempt failed to complete) + /// + TooManyOpenTablesAndCleanupTimedOut = -1313, + + /// + /// Table or object name in use + /// + ObjectDuplicate = -1314, + + /// + /// Object is invalid for operation + /// + InvalidObject = -1316, + + /// + /// Use CloseTable instead of DeleteTable to delete temp table + /// + CannotDeleteTempTable = -1317, + + /// + /// Illegal attempt to delete a system table + /// + CannotDeleteSystemTable = -1318, + + /// + /// Illegal attempt to delete a template table + /// + CannotDeleteTemplateTable = -1319, + + /// + /// Must have exclusive lock on table. + /// + ExclusiveTableLockRequired = -1322, + + /// + /// DDL operations prohibited on this table + /// + FixedDDL = -1323, + + /// + /// On a derived table, DDL operations are prohibited on inherited portion of DDL + /// + FixedInheritedDDL = -1324, + + /// + /// Nesting of hierarchical DDL is not currently supported. + /// + CannotNestDDL = -1325, + + /// + /// Tried to inherit DDL from a table not marked as a template table. + /// + DDLNotInheritable = -1326, + + /// + /// System parameters were set improperly + /// + InvalidSettings = -1328, + + /// + /// Client has requested stop service + /// + ClientRequestToStopJetService = -1329, + + /// + /// Template table was created with NoFixedVarColumnsInDerivedTables + /// + CannotAddFixedVarColumnToDerivedTable = -1330, + + /// + /// Index build failed + /// + IndexCantBuild = -1401, + + /// + /// Primary index already defined + /// + IndexHasPrimary = -1402, + + /// + /// Index is already defined + /// + IndexDuplicate = -1403, + + /// + /// No such index + /// + IndexNotFound = -1404, + + /// + /// Cannot delete clustered index + /// + IndexMustStay = -1405, + + /// + /// Illegal index definition + /// + IndexInvalidDef = -1406, + + /// + /// Invalid create index description + /// + InvalidCreateIndex = -1409, + + /// + /// Out of index description blocks + /// + TooManyOpenIndexes = -1410, + + /// + /// Non-unique inter-record index keys generated for a multivalued index + /// + MultiValuedIndexViolation = -1411, + + /// + /// Failed to build a secondary index that properly reflects primary index + /// + IndexBuildCorrupted = -1412, + + /// + /// Primary index is corrupt. The database must be defragmented or the table deleted. + /// + PrimaryIndexCorrupted = -1413, + + /// + /// Secondary index is corrupt. The database must be defragmented or the affected index must be deleted. If the corrupt index is over Unicode text, a likely cause is a sort-order change. + /// + SecondaryIndexCorrupted = -1414, + + /// + /// Illegal index id + /// + InvalidIndexId = -1416, + + /// + /// tuple index can only be on a secondary index + /// + IndexTuplesSecondaryIndexOnly = -1430, + + /// + /// tuple index may only have eleven columns in the index + /// + IndexTuplesTooManyColumns = -1431, + + /// + /// tuple index must be a non-unique index + /// + IndexTuplesNonUniqueOnly = -1432, + + /// + /// tuple index must be on a text/binary column + /// + IndexTuplesTextBinaryColumnsOnly = -1433, + + /// + /// tuple index does not allow setting cbVarSegMac + /// + IndexTuplesVarSegMacNotAllowed = -1434, + + /// + /// invalid min/max tuple length or max characters to index specified + /// + IndexTuplesInvalidLimits = -1435, + + /// + /// cannot call RetrieveColumn() with RetrieveFromIndex on a tuple index + /// + IndexTuplesCannotRetrieveFromIndex = -1436, + + /// + /// specified key does not meet minimum tuple length + /// + IndexTuplesKeyTooSmall = -1437, + + /// + /// Specified LV chunk size is not supported + /// + InvalidLVChunkSize = -1438, + + /// + /// Only JET_coltypLongText and JET_coltypLongBinary columns without default values can be encrypted + /// + ColumnCannotBeEncrypted = -1439, + + /// + /// Cannot index encrypted column + /// + CannotIndexOnEncryptedColumn = -1440, + + /// + /// Column value is long + /// + ColumnLong = -1501, + + /// + /// No such chunk in long value + /// + ColumnNoChunk = -1502, + + /// + /// Field will not fit in record + /// + ColumnDoesNotFit = -1503, + + /// + /// Null not valid + /// + NullInvalid = -1504, + + /// + /// Column indexed, cannot delete + /// + ColumnIndexed = -1505, + + /// + /// Field length is greater than maximum + /// + ColumnTooBig = -1506, + + /// + /// No such column + /// + ColumnNotFound = -1507, + + /// + /// Field is already defined + /// + ColumnDuplicate = -1508, + + /// + /// Attempted to create a multi-valued column, but column was not Tagged + /// + MultiValuedColumnMustBeTagged = -1509, + + /// + /// Second autoincrement or version column + /// + ColumnRedundant = -1510, + + /// + /// Invalid column data type + /// + InvalidColumnType = -1511, + + /// + /// No non-NULL tagged columns + /// + TaggedNotNULL = -1514, + + /// + /// Invalid w/o a current index + /// + NoCurrentIndex = -1515, + + /// + /// The key is completely made + /// + KeyIsMade = -1516, + + /// + /// Column Id Incorrect + /// + BadColumnId = -1517, + + /// + /// Bad itagSequence for tagged column + /// + BadItagSequence = -1518, + + /// + /// Cannot delete, column participates in relationship + /// + ColumnInRelationship = -1519, + + /// + /// AutoIncrement and Version cannot be tagged + /// + CannotBeTagged = -1521, + + /// + /// Default value exceeds maximum size + /// + DefaultValueTooBig = -1524, + + /// + /// Duplicate detected on a unique multi-valued column + /// + MultiValuedDuplicate = -1525, + + /// + /// Corruption encountered in long-value tree + /// + LVCorrupted = -1526, + + /// + /// Duplicate detected on a unique multi-valued column after data was normalized, and normalizing truncated the data before comparison + /// + MultiValuedDuplicateAfterTruncation = -1528, + + /// + /// Invalid column in derived table + /// + DerivedColumnCorruption = -1529, + + /// + /// Tried to convert column to a primary index placeholder, but column doesn't meet necessary criteria + /// + InvalidPlaceholderColumn = -1530, + + /// + /// Only JET_coltypLongText and JET_coltypLongBinary columns can be compressed + /// + ColumnCannotBeCompressed = -1538, + + /// + /// Cannot retrieve/set encrypted column without an encryption key + /// + ColumnNoEncryptionKey = -1540, + + /// + /// The key was not found + /// + RecordNotFound = -1601, + + /// + /// No working buffer + /// + RecordNoCopy = -1602, + + /// + /// Currency not on a record + /// + NoCurrentRecord = -1603, + + /// + /// Primary key may not change + /// + RecordPrimaryChanged = -1604, + + /// + /// Illegal duplicate key + /// + KeyDuplicate = -1605, + + /// + /// Attempted to update record when record update was already in progress + /// + AlreadyPrepared = -1607, + + /// + /// No call to JetMakeKey + /// + KeyNotMade = -1608, + + /// + /// No call to JetPrepareUpdate + /// + UpdateNotPrepared = -1609, + + /// + /// Data has changed, operation aborted + /// + DataHasChanged = -1611, + + /// + /// Windows installation does not support language + /// + LanguageNotSupported = -1619, + + /// + /// Internal error: data could not be decompressed + /// + DecompressionFailed = -1620, + + /// + /// No version updates only for uncommitted tables + /// + UpdateMustVersion = -1621, + + /// + /// Data could not be decrypted + /// + DecryptionFailed = -1622, + + /// + /// Cannot encrypt tagged columns with itag>1 + /// + EncryptionBadItag = -1623, + + /// + /// Too many sort processes + /// + TooManySorts = -1701, + + /// + /// Invalid operation on Sort + /// + InvalidOnSort = -1702, + + /// + /// Temp file could not be opened + /// + TempFileOpenError = -1803, + + /// + /// Too many open databases + /// + TooManyAttachedDatabases = -1805, + + /// + /// No space left on disk + /// + DiskFull = -1808, + + /// + /// Permission denied + /// + PermissionDenied = -1809, + + /// + /// File not found + /// + FileNotFound = -1811, + + /// + /// Invalid file type + /// + FileInvalidType = -1812, + + /// + /// File already exists + /// + FileAlreadyExists = -1814, + + /// + /// Cannot Restore after init. + /// + AfterInitialization = -1850, + + /// + /// Logs could not be interpreted + /// + LogCorrupted = -1852, + + /// + /// Invalid operation + /// + InvalidOperation = -1906, + + /// + /// Access denied + /// + AccessDenied = -1907, + + /// + /// Infinite split + /// + TooManySplits = -1909, + + /// + /// Multiple threads are using the same session + /// + SessionSharingViolation = -1910, + + /// + /// An entry point in a DLL we require could not be found + /// + EntryPointNotFound = -1911, + + /// + /// Specified session already has a session context set + /// + SessionContextAlreadySet = -1912, + + /// + /// Tried to reset session context, but current thread did not originally set the session context + /// + SessionContextNotSetByThisThread = -1913, + + /// + /// Tried to terminate session in use + /// + SessionInUse = -1914, + + /// + /// Internal error during dynamic record format conversion + /// + RecordFormatConversionFailed = -1915, + + /// + /// Just one open user database per session is allowed (JET_paramOneDatabasePerSession) + /// + OneDatabasePerSession = -1916, + + /// + /// error during rollback + /// + RollbackError = -1917, + + /// + /// The version of the persisted flush map is not supported by this version of the engine. + /// + FlushMapVersionUnsupported = -1918, + + /// + /// The persisted flush map and the database do not match. + /// + FlushMapDatabaseMismatch = -1919, + + /// + /// The persisted flush map cannot be reconstructed. + /// + FlushMapUnrecoverable = -1920, + + /// + /// The operation did not complete successfully because the database is already running maintenance on specified database + /// + DatabaseAlreadyRunningMaintenance = -2004, + + /// + /// A callback failed + /// + CallbackFailed = -2101, + + /// + /// A callback function could not be found + /// + CallbackNotResolved = -2102, + + /// + /// An element of the JET space hints structure was not correct or actionable. + /// + SpaceHintsInvalid = -2103, + + /// + /// OS Shadow copy API used in an invalid sequence + /// + OSSnapshotInvalidSequence = -2401, + + /// + /// OS Shadow copy ended with time-out + /// + OSSnapshotTimeOut = -2402, + + /// + /// OS Shadow copy not allowed (backup or recovery in progress) + /// + OSSnapshotNotAllowed = -2403, + + /// + /// invalid JET_OSSNAPID + /// + OSSnapshotInvalidSnapId = -2404, + + /// + /// Internal test injection limit hit + /// + TooManyTestInjections = -2501, + + /// + /// Test injection not supported + /// + TestInjectionNotSupported = -2502, + + /// + /// Some how the log data provided got out of sequence with the current state of the instance + /// + InvalidLogDataSequence = -2601, + + /// + /// Attempted to use Local Storage without a callback function being specified + /// + LSCallbackNotSpecified = -3000, + + /// + /// Attempted to set Local Storage for an object which already had it set + /// + LSAlreadySet = -3001, + + /// + /// Attempted to retrieve Local Storage from an object which didn't have it set + /// + LSNotSet = -3002, + + /// + /// an I/O was issued to a location that was sparse + /// + FileIOSparse = -4000, + + /// + /// a read was issued to a location beyond EOF (writes will expand the file) + /// + FileIOBeyondEOF = -4001, + + /// + /// instructs the JET_ABORTRETRYFAILCALLBACK caller to abort the specified I/O + /// + FileIOAbort = -4002, + + /// + /// instructs the JET_ABORTRETRYFAILCALLBACK caller to retry the specified I/O + /// + FileIORetry = -4003, + + /// + /// instructs the JET_ABORTRETRYFAILCALLBACK caller to fail the specified I/O + /// + FileIOFail = -4004, + + /// + /// read/write access is not supported on compressed files + /// + FileCompressed = -4005, + + #endregion + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/jet_errcat.cs b/WelsonJS.Toolkit/EsentInterop/jet_errcat.cs new file mode 100644 index 0000000..ea4c210 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/jet_errcat.cs @@ -0,0 +1,187 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop.Windows8 +{ + /// + /// The error category. The hierarchy is as follows: + /// + /// JET_errcatError + /// | + /// |-- JET_errcatOperation + /// | |-- JET_errcatFatal + /// | |-- JET_errcatIO // bad IO issues, may or may not be transient. + /// | |-- JET_errcatResource + /// | |-- JET_errcatMemory // out of memory (all variants) + /// | |-- JET_errcatQuota + /// | |-- JET_errcatDisk // out of disk space (all variants) + /// |-- JET_errcatData + /// | |-- JET_errcatCorruption + /// | |-- JET_errcatInconsistent // typically caused by user Mishandling + /// | |-- JET_errcatFragmentation + /// |-- JET_errcatApi + /// |-- JET_errcatUsage + /// |-- JET_errcatState + /// |-- JET_errcatObsolete + /// + /// + public enum JET_ERRCAT + { + /// + /// Unknown category. + /// + Unknown = 0, + + /// + /// A generic category. + /// + Error, + + /// + /// Errors that can usually happen any time due to uncontrollable + /// conditions. Frequently temporary, but not always. + /// + /// Recovery: Probably retry, or eventually inform the operator. + /// + /// + Operation, + + /// + /// This sort error happens only when ESE encounters an error condition + /// so grave, that we can not continue on in a safe (often transactional) + /// way, and rather than corrupt data we throw errors of this category. + /// + /// Recovery: Restart the instance or process. If the problem persists + /// inform the operator. + /// + /// + Fatal, + + /// + /// O errors come from the OS, and are out of ESE's control, this sort + /// of error is possibly temporary, possibly not. + /// + /// Recovery: Retry. If not resolved, ask operator about disk issue. + /// + /// + IO, + + /// + /// This is a category that indicates one of many potential out-of-resource + /// conditions. + /// + Resource, + + /// + /// Classic out of memory condition. + /// + /// Recovery: Wait a while and retry, free up memory, or quit. + /// + /// + Memory, + + /// + /// Certain "specialty" resources are in pools of a certain size, making + /// it easier to detect leaks of these resources. + /// + /// Recovery: Bug fix, generally the application should Assert() on these + /// conditions so as to detect these issues during development. However, + /// in retail code, the best to hope for is to treat like Memory. + /// + /// + Quota, + + /// + /// Out of disk conditions. + /// + /// Recovery: Can retry later in the hope more space is available, or + /// ask the operator to free some disk space. + /// + /// + Disk, + + /// + /// A data-related error. + /// + Data, + + /// + /// My hard drive ate my homework. Classic corruption issues, frequently + /// permanent without corrective action. + /// + /// Recovery: Restore from backup, perhaps the ese utilities repair + /// operation (which only salvages what data is left / lossy) .Also + /// in the case of recovery(JetInit) perhaps recovery can be performed + /// by allowing data loss. + /// + /// + Corruption, + + /// + /// This is similar to Corruption in that the database and/or log files + /// are in a state that is inconsistent and unreconcilable with each + /// other. Often this is caused by application/administrator mishandling. + /// + /// Recovery: Restore from backup, perhaps the ese utilities repair + /// operation (which only salvages what data is left / lossy). Also + /// in the case of recovery(JetInit) perhaps recovery can be performed + /// by allowing data loss. + /// + /// + Inconsistent, + + /// + /// This is a class of errors where some persisted internal resource ran + /// out. + /// + /// Recovery: For database errors, offline defragmentation will rectify + /// the problem, for the log files _first_ recover all attached databases + /// to a clean shutdown, and then delete all the log files and checkpoint. + /// + /// + Fragmentation, + + /// + /// A container for and . + /// + Api, + + /// + /// Classic usage error, this means the client code did not pass correct + /// arguments to the JET API. This error will likely not go away with + /// retry. + /// + /// Recovery: Generally speaking client code should Assert() this class + /// of errors is not returned, so issues can be caught during development. + /// In retail, the app will probably have little option but to return + /// the issue up to the operator. + /// + /// + Usage, + + /// + /// This is the classification for different signals the API could return + /// describe the state of the database, a classic case is JET_errRecordNotFound + /// which can be returned by JetSeek() when the record you asked for + /// was not found. + /// + /// Recovery: Not really relevant, depends greatly on the API. + /// + /// + State, + + /// + /// The error is recognized as a valid error, but is not expected to be + /// returned by this version of the API. + /// + Obsolete, + + /// + /// The maximum value for the enum. This should not be used. + /// + Max, + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/jet_errinfobasic.cs b/WelsonJS.Toolkit/EsentInterop/jet_errinfobasic.cs new file mode 100644 index 0000000..642cf56 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/jet_errinfobasic.cs @@ -0,0 +1,257 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop.Windows8 +{ + using System; + using System.Diagnostics; + using System.Diagnostics.CodeAnalysis; + using System.Globalization; + using System.Runtime.InteropServices; + + /// + /// The native version of the JET_ERRINFOBASIC structure. + /// + [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)] + [SuppressMessage("Microsoft.StyleCop.CSharp.NamingRules", + "SA1305:FieldNamesMustNotUseHungarianNotation", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1307:AccessibleFieldsMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + internal struct NATIVE_ERRINFOBASIC + { + /// + /// The number of elements in the error hierarchy. + /// + public const int HierarchySize = 8; + + /// + /// The length of the source file where the error occurred. + /// + public const int SourceFileLength = 64; + + /// + /// Size of the structure. + /// + public uint cbStruct; + + /// + /// The error value for the requested info level. + /// + public JET_err errValue; + + /// + /// The most specific category of the error. + /// + public JET_ERRCAT errcatMostSpecific; + + /// + /// Hierarchy of error categories. Position 0 is the highest level in the hierarchy, and the rest are JET_errcatUnknown. + /// + [MarshalAs(UnmanagedType.ByValArray, SizeConst = HierarchySize)] + public byte[] rgCategoricalHierarchy; + + /// + /// The source file line for the requested info level. + /// + public uint lSourceLine; + + /// + /// The source file name for the requested info level. + /// + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = SourceFileLength)] + public string rgszSourceFile; + } + + /// + /// Contains the information about an error. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1300:ElementMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + [Serializable] + public sealed class JET_ERRINFOBASIC : IContentEquatable, IDeepCloneable + { + /// + /// The error value for the requested info level. + /// + private JET_err errorValue; + + /// + /// The most specific category of the error. + /// + private JET_ERRCAT errorcatMostSpecific; + + /// + /// Hierarchy of error categories. Position 0 is the highest level in the hierarchy, and the rest are JET_errcatUnknown. + /// + private JET_ERRCAT[] arrayCategoricalHierarchy; + + /// + /// The source file line for the requested info level. + /// + private int sourceLine; + + /// + /// The source file name for the requested info level. + /// + private string sourceFile; + + /// + /// Initializes a new instance of the JET_ERRINFOBASIC class. + /// + public JET_ERRINFOBASIC() + { + this.rgCategoricalHierarchy = new JET_ERRCAT[NATIVE_ERRINFOBASIC.HierarchySize]; + } + + /// + /// Gets or sets the error value for the requested info level. + /// + public JET_err errValue + { + [DebuggerStepThrough] + get { return this.errorValue; } + set { this.errorValue = value; } + } + + /// + /// Gets or sets the category of the error. + /// + public JET_ERRCAT errcat + { + [DebuggerStepThrough] + get { return this.errorcatMostSpecific; } + set { this.errorcatMostSpecific = value; } + } + + /// + /// Gets or sets the hierarchy of errors. Position 0 is the highest level in the hierarchy, and the rest are JET_errcatUnknown. + /// + public JET_ERRCAT[] rgCategoricalHierarchy + { + [DebuggerStepThrough] + get { return this.arrayCategoricalHierarchy; } + set { this.arrayCategoricalHierarchy = value; } + } + + /// + /// Gets or sets the source file line for the requested info level. + /// + public int lSourceLine + { + [DebuggerStepThrough] + get { return this.sourceLine; } + set { this.sourceLine = value; } + } + + /// + /// Gets or sets the source file name for the requested info level. + /// + public string rgszSourceFile + { + [DebuggerStepThrough] + get { return this.sourceFile; } + set { this.sourceFile = value; } + } + + /// + /// Returns a deep copy of the object. + /// + /// A deep copy of the object. + public JET_ERRINFOBASIC DeepClone() + { + JET_ERRINFOBASIC result = (JET_ERRINFOBASIC)this.MemberwiseClone(); + + return result; + } + + /// + /// Generate a string representation of the instance. + /// + /// The structure as a string. + public override string ToString() + { + return string.Format(CultureInfo.InvariantCulture, "JET_ERRINFOBASIC({0}:{1}:{2}:{3})", this.errValue, this.errcat, this.rgszSourceFile, this.lSourceLine); + } + + /// + /// Returns a value indicating whether this instance is equal + /// to another instance. + /// + /// An instance to compare with this instance. + /// True if the two instances are equal. + public bool ContentEquals(JET_ERRINFOBASIC other) + { + if (null == other) + { + return false; + } + + return this.errValue == other.errValue + && this.errcat == other.errcat + && this.lSourceLine == other.lSourceLine + && this.rgszSourceFile == other.rgszSourceFile + && Util.ArrayStructEquals(this.rgCategoricalHierarchy, other.rgCategoricalHierarchy, this.rgCategoricalHierarchy == null ? 0 : this.rgCategoricalHierarchy.Length); + } + + /// + /// Gets the native (interop) version of this object. + /// + /// The native (interop) version of this object. + internal NATIVE_ERRINFOBASIC GetNativeErrInfo() + { + var native = new NATIVE_ERRINFOBASIC(); + native.cbStruct = checked((uint)Marshal.SizeOf(typeof(NATIVE_ERRINFOBASIC))); + + native.errValue = this.errValue; + native.errcatMostSpecific = this.errcat; + native.rgCategoricalHierarchy = new byte[NATIVE_ERRINFOBASIC.HierarchySize]; + + if (this.rgCategoricalHierarchy != null) + { + for (int i = 0; i < this.rgCategoricalHierarchy.Length; ++i) + { + native.rgCategoricalHierarchy[i] = (byte)this.rgCategoricalHierarchy[i]; + } + } + + native.lSourceLine = (uint)this.lSourceLine; + native.rgszSourceFile = this.rgszSourceFile; + + return native; + } + + /// + /// Sets the fields of the object from a native JET_ERRINFOBASIC struct. + /// + /// + /// The native errinfobasic to set the values from. + /// + internal void SetFromNative( + ref NATIVE_ERRINFOBASIC value) + { + unchecked + { + this.errValue = value.errValue; + this.errcat = value.errcatMostSpecific; + if (value.rgCategoricalHierarchy != null) + { + for (int i = 0; i < value.rgCategoricalHierarchy.Length; ++i) + { + this.rgCategoricalHierarchy[i] = (JET_ERRCAT)value.rgCategoricalHierarchy[i]; + } + } + + this.lSourceLine = (int)value.lSourceLine; + this.rgszSourceFile = value.rgszSourceFile; + } + } + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/jet_errorinfo.cs b/WelsonJS.Toolkit/EsentInterop/jet_errorinfo.cs new file mode 100644 index 0000000..ba21cd2 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/jet_errorinfo.cs @@ -0,0 +1,19 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop.Windows8 +{ + /// + /// The valid values of InfoLevel for JetGetErrorInfo. + /// + public enum JET_ErrorInfo + { + /// + /// Retrieve information about the specific error passed in pvContext. + /// + SpecificErr = 1, + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/jet_exceptionaction.cs b/WelsonJS.Toolkit/EsentInterop/jet_exceptionaction.cs new file mode 100644 index 0000000..ee74741 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/jet_exceptionaction.cs @@ -0,0 +1,24 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + /// + /// Constants to be used with JET_paramExceptionAction. + /// + public enum JET_ExceptionAction + { + /// + /// Display message box on exception. + /// + MsgBox = 0x00000001, + + /// + /// Do not handle exceptions. Throw them to the caller. + /// + None = 0x00000002, + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/jet_filetype.cs b/WelsonJS.Toolkit/EsentInterop/jet_filetype.cs new file mode 100644 index 0000000..675d6c0 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/jet_filetype.cs @@ -0,0 +1,39 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + /// + /// Esent file types. + /// + public enum JET_filetype + { + /// + /// Unknown file. + /// + Unknown = 0, + + /// + /// Database file. + /// + Database = 1, + + /// + /// Transaction log. + /// + Log = 3, + + /// + /// Checkpoint file. + /// + Checkpoint = 4, + + /// + /// Temporary database. + /// + TempDatabase = 5, + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/jet_idxinfo.cs b/WelsonJS.Toolkit/EsentInterop/jet_idxinfo.cs new file mode 100644 index 0000000..765f7ea --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/jet_idxinfo.cs @@ -0,0 +1,87 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + + using Win7 = Microsoft.Isam.Esent.Interop.Windows7; + using Win8 = Microsoft.Isam.Esent.Interop.Windows8; + + /// + /// Info levels for retrieve index information with JetGetIndexInfo. + /// and JetGetTableIndexInfo. + /// + /// + /// + public enum JET_IdxInfo + { + /// + /// Returns a structure with information about the index. + /// + Default = 0, + + /// + /// Returns a structure with information about the index. + /// + List = 1, + + /// + /// SysTabCursor is obsolete. + /// + [Obsolete("This value is not used, and is provided for completeness to match the published header in the SDK.")] + SysTabCursor = 2, + + /// + /// OLC is obsolete. + /// + [Obsolete("This value is not used, and is provided for completeness to match the published header in the SDK.")] + OLC = 3, + + /// + /// Reset OLC is obsolete. + /// + [Obsolete("This value is not used, and is provided for completeness to match the published header in the SDK.")] + ResetOLC = 4, + + /// + /// Returns an integer with the space usage of the index. + /// + SpaceAlloc = 5, + + /// + /// Returns an integer with the LCID of the index. + /// + LCID = 6, + + /// + /// Langid is obsolete. Use instead. + /// + [Obsolete("Use JET_IdxInfo.LCID")] + Langid = 6, + + /// + /// Returns an integer with the count of indexes in the table. + /// + Count = 7, + + /// + /// Returns a ushort with the value of cbVarSegMac the index was created with. + /// + VarSegMac = 8, + + /// + /// Returns a identifying the index. + /// + IndexId = 9, + + /// + /// Introduced in Windows Vista. Returns a ushort with the value of cbKeyMost the + /// index was created with. + /// + KeyMost = 10, + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/jet_index_column.cs b/WelsonJS.Toolkit/EsentInterop/jet_index_column.cs new file mode 100644 index 0000000..9d4d343 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/jet_index_column.cs @@ -0,0 +1,165 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop.Windows8 +{ + using System; + using System.Diagnostics.CodeAnalysis; + using System.Globalization; + using System.Runtime.InteropServices; + using Microsoft.Isam.Esent.Interop.Implementation; + + /// + /// Comparison operation for filter defined as . + /// + public enum JetRelop + { + /// + /// Accept only rows which have column value equal to the given value. + /// + Equals = 0, + + /// + /// Accept only rows which have columns whose prefix matches the given value. + /// + PrefixEquals, + + /// + /// Accept only rows which have column value not equal to the given value. + /// + NotEquals, + + /// + /// Accept only rows which have column value less than or equal a given value. + /// + LessThanOrEqual, + + /// + /// Accept only rows which have column value less than a given value. + /// + LessThan, + + /// + /// Accept only rows which have column value greater than or equal a given value. + /// + GreaterThanOrEqual, + + /// + /// Accept only rows which have column value greater than a given value. + /// + GreaterThan, + + /// + /// Accept only rows which have column value AND'ed with a given bitmask yielding zero. + /// + BitmaskEqualsZero, + + /// + /// Accept only rows which have column value AND'ed with a given bitmask yielding non-zero. + /// + BitmaskNotEqualsZero, + } + + /// + /// The native version of the structure. + /// + [StructLayout(LayoutKind.Sequential)] + [SuppressMessage("Microsoft.StyleCop.CSharp.NamingRules", + "SA1305:FieldNamesMustNotUseHungarianNotation", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1307:AccessibleFieldsMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + internal struct NATIVE_INDEX_COLUMN + { + /// + /// The column identifier for the column to check. + /// + public uint columnid; + + /// + /// The comparison operation. + /// + public uint relop; + + /// + /// A pointer to a value to compare. + /// + public IntPtr pvData; + + /// + /// The size of value beginning at pvData, in bytes. + /// + public uint cbData; + + /// + /// Options regarding this column value. + /// + public uint grbit; + } + + /// + /// Contains filter definition for and . + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1300:ElementMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + public class JET_INDEX_COLUMN + { + /// + /// Gets or sets the column identifier for the column to retrieve. + /// + public JET_COLUMNID columnid { get; set; } + + /// + /// Gets or sets the filter comparison operation. + /// + public JetRelop relop { get; set; } + + /// + /// Gets or sets the value to compare the column with. + /// + public byte[] pvData { get; set; } + + /// + /// Gets or sets the option for this column comparison. + /// + public JetIndexColumnGrbit grbit { get; set; } + + /// + /// Returns a that represents the current . + /// + /// + /// A that represents the current . + /// + public override string ToString() + { + return string.Format(CultureInfo.InvariantCulture, "JET_INDEX_COLUMN(0x{0:x})", this.columnid); + } + + /// + /// Gets the NATIVE_indexcolumn structure that represents the object. + /// + /// GC handle collection to add any pinned handles. + /// The NATIVE_indexcolumn structure. + internal NATIVE_INDEX_COLUMN GetNativeIndexColumn(ref GCHandleCollection handles) + { + NATIVE_INDEX_COLUMN indexColumn = new NATIVE_INDEX_COLUMN(); + indexColumn.columnid = this.columnid.Value; + indexColumn.relop = (uint)this.relop; + indexColumn.grbit = (uint)this.grbit; + if (this.pvData != null) + { + indexColumn.pvData = handles.Add(this.pvData); + indexColumn.cbData = (uint)this.pvData.Length; + } + + return indexColumn; + } + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/jet_index_range.cs b/WelsonJS.Toolkit/EsentInterop/jet_index_range.cs new file mode 100644 index 0000000..aac9cb7 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/jet_index_range.cs @@ -0,0 +1,115 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop.Windows8 +{ + using System; + using System.Diagnostics.CodeAnalysis; + using System.Globalization; + using System.Runtime.InteropServices; + using Microsoft.Isam.Esent.Interop.Implementation; + + /// + /// The native version of the structure. + /// + [StructLayout(LayoutKind.Sequential)] + [SuppressMessage("Microsoft.StyleCop.CSharp.NamingRules", + "SA1305:FieldNamesMustNotUseHungarianNotation", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1307:AccessibleFieldsMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + internal struct NATIVE_INDEX_RANGE + { + /// + /// The column values for the start of the index. + /// + public IntPtr rgStartColumns; + + /// + /// Number of column values for the start of the index. + /// + public uint cStartColumns; + + /// + /// The column values for the end of the index. + /// + public IntPtr rgEndColumns; + + /// + /// Number of column values for the end of the index. + /// + public uint cEndColumns; + } + + /// + /// Contains definition for . + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1300:ElementMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + public class JET_INDEX_RANGE + { + /// + /// Gets or sets the column values for the start of the index. + /// + public JET_INDEX_COLUMN[] startColumns { get; set; } + + /// + /// Gets or sets the column values for the end of the index. + /// + public JET_INDEX_COLUMN[] endColumns { get; set; } + + /// + /// Returns a that represents the current . + /// + /// + /// A that represents the current . + /// + public override string ToString() + { + return string.Format(CultureInfo.InvariantCulture, "JET_INDEX_RANGE"); + } + + /// + /// Gets the NATIVE_indexcolumn structure that represents the object. + /// + /// GC handle collection to add any pinned handles. + /// The NATIVE_indexcolumn structure. + internal NATIVE_INDEX_RANGE GetNativeIndexRange(ref GCHandleCollection handles) + { + NATIVE_INDEX_RANGE indexRange = new NATIVE_INDEX_RANGE(); + NATIVE_INDEX_COLUMN[] nativeColumns; + if (this.startColumns != null) + { + nativeColumns = new NATIVE_INDEX_COLUMN[this.startColumns.Length]; + for (int i = 0; i < this.startColumns.Length; i++) + { + nativeColumns[i] = this.startColumns[i].GetNativeIndexColumn(ref handles); + } + + indexRange.rgStartColumns = handles.Add(nativeColumns); + indexRange.cStartColumns = (uint)this.startColumns.Length; + } + + if (this.endColumns != null) + { + nativeColumns = new NATIVE_INDEX_COLUMN[this.endColumns.Length]; + for (int i = 0; i < this.endColumns.Length; i++) + { + nativeColumns[i] = this.endColumns[i].GetNativeIndexColumn(ref handles); + } + + indexRange.rgEndColumns = handles.Add(nativeColumns); + indexRange.cEndColumns = (uint)this.endColumns.Length; + } + + return indexRange; + } + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/jet_indexcreate.cs b/WelsonJS.Toolkit/EsentInterop/jet_indexcreate.cs new file mode 100644 index 0000000..8a2ea6e --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/jet_indexcreate.cs @@ -0,0 +1,583 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Diagnostics; + using System.Diagnostics.CodeAnalysis; + using System.Globalization; + using System.Runtime.InteropServices; + using Microsoft.Isam.Esent.Interop.Vista; + + /// + /// Contains the information needed to create an index over data in an ESE database. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1300:ElementMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + [Serializable] + public sealed partial class JET_INDEXCREATE : IContentEquatable, IDeepCloneable + { + /// + /// Name of the index. + /// + private string name; + + /// + /// Index key. + /// + private string key; + + /// + /// Length of the index key. + /// + private int keyLength; + + /// + /// Index options. + /// + private CreateIndexGrbit options; + + /// + /// Index density. + /// + private int density; + + /// + /// Unicode comparison options. + /// + private JET_UNICODEINDEX unicodeOptions; + + /// + /// Maximum length of a column to store in the index. + /// + private int maxSegmentLength; + + /// + /// Conditional columns. + /// + private JET_CONDITIONALCOLUMN[] conditionalColumns; + + /// + /// Number of conditional columns. + /// + private int numConditionalColumns; + + /// + /// Error code from index creation. + /// + private JET_err errorCode; + + /// + /// Maximum length of index keys. + /// + private int maximumKeyLength; + + /// + /// Space allocation, maintenance, and usage hints. + /// + private JET_SPACEHINTS spaceHints; + + /// + /// Gets or sets the error code from creating this index. + /// + public JET_err err + { + [DebuggerStepThrough] + get { return this.errorCode; } + set { this.errorCode = value; } + } + + /// + /// Gets or sets the name of the index to create. + /// + public string szIndexName + { + [DebuggerStepThrough] + get { return this.name; } + set { this.name = value; } + } + + /// + /// Gets or sets the description of the index key. This is a double + /// null-terminated string of null-delimited tokens. Each token is + /// of the form [direction-specifier][column-name], where + /// direction-specification is either "+" or "-". for example, a + /// szKey of "+abc\0-def\0+ghi\0" will index over the three columns + /// "abc" (in ascending order), "def" (in descending order), and "ghi" + /// (in ascending order). + /// + public string szKey + { + [DebuggerStepThrough] + get { return this.key; } + set { this.key = value; } + } + + /// + /// Gets or sets the length, in characters, of szKey including the two terminating nulls. + /// + public int cbKey + { + [DebuggerStepThrough] + get { return this.keyLength; } + set { this.keyLength = value; } + } + + /// + /// Gets or sets index creation options. + /// + public CreateIndexGrbit grbit + { + [DebuggerStepThrough] + get { return this.options; } + set { this.options = value; } + } + + /// + /// Gets or sets the density of the index. + /// + public int ulDensity + { + [DebuggerStepThrough] + get { return this.density; } + set { this.density = value; } + } + + /// + /// Gets or sets the optional unicode comparison options. + /// + public JET_UNICODEINDEX pidxUnicode + { + [DebuggerStepThrough] + get { return this.unicodeOptions; } + set { this.unicodeOptions = value; } + } + + /// + /// Gets or sets the maximum length, in bytes, of each column to store in the index. + /// + public int cbVarSegMac + { + [DebuggerStepThrough] + get { return this.maxSegmentLength; } + set { this.maxSegmentLength = value; } + } + + /// + /// Gets or sets the optional conditional columns. + /// + public JET_CONDITIONALCOLUMN[] rgconditionalcolumn + { + [DebuggerStepThrough] + get { return this.conditionalColumns; } + set { this.conditionalColumns = value; } + } + + /// + /// Gets or sets the number of conditional columns. + /// + public int cConditionalColumn + { + [DebuggerStepThrough] + get { return this.numConditionalColumns; } + set { this.numConditionalColumns = value; } + } + + /// + /// Gets or sets the maximum allowable size, in bytes, for keys in the index. + /// The minimum supported maximum key size is JET_cbKeyMostMin (255) which + /// is the legacy maximum key size. The maximum key size is dependent on + /// the database page size . The + /// maximum key size can be retrieved with . + /// + /// This parameter is ignored on Windows XP and Windows Server 2003. + /// + /// + /// Unlike the unmanaged API, + /// (JET_bitIndexKeyMost) is not needed, it will be added automatically. + /// + /// + public int cbKeyMost + { + [DebuggerStepThrough] + get { return this.maximumKeyLength; } + set { this.maximumKeyLength = value; } + } + + /// + /// Gets or sets space allocation, maintenance, and usage hints. + /// + public JET_SPACEHINTS pSpaceHints + { + [DebuggerStepThrough] + get { return this.spaceHints; } + set { this.spaceHints = value; } + } + + /// + /// Returns a deep copy of the object. + /// + /// A deep copy of the object. + public JET_INDEXCREATE DeepClone() + { + JET_INDEXCREATE result = (JET_INDEXCREATE)this.MemberwiseClone(); + result.pidxUnicode = (null == this.pidxUnicode) ? null : this.pidxUnicode.DeepClone(); + this.conditionalColumns = Util.DeepCloneArray(this.conditionalColumns); + return result; + } + + /// + /// Generate a string representation of the instance. + /// + /// The structure as a string. + public override string ToString() + { + return string.Format(CultureInfo.InvariantCulture, "JET_INDEXCREATE({0}:{1})", this.szIndexName, this.szKey); + } + + /// + /// Returns a value indicating whether this instance is equal + /// to another instance. + /// + /// An instance to compare with this instance. + /// True if the two instances are equal. + public bool ContentEquals(JET_INDEXCREATE other) + { + if (null == other) + { + return false; + } + + this.CheckMembersAreValid(); + other.CheckMembersAreValid(); + return this.err == other.err + && this.szIndexName == other.szIndexName + && this.szKey == other.szKey + && this.cbKey == other.cbKey + && this.grbit == other.grbit + && this.ulDensity == other.ulDensity + && this.cbVarSegMac == other.cbVarSegMac + && this.cbKeyMost == other.cbKeyMost + && this.IsUnicodeIndexEqual(other) + && this.AreConditionalColumnsEqual(other); + } + + /// + /// Check this object to make sure its parameters are valid. + /// + internal void CheckMembersAreValid() + { + if (null == this.szIndexName) + { + throw new ArgumentNullException("szIndexName"); + } + + if (null == this.szKey) + { + throw new ArgumentNullException("szKey"); + } + + if (this.cbKey > checked(this.szKey.Length + 1)) + { + throw new ArgumentOutOfRangeException("cbKey", this.cbKey, "cannot be greater than the length of szKey"); + } + + if (this.cbKey < 0) + { + throw new ArgumentOutOfRangeException("cbKey", this.cbKey, "cannot be negative"); + } + + if (this.ulDensity < 0) + { + throw new ArgumentOutOfRangeException("ulDensity", this.ulDensity, "cannot be negative"); + } + + if (this.cbKeyMost < 0) + { + throw new ArgumentOutOfRangeException("cbKeyMost", this.cbKeyMost, "cannot be negative"); + } + + if (this.cbVarSegMac < 0) + { + throw new ArgumentOutOfRangeException("cbVarSegMac", this.cbVarSegMac, "cannot be negative"); + } + + if ((this.cConditionalColumn > 0 && null == this.rgconditionalcolumn) + || (this.cConditionalColumn > 0 && this.cConditionalColumn > this.rgconditionalcolumn.Length)) + { + throw new ArgumentOutOfRangeException("cConditionalColumn", this.cConditionalColumn, "cannot be greater than the length of rgconditionalcolumn"); + } + + if (this.cConditionalColumn < 0) + { + throw new ArgumentOutOfRangeException( + "cConditionalColumn", this.cConditionalColumn, "cannot be negative"); + } + } + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + /// + /// Gets the native (interop) version of this object, except for + /// and . + /// + /// The native (interop) version of this object. + internal NATIVE_INDEXCREATE GetNativeIndexcreate() + { + this.CheckMembersAreValid(); + + var native = new NATIVE_INDEXCREATE(); + native.cbStruct = checked((uint)Marshal.SizeOf(typeof(NATIVE_INDEXCREATE))); + + // szIndexName and szKey are converted at pinvoke time. + // + // native.szIndexName = this.szIndexName; + // native.szKey = this.szKey; + native.cbKey = checked((uint)this.cbKey); + native.grbit = unchecked((uint)this.grbit); + native.ulDensity = checked((uint)this.ulDensity); + + native.cbVarSegMac = new IntPtr(this.cbVarSegMac); + + native.cConditionalColumn = checked((uint)this.cConditionalColumn); + return native; + } + + /// + /// Gets the native (interop) version of this object, except for + /// and . + /// + /// The native (interop) version of this object. + internal NATIVE_INDEXCREATE1 GetNativeIndexcreate1() + { + var native = new NATIVE_INDEXCREATE1(); + native.indexcreate = this.GetNativeIndexcreate(); + native.indexcreate.cbStruct = checked((uint)Marshal.SizeOf(typeof(NATIVE_INDEXCREATE1))); + if (0 != this.cbKeyMost) + { + native.cbKeyMost = checked((uint)this.cbKeyMost); + native.indexcreate.grbit |= unchecked((uint)VistaGrbits.IndexKeyMost); + } + + return native; + } + + /// + /// Gets the native (interop) version of this object. The following members + /// are not converted: + /// , , . + /// + /// The native (interop) version of this object. + internal NATIVE_INDEXCREATE2 GetNativeIndexcreate2() + { + var native = new NATIVE_INDEXCREATE2(); + native.indexcreate1 = this.GetNativeIndexcreate1(); + native.indexcreate1.indexcreate.cbStruct = checked((uint)Marshal.SizeOf(typeof(NATIVE_INDEXCREATE2))); + + // pSpaceHints conversion is done at pinvoke time. + return native; + } + + /// + /// Sets only the output fields of the object from a NATIVE_INDEXCREATE2 struct, + /// specifically . + /// + /// + /// The native indexcreate to set the values from. + /// + internal void SetFromNativeIndexCreate(NATIVE_INDEXCREATE2 value) + { + this.SetFromNativeIndexCreate(value.indexcreate1); + } + + /// + /// Sets only the output fields of the object from a NATIVE_INDEXCREATE1 struct, + /// specifically . + /// + /// + /// The native indexcreate to set the values from. + /// + internal void SetFromNativeIndexCreate(NATIVE_INDEXCREATE1 value) + { + this.SetFromNativeIndexCreate(value.indexcreate); + } + + /// + /// Sets only the output fields of the object from a native NATIVE_INDEXCREATE struct, + /// specifically . + /// + /// + /// The native indexcreate to set the values from. + /// + internal void SetFromNativeIndexCreate(NATIVE_INDEXCREATE value) + { + this.err = (JET_err)value.err; + } +#endif // !MANAGEDESENT_ON_WSA + + /// + /// Returns a value indicating whether the pidxUnicode member of this + /// instance is equal to another instance. + /// + /// An instance to compare with this instance. + /// True if the pidxUnicode members of two instances are equal. + private bool IsUnicodeIndexEqual(JET_INDEXCREATE other) + { + return (null == this.pidxUnicode) + ? (null == other.pidxUnicode) + : this.pidxUnicode.ContentEquals(other.pidxUnicode); + } + + /// + /// Returns a value indicating whether the conditional column members of this + /// instance is equal to another instance. + /// + /// An instance to compare with this instance. + /// True if the conditional column members of two instances are equal. + private bool AreConditionalColumnsEqual(JET_INDEXCREATE other) + { + if (this.cConditionalColumn != other.cConditionalColumn) + { + return false; + } + + for (int i = 0; i < this.cConditionalColumn; ++i) + { + if (!this.rgconditionalcolumn[i].ContentEquals(other.rgconditionalcolumn[i])) + { + return false; + } + } + + return true; + } + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + /// + /// The native version of the JET_INDEXCREATE structure. + /// + [StructLayout(LayoutKind.Sequential)] + [SuppressMessage("Microsoft.StyleCop.CSharp.NamingRules", + "SA1305:FieldNamesMustNotUseHungarianNotation", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1307:AccessibleFieldsMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + internal unsafe struct NATIVE_INDEXCREATE + { + /// + /// Size of the structure. + /// + public uint cbStruct; + + /// + /// Name of the index. + /// + public IntPtr szIndexName; + + /// + /// Index key description. + /// + public IntPtr szKey; + + /// + /// Size of index key description. + /// + public uint cbKey; + + /// + /// Index options. + /// + public uint grbit; + + /// + /// Index density. + /// + public uint ulDensity; + + /// + /// Pointer to unicode sort options. + /// + public NATIVE_UNICODEINDEX* pidxUnicode; + + /// + /// Maximum size of column data to index. This can also be + /// a pointer to a JET_TUPLELIMITS structure. + /// + public IntPtr cbVarSegMac; + + /// + /// Pointer to array of conditional columns. + /// + public IntPtr rgconditionalcolumn; + + /// + /// Count of conditional columns. + /// + public uint cConditionalColumn; + + /// + /// Returned error from index creation. + /// + public int err; + } + + /// + /// The native version of the JET_INDEXCREATE2 structure. Introduced in Windows 7, + /// this includes a member. + /// + [StructLayout(LayoutKind.Sequential)] + [SuppressMessage("Microsoft.StyleCop.CSharp.NamingRules", + "SA1305:FieldNamesMustNotUseHungarianNotation", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1307:AccessibleFieldsMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + internal struct NATIVE_INDEXCREATE2 + { + /// + /// Nested NATIVE_INDEXCREATE1 structure. + /// + public NATIVE_INDEXCREATE1 indexcreate1; + + /// + /// A pointer. + /// + public IntPtr pSpaceHints; + } + + /// + /// The native version of the JET_INDEXCREATE structure. This version includes the cbKeyMost + /// member, which is only valid on Windows Vista and above, but the name of the structure + /// was not changed for Vista. + /// + [StructLayout(LayoutKind.Sequential)] + [SuppressMessage("Microsoft.StyleCop.CSharp.NamingRules", + "SA1305:FieldNamesMustNotUseHungarianNotation", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1307:AccessibleFieldsMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + internal struct NATIVE_INDEXCREATE1 + { + /// + /// Nested NATIVE_INDEXCREATE structure. + /// + public NATIVE_INDEXCREATE indexcreate; + + /// + /// Maximum size of the key. + /// + public uint cbKeyMost; + } +#endif // !MANAGEDESENT_ON_WSA + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/jet_indexlist.cs b/WelsonJS.Toolkit/EsentInterop/jet_indexlist.cs new file mode 100644 index 0000000..697f2f2 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/jet_indexlist.cs @@ -0,0 +1,292 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Diagnostics.CodeAnalysis; + using System.Globalization; + using System.Runtime.InteropServices; + + /// + /// The native version of the JET_INDEXLIST structure. + /// + [StructLayout(LayoutKind.Sequential)] + [SuppressMessage("Microsoft.StyleCop.CSharp.NamingRules", + "SA1305:FieldNamesMustNotUseHungarianNotation", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1307:AccessibleFieldsMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + internal struct NATIVE_INDEXLIST + { + /// + /// Size of the structure. + /// + public uint cbStruct; + + /// + /// Tableid of the temporary table. + /// + public IntPtr tableid; + + /// + /// Number of records in the table. + /// + public uint cRecord; + + /// + /// Id of the column containing the name of the index. + /// + public uint columnidindexname; + + /// + /// Id of the column containing index options. + /// + public uint columnidgrbitIndex; + + /// + /// Id of the column containing the number of unique keys in the index. + /// This is updated by "Api.JetComputeStats". + /// + public uint columnidcKey; + + /// + /// Id of the column containing the number of entries in the index. + /// This is updated by "Api.JetComputeStats". + /// + public uint columnidcEntry; + + /// + /// Id of the column containing the number of pages in the index. + /// This is updated by "Api.JetComputeStats". + /// + public uint columnidcPage; + + /// + /// Id of the column containing the number of columns in the index + /// definition. + /// + public uint columnidcColumn; + + /// + /// Id of the column storing the index of this column in the index key. + /// + public uint columnidiColumn; + + /// + /// Id of the column containing the columnid. + /// + public uint columnidcolumnid; + + /// + /// Id of the column containing the column type. + /// + public uint columnidcoltyp; + + /// + /// Id of the column containing the country code (obsolete). + /// + [Obsolete("Deprecated")] + public uint columnidCountry; + + /// + /// Id of the column containing the LCID of the index. + /// + public uint columnidLangid; + + /// + /// Id of the column containing the code page of the index. + /// + public uint columnidCp; + + /// + /// Obsolete. Ignored. + /// + [Obsolete("Deprecated")] + public uint columnidCollate; + + /// + /// Id of the column giving the column options. + /// + public uint columnidgrbitColumn; + + /// + /// Id of the column giving the column name. + /// + public uint columnidcolumnname; + + /// + /// Id of the column giving the LCMapString options. + /// + public uint columnidLCMapFlags; + } + + /// + /// Information about a temporary table containing information + /// about all indexes for a given table. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1300:ElementMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + public sealed class JET_INDEXLIST + { + /// + /// Gets tableid of the temporary table. This should be closed + /// when the table is no longer needed. + /// + public JET_TABLEID tableid { get; internal set; } + + /// + /// Gets the number of records in the temporary table. + /// + public int cRecord { get; internal set; } + + /// + /// Gets the columnid of the column in the temporary table which + /// stores the name of the index. + /// The column is of type . + /// + public JET_COLUMNID columnidindexname { get; internal set; } + + /// + /// Gets the columnid of the column in the temporary table which + /// stores the the grbits used on the index. See . + /// The column is of type . + /// + public JET_COLUMNID columnidgrbitIndex { get; internal set; } + + /// + /// Gets the columnid of the column in the temporary table which + /// stores the number of unique keys in the index. + /// This value is not current and is only is updated by "Api.JetComputeStats". + /// The column is of type . + /// + public JET_COLUMNID columnidcKey { get; internal set; } + + /// + /// Gets the columnid of the column in the temporary table which + /// stores the number of entries in the index. + /// This value is not current and is only is updated by "Api.JetComputeStats". + /// The column is of type . + /// + public JET_COLUMNID columnidcEntry { get; internal set; } + + /// + /// Gets the columnid of the column in the temporary table which + /// stores the number of pages in the index. + /// This value is not current and is only is updated by "Api.JetComputeStats". + /// The column is of type . + /// + public JET_COLUMNID columnidcPage { get; internal set; } + + /// + /// Gets the columnid of the column in the temporary table which + /// stores the number of columns in the index key. + /// The column is of type . + /// + public JET_COLUMNID columnidcColumn { get; internal set; } + + /// + /// Gets the columnid of the column in the temporary table which + /// stores the index of of this column in the index key. + /// The column is of type . + /// + public JET_COLUMNID columnidiColumn { get; internal set; } + + /// + /// Gets the columnid of the column in the temporary table which + /// stores the columnid of the column being indexed. + /// The column is of type . + /// + public JET_COLUMNID columnidcolumnid { get; internal set; } + + /// + /// Gets the columnid of the column in the temporary table which + /// stores the column type of the column being indexed. + /// The column is of type . + /// + public JET_COLUMNID columnidcoltyp { get; internal set; } + + /// + /// Gets the columnid of the column in the temporary table which + /// stores the language id (LCID) of the index. + /// The column is of type . + /// + public JET_COLUMNID columnidLangid { get; internal set; } + + /// + /// Gets the columnid of the column in the temporary table which + /// stores the code page of the indexed column. + /// The column is of type . + /// + public JET_COLUMNID columnidCp { get; internal set; } + + /// + /// Gets the columnid of the column in the temporary table which + /// stores the grbit that apply to the indexed column. See . + /// The column is of type . + /// + public JET_COLUMNID columnidgrbitColumn { get; internal set; } + + /// + /// Gets the columnid of the column in the temporary table which + /// stores the grbit that apply to the indexed column. See . + /// The column is of type . + /// + public JET_COLUMNID columnidcolumnname { get; internal set; } + + /// + /// Gets the columnid of the column in the temporary table which + /// stores the unicode normalization flags for the index. + /// The column is of type . + /// + public JET_COLUMNID columnidLCMapFlags { get; internal set; } + + /// + /// Returns a that represents the current . + /// + /// + /// A that represents the current . + /// + public override string ToString() + { + return string.Format( + CultureInfo.InvariantCulture, + "JET_INDEXLIST(0x{0:x},{1} records)", + this.tableid, + this.cRecord); + } + + /// + /// Sets the fields of the object from a native JET_INDEXLIST struct. + /// + /// + /// The native indexlist to set the values from. + /// + internal void SetFromNativeIndexlist(NATIVE_INDEXLIST value) + { + this.tableid = new JET_TABLEID { Value = value.tableid }; + this.cRecord = checked((int)value.cRecord); + this.columnidindexname = new JET_COLUMNID { Value = value.columnidindexname }; + this.columnidgrbitIndex = new JET_COLUMNID { Value = value.columnidgrbitIndex }; + this.columnidcKey = new JET_COLUMNID { Value = value.columnidcKey }; + this.columnidcEntry = new JET_COLUMNID { Value = value.columnidcEntry }; + this.columnidcPage = new JET_COLUMNID { Value = value.columnidcPage }; + this.columnidcColumn = new JET_COLUMNID { Value = value.columnidcColumn }; + this.columnidiColumn = new JET_COLUMNID { Value = value.columnidiColumn }; + this.columnidcolumnid = new JET_COLUMNID { Value = value.columnidcolumnid }; + this.columnidcoltyp = new JET_COLUMNID { Value = value.columnidcoltyp }; + this.columnidLangid = new JET_COLUMNID { Value = value.columnidLangid }; + this.columnidCp = new JET_COLUMNID { Value = value.columnidCp }; + this.columnidgrbitColumn = new JET_COLUMNID { Value = value.columnidgrbitColumn }; + this.columnidcolumnname = new JET_COLUMNID { Value = value.columnidcolumnname }; + this.columnidLCMapFlags = new JET_COLUMNID { Value = value.columnidLCMapFlags }; + } + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/jet_indexrange.cs b/WelsonJS.Toolkit/EsentInterop/jet_indexrange.cs new file mode 100644 index 0000000..598b0dd --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/jet_indexrange.cs @@ -0,0 +1,138 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Diagnostics.CodeAnalysis; + using System.Globalization; + using System.Runtime.InteropServices; + + /// + /// The native version of the JET_INDEXRANGE structure. + /// + [StructLayout(LayoutKind.Sequential)] + [SuppressMessage("Microsoft.StyleCop.CSharp.NamingRules", + "SA1305:FieldNamesMustNotUseHungarianNotation", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1307:AccessibleFieldsMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + internal struct NATIVE_INDEXRANGE + { + /// + /// Size of the structure. + /// + public uint cbStruct; + + /// + /// Cursor containing the index range. + /// + public IntPtr tableid; + + /// + /// Index range options. + /// + public uint grbit; + + /// + /// Create a NATIVE_INDEXRANGE from a cursor. + /// + /// The cursor containing the index range. + /// A new NATIVE_INDEXRANGE on the cursor. + public static NATIVE_INDEXRANGE MakeIndexRangeFromTableid(JET_TABLEID tableid) + { + var s = new NATIVE_INDEXRANGE + { + tableid = tableid.Value, + grbit = (uint)IndexRangeGrbit.RecordInIndex, + }; + s.cbStruct = (uint)Marshal.SizeOf(typeof(NATIVE_INDEXRANGE)); + return s; + } + } + + /// + /// Identifies an index range when it is used with the JetIntersectIndexes function. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1300:ElementMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + public class JET_INDEXRANGE : IContentEquatable, IDeepCloneable + { + /// + /// Initializes a new instance of the JET_INDEXRANGE class. + /// + public JET_INDEXRANGE() + { + // set the grbit to the only valid value + this.grbit = IndexRangeGrbit.RecordInIndex; + } + + /// + /// Gets or sets the cursor containing the index range. The cursor should have an + /// index range set with JetSetIndexRange. + /// + public JET_TABLEID tableid { get; set; } + + /// + /// Gets or sets the indexrange option. + /// + public IndexRangeGrbit grbit { get; set; } + + /// + /// Returns a deep copy of the object. + /// + /// A deep copy of the object. + public JET_INDEXRANGE DeepClone() + { + return (JET_INDEXRANGE)this.MemberwiseClone(); + } + + /// + /// Returns a that represents the current . + /// + /// + /// A that represents the current . + /// + public override string ToString() + { + return string.Format(CultureInfo.InvariantCulture, "JET_INDEXRANGE(0x{0:x},{1})", this.tableid.Value, this.grbit); + } + + /// + /// Returns a value indicating whether this instance is equal + /// to another instance. + /// + /// An instance to compare with this instance. + /// True if the two instances are equal. + public bool ContentEquals(JET_INDEXRANGE other) + { + if (null == other) + { + return false; + } + + return this.tableid == other.tableid + && this.grbit == other.grbit; + } + + /// + /// Get a NATIVE_INDEXRANGE structure representing the object. + /// + /// A NATIVE_INDEXRANGE whose members match the class. + internal NATIVE_INDEXRANGE GetNativeIndexRange() + { + var indexrange = new NATIVE_INDEXRANGE(); + indexrange.cbStruct = (uint)Marshal.SizeOf(typeof(NATIVE_INDEXRANGE)); + indexrange.tableid = this.tableid.Value; + indexrange.grbit = (uint)this.grbit; + return indexrange; + } + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/jet_instance_info.cs b/WelsonJS.Toolkit/EsentInterop/jet_instance_info.cs new file mode 100644 index 0000000..c592bca --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/jet_instance_info.cs @@ -0,0 +1,269 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Collections.Generic; + using System.Collections.ObjectModel; + using System.Diagnostics.CodeAnalysis; + using System.Globalization; + using System.Runtime.InteropServices; + + /// + /// The native version of the JET_INSTANCE_INFO structure. + /// + [StructLayout(LayoutKind.Sequential)] + [SuppressMessage("Microsoft.StyleCop.CSharp.NamingRules", + "SA1305:FieldNamesMustNotUseHungarianNotation", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1307:AccessibleFieldsMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + internal unsafe struct NATIVE_INSTANCE_INFO + { + /// + /// The JET_INSTANCE of the given instance. + /// + public IntPtr hInstanceId; + + /// + /// The name of the database instance. This value can be NULL if the + /// instance does not have a name. + /// + public IntPtr szInstanceName; + + /// + /// The number of databases that are attached to the database instance. + /// cDatabases also holds the size of the arrays of strings that are + /// returned in szDatabaseFileName, szDatabaseDisplayName, and + /// szDatabaseSLVFileName. + /// + public IntPtr cDatabases; + + /// + /// An array of strings, each holding the file name of a database that + /// is attached to the database instance. The array has cDatabases + /// elements. + /// + public IntPtr* szDatabaseFileName; + + /// + /// An array of strings, each holding the display name of a database. + /// This string is always null. The array has cDatabases elements. + /// + public IntPtr* szDatabaseDisplayName; + + /// + /// An array of strings, each holding the file name of the SLV file that + /// is attached to the database instance. The array has cDatabases + /// elements. SLV files are not supported, so this field should be ignored. + /// + [Obsolete("SLV files are not supported")] + public IntPtr* szDatabaseSLVFileName; + } + + /// + /// Receives information about running database instances when used with the + /// JetGetInstanceInfo and JetOSSnapshotFreeze functions. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1300:ElementMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + public class JET_INSTANCE_INFO : IEquatable + { + /// + /// Collection of database file names. + /// + private ReadOnlyCollection databases; + + /// + /// Initializes a new instance of the class. + /// + internal JET_INSTANCE_INFO() + { + } + + /// + /// Initializes a new instance of the class. + /// + /// + /// The instance. + /// + /// + /// The name of the instance. + /// + /// + /// The databases in the instance. + /// + internal JET_INSTANCE_INFO(JET_INSTANCE instance, string instanceName, string[] databases) + { + this.hInstanceId = instance; + this.szInstanceName = instanceName; + if (null == databases) + { + this.cDatabases = 0; + this.databases = null; + } + else + { + this.cDatabases = databases.Length; + this.databases = new ReadOnlyCollection(databases); + } + } + + /// + /// Gets the JET_INSTANCE of the given instance. + /// + public JET_INSTANCE hInstanceId { get; private set; } + + /// + /// Gets the name of the database instance. This value can be null if + /// the instance does not have a name. + /// + public string szInstanceName { get; private set; } + + /// + /// Gets the number of databases that are attached to the database instance. + /// + public int cDatabases { get; private set; } + + /// + /// Gets a collection of strings, each holding the file name of a database + /// that is attached to the database instance. The array has cDatabases + /// elements. + /// + public IList szDatabaseFileName + { + get + { + return this.databases; + } + } + + /// + /// Returns a value indicating whether this instance is equal + /// to another instance. + /// + /// An object to compare with this instance. + /// True if the two instances are equal. + public override bool Equals(object obj) + { + if (obj == null || this.GetType() != obj.GetType()) + { + return false; + } + + return this.Equals((JET_INSTANCE_INFO)obj); + } + + /// + /// Generate a string representation of the instance. + /// + /// The structure as a string. + public override string ToString() + { + return string.Format(CultureInfo.InvariantCulture, "JET_INSTANCE_INFO({0})", this.szInstanceName); + } + + /// + /// Returns the hash code for this instance. + /// + /// The hash code for this instance. + public override int GetHashCode() + { + int hash = this.hInstanceId.GetHashCode() + ^ (this.szInstanceName ?? string.Empty).GetHashCode() + ^ this.cDatabases << 20; + + for (int i = 0; i < this.cDatabases; ++i) + { + hash ^= this.szDatabaseFileName[i].GetHashCode(); + } + + return hash; + } + + /// + /// Returns a value indicating whether this instance is equal + /// to another instance. + /// + /// An instance to compare with this instance. + /// True if the two instances are equal. + public bool Equals(JET_INSTANCE_INFO other) + { + if (null == other) + { + return false; + } + + if (this.hInstanceId != other.hInstanceId + || this.szInstanceName != other.szInstanceName + || this.cDatabases != other.cDatabases) + { + return false; + } + + for (int i = 0; i < this.cDatabases; ++i) + { + if (this.szDatabaseFileName[i] != other.szDatabaseFileName[i]) + { + return false; + } + } + + return true; + } + + /// + /// Set the properties of the object from a native instance info where the + /// strings in the NATIVE_INSTANCE_INFO are ASCII. + /// + /// The native instance info. + internal void SetFromNativeAscii(NATIVE_INSTANCE_INFO native) + { + this.hInstanceId = new JET_INSTANCE { Value = native.hInstanceId }; + this.szInstanceName = Marshal.PtrToStringAnsi(native.szInstanceName); + this.cDatabases = checked((int)native.cDatabases); + string[] files = new string[this.cDatabases]; + unsafe + { + for (int i = 0; i < this.cDatabases; ++i) + { + files[i] = Marshal.PtrToStringAnsi(native.szDatabaseFileName[i]); + } + } + + this.databases = new ReadOnlyCollection(files); + } + + /// + /// Set the properties of the object from a native instance info where the + /// strings in the NATIVE_INSTANCE_INFO are Unicode. + /// + /// The native instance info. + internal void SetFromNativeUnicode(NATIVE_INSTANCE_INFO native) + { + this.hInstanceId = new JET_INSTANCE { Value = native.hInstanceId }; + this.szInstanceName = Marshal.PtrToStringUni(native.szInstanceName); + this.cDatabases = checked((int)native.cDatabases); + string[] files = new string[this.cDatabases]; + unsafe + { + for (int i = 0; i < this.cDatabases; ++i) + { + files[i] = Marshal.PtrToStringUni(native.szDatabaseFileName[i]); + } + } + + this.databases = new ReadOnlyCollection(files); + } + } +} +#endif // !MANAGEDESENT_ON_WSA \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/jet_iopriority.cs b/WelsonJS.Toolkit/EsentInterop/jet_iopriority.cs new file mode 100644 index 0000000..638c838 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/jet_iopriority.cs @@ -0,0 +1,43 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop.Vista +{ + using System; + + /// + /// Values for use with . + /// + [Flags] + public enum JET_IOPriority + { + /// + /// This is the default I/O priority level. + /// + Normal = 0x0, + + /// + /// Subsequent I/Os issued will be issued at Low priority. + /// + Low = 0x1, + + /// + /// Subsequent I/Os issued for checkpoint advancement will be issued at Low priority. + /// + /// + /// Available on Windows 8.1 and later. + /// + LowForCheckpoint = 0x2, + + /// + /// Subsequent I/Os issued for scavenging buffers will be issued at Low priority. + /// + /// + /// Available on Windows 8.1 and later. + /// + LowForScavenge = 0x4, + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/jet_lgpos.cs b/WelsonJS.Toolkit/EsentInterop/jet_lgpos.cs new file mode 100644 index 0000000..7c26ff5 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/jet_lgpos.cs @@ -0,0 +1,230 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Diagnostics; + using System.Diagnostics.CodeAnalysis; + using System.Globalization; + using System.Runtime.InteropServices; + + /// + /// Describes an offset in the log sequence. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1300:ElementMustBeginWithUpperCaseLetter", + Justification = "This should match the name of the unmanaged structure.")] + [StructLayout(LayoutKind.Sequential)] + [Serializable] + public struct JET_LGPOS : IEquatable, IComparable, INullableJetStruct + { + /// + /// Byte offset inside the sector. + /// + private ushort offset; + + /// + /// Sector number. + /// + private ushort sector; + + /// + /// Generation number. + /// + private int generation; + + /// + /// Gets or sets the byte offset represented by this log position. This + /// offset is inside of the sector. + /// + public int ib + { + [DebuggerStepThrough] + get { return this.offset; } + set { this.offset = checked((ushort)value); } + } + + /// + /// Gets or sets the sector number represented by this log position. + /// + public int isec + { + [DebuggerStepThrough] + get { return this.sector; } + set { this.sector = checked((ushort)value); } + } + + /// + /// Gets or sets the generation of this log position. + /// + public int lGeneration + { + [DebuggerStepThrough] + get { return this.generation; } + set { this.generation = value; } + } + + /// + /// Gets a value indicating whether this log position is null. + /// + public bool HasValue + { + get + { + return 0 != this.lGeneration; + } + } + + /// + /// Determines whether two specified instances of JET_LGPOS + /// are equal. + /// + /// The first instance to compare. + /// The second instance to compare. + /// True if the two instances are equal. + public static bool operator ==(JET_LGPOS lhs, JET_LGPOS rhs) + { + return lhs.Equals(rhs); + } + + /// + /// Determines whether two specified instances of JET_LGPOS + /// are not equal. + /// + /// The first instance to compare. + /// The second instance to compare. + /// True if the two instances are not equal. + public static bool operator !=(JET_LGPOS lhs, JET_LGPOS rhs) + { + return !(lhs == rhs); + } + + /// + /// Determine whether one log position is before another log position. + /// + /// The first log position to compare. + /// The second log position to compare. + /// True if lhs comes before rhs. + public static bool operator <(JET_LGPOS lhs, JET_LGPOS rhs) + { + return lhs.CompareTo(rhs) < 0; + } + + /// + /// Determine whether one log position is after another log position. + /// + /// The first log position to compare. + /// The second log position to compare. + /// True if lhs comes after rhs. + public static bool operator >(JET_LGPOS lhs, JET_LGPOS rhs) + { + return lhs.CompareTo(rhs) > 0; + } + + /// + /// Determine whether one log position is before or equal to + /// another log position. + /// + /// The first log position to compare. + /// The second log position to compare. + /// True if lhs comes before or is equal to rhs. + public static bool operator <=(JET_LGPOS lhs, JET_LGPOS rhs) + { + return lhs.CompareTo(rhs) <= 0; + } + + /// + /// Determine whether one log position is after or equal to + /// another log position. + /// + /// The first log position to compare. + /// The second log position to compare. + /// True if lhs comes after or is equal to rhs. + public static bool operator >=(JET_LGPOS lhs, JET_LGPOS rhs) + { + return lhs.CompareTo(rhs) >= 0; + } + + /// + /// Generate a string representation of the structure. + /// + /// The structure as a string. + public override string ToString() + { + return string.Format( + CultureInfo.InvariantCulture, + "JET_LGPOS(0x{0:X},{1:X},{2:X})", + this.lGeneration, + this.isec, + this.ib); + } + + /// + /// Returns a value indicating whether this instance is equal + /// to another instance. + /// + /// An object to compare with this instance. + /// True if the two instances are equal. + public override bool Equals(object obj) + { + if (obj == null || this.GetType() != obj.GetType()) + { + return false; + } + + return this.Equals((JET_LGPOS)obj); + } + + /// + /// Returns the hash code for this instance. + /// + /// The hash code for this instance. + public override int GetHashCode() + { + return this.generation ^ (this.sector << 16) ^ this.offset; + } + + /// + /// Returns a value indicating whether this instance is equal + /// to another instance. + /// + /// An instance to compare with this instance. + /// True if the two instances are equal. + public bool Equals(JET_LGPOS other) + { + return this.generation == other.generation + && this.sector == other.sector + && this.offset == other.offset; + } + + /// + /// Compares this log position to another log position and determines + /// whether this instance is before, the same as or after the other + /// instance. + /// + /// The log position to compare to the current instance. + /// + /// A signed number indicating the relative positions of this instance and the value parameter. + /// + public int CompareTo(JET_LGPOS other) + { + int compare = this.generation.CompareTo(other.generation); + if (0 == compare) + { + compare = this.sector.CompareTo(other.sector); + } + + if (0 == compare) + { + compare = this.offset.CompareTo(other.offset); + } + + return compare; + } + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/jet_logtime.cs b/WelsonJS.Toolkit/EsentInterop/jet_logtime.cs new file mode 100644 index 0000000..e1cfccd --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/jet_logtime.cs @@ -0,0 +1,233 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Diagnostics.CodeAnalysis; + using System.Globalization; + using System.Runtime.InteropServices; + + /// + /// Describes a date/time. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1305:FieldNamesMustNotUseHungarianNotation", + Justification = "This should match the name of the unmanaged structure.")] + [StructLayout(LayoutKind.Sequential)] + [Serializable] + public partial struct JET_LOGTIME : IEquatable, IJET_LOGTIME + { + /// + /// The time in seconds. This value can be 0 to 59. + /// + private readonly byte bSeconds; + + /// + /// The time in minutes. This value can be 0 to 59. + /// + private readonly byte bMinutes; + + /// + /// The time in hours. This value can be 0 to 23. + /// + private readonly byte bHours; + + /// + /// The day of the month. This value can be 0 to 31. 0 is + /// used when the structure is null. + /// + private readonly byte bDays; + + /// + /// The month. This value can be 0 to 12. 0 is + /// used when the structure is null. + /// + private readonly byte bMonth; + + /// + /// The year of the event, offset by 1900. + /// + private readonly byte bYear; + + /// + /// IsUTC flag at the first bit. Starting from win8, milli-seconds (low part) is filled at left 7 bits. + /// + private readonly byte bFiller1; + + /// + /// OSSnapshot flag at the first bit, Starting from win8, milli-seconds (high part) is filled at following 3 bits. Other bits are reserved. + /// + private readonly byte bFiller2; + + /// + /// Initializes a new instance of the struct. + /// + /// + /// The DateTime to initialize the structure with. + /// + internal JET_LOGTIME(DateTime time) + { + this.bSeconds = checked((byte)time.Second); + this.bMinutes = checked((byte)time.Minute); + this.bHours = checked((byte)time.Hour); + this.bDays = checked((byte)time.Day); + this.bMonth = checked((byte)time.Month); + this.bYear = checked((byte)(time.Year - 1900)); + + // bFiller1: fTimeIsUTC at the first bit, bMillisecondsLow at left 7 bits + this.bFiller1 = (time.Kind == DateTimeKind.Utc) ? (byte)0x1 : (byte)0; + this.bFiller1 |= checked((byte)((time.Millisecond & 0x7F) << 1)); + + // bFiller2: fOSSnapshot at the first bit, bMillisecondsHigh at following 3 bits + this.bFiller2 = checked((byte)((time.Millisecond & 0x380) >> 6)); + } + + /// + /// Gets a value indicating whether the JET_LOGTIME has a null value. + /// + public bool HasValue + { + get { return 0 != this.bMonth && 0 != this.bDays; } + } + + /// + /// Gets a value indicating whether the JET_LOGTIME is in UTC. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1300:ElementMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + public bool fTimeIsUTC + { + get { return 0 != (this.bFiller1 & 0x1); } + } + + /// + /// Determines whether two specified instances of JET_LOGTIME + /// are equal. + /// + /// The first instance to compare. + /// The second instance to compare. + /// True if the two instances are equal. + public static bool operator ==(JET_LOGTIME lhs, JET_LOGTIME rhs) + { + return lhs.Equals(rhs); + } + + /// + /// Determines whether two specified instances of JET_LOGTIME + /// are not equal. + /// + /// The first instance to compare. + /// The second instance to compare. + /// True if the two instances are not equal. + public static bool operator !=(JET_LOGTIME lhs, JET_LOGTIME rhs) + { + return !(lhs == rhs); + } + + /// + /// Generate a DateTime representation of this JET_LOGTIME. + /// + /// + /// A DateTime representing the JET_LOGTIME. If the JET_LOGTIME + /// is null then null is returned. + /// + public DateTime? ToDateTime() + { + if (!this.HasValue) + { + return null; + } + + return new DateTime( + this.bYear + 1900, + this.bMonth, + this.bDays, + this.bHours, + this.bMinutes, + this.bSeconds, + checked((int)((((uint)this.bFiller2 & 0xE) << 6) | (((uint)this.bFiller1 & 0xFE) >> 1))), + this.fTimeIsUTC ? DateTimeKind.Utc : DateTimeKind.Local); + } + + /// + /// Generate a string representation of the structure. + /// + /// The structure as a string. + public override string ToString() + { + return string.Format( + CultureInfo.InvariantCulture, + "JET_LOGTIME({0}:{1}:{2}:{3}:{4}:{5}:0x{6:x}:0x{7:x})", + this.bSeconds, + this.bMinutes, + this.bHours, + this.bDays, + this.bMonth, + this.bYear, + this.bFiller1, + this.bFiller2); + } + + /// + /// Returns a value indicating whether this instance is equal + /// to another instance. + /// + /// An object to compare with this instance. + /// True if the two instances are equal. + public override bool Equals(object obj) + { + if (obj == null || GetType() != obj.GetType()) + { + return false; + } + + return this.Equals((JET_LOGTIME)obj); + } + + /// + /// Returns the hash code for this instance. + /// + /// The hash code for this instance. + public override int GetHashCode() + { + // None of the members are larger than a byte and many use fewer than + // all 8 bits (e.g. a month count uses only 4 bits). Spread the members + // out through the 32-bit hash value. + // (This is better than the default implementation of GetHashCode, which + // easily aliases different JET_LOGTIMES to the same hash code) + return this.bSeconds.GetHashCode() + ^ (this.bMinutes << 6) + ^ (this.bHours << 12) + ^ (this.bDays << 17) + ^ (this.bMonth << 22) + ^ (this.bYear << 24) + ^ this.bFiller1 + ^ (this.bFiller2 << 8); + } + + /// + /// Returns a value indicating whether this instance is equal + /// to another instance. + /// + /// An instance to compare with this instance. + /// True if the two instances are equal. + public bool Equals(JET_LOGTIME other) + { + return this.bSeconds == other.bSeconds + && this.bMinutes == other.bMinutes + && this.bHours == other.bHours + && this.bDays == other.bDays + && this.bMonth == other.bMonth + && this.bYear == other.bYear + && this.bFiller1 == other.bFiller1 + && this.bFiller2 == other.bFiller2; + } + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/jet_move.cs b/WelsonJS.Toolkit/EsentInterop/jet_move.cs new file mode 100644 index 0000000..e8857a4 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/jet_move.cs @@ -0,0 +1,34 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + /// + /// Offsets for JetMove. + /// + public enum JET_Move + { + /// + /// Move the cursor to the first index entry. + /// + First = -2147483648, + + /// + /// Move to the previous index entry. + /// + Previous = -1, + + /// + /// Move to the next index entry. + /// + Next = 1, + + /// + /// Move to the last index entry. + /// + Last = 0x7fffffff, + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/jet_objectinfo.cs b/WelsonJS.Toolkit/EsentInterop/jet_objectinfo.cs new file mode 100644 index 0000000..d5bb9dd --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/jet_objectinfo.cs @@ -0,0 +1,136 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Diagnostics.CodeAnalysis; + using System.Globalization; + using System.Runtime.InteropServices; + + /// + /// The native version of the JET_OBJECTINFO structure. + /// + [StructLayout(LayoutKind.Sequential)] + [SuppressMessage("Microsoft.StyleCop.CSharp.NamingRules", + "SA1305:FieldNamesMustNotUseHungarianNotation", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1307:AccessibleFieldsMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + internal struct NATIVE_OBJECTINFO + { + /// + /// Size of the structure. + /// + public uint cbStruct; + + /// + /// Holds the JET_OBJTYP of the structure. Currently only tables will be + /// returned (that is, ). + /// + public uint objtyp; + + /// + /// Obsolete. Do not use. + /// + [Obsolete("Unused member")] + public double ignored1; + + /// + /// Obsolete. Do not use. + /// + [Obsolete("Unused member")] + public double ignored2; + + /// + /// A group of bits that contain table options. + /// + public uint grbit; + + /// + /// Table type flags. + /// + public uint flags; + + /// + /// Number of records in the table. + /// + public uint cRecord; + + /// + /// Number of pages used by the table. + /// + public uint cPage; + } + + /// + /// The JET_OBJECTINFO structure holds information about an object. + /// Tables are the only object types that are currently supported. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1300:ElementMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + public class JET_OBJECTINFO + { + /// + /// Gets the JET_OBJTYP of the table. Currently only tables will be + /// returned (that is, ). + /// + public JET_objtyp objtyp { get; private set; } + + /// + /// Gets the table options. + /// + public ObjectInfoGrbit grbit { get; private set; } + + /// + /// Gets the table type flags. + /// + public ObjectInfoFlags flags { get; private set; } + + /// + /// Gets the number of records in the table. + /// + public int cRecord { get; private set; } + + /// + /// Gets the number of pages used by the table. + /// + public int cPage { get; private set; } + + /// + /// Returns a that represents the current . + /// + /// + /// A that represents the current . + /// + public override string ToString() + { + return string.Format(CultureInfo.InvariantCulture, "JET_OBJECTINFO({0})", this.flags); + } + + /// + /// Sets the fields of the object from a native JET_OBJECTINFO struct. + /// + /// + /// The native objectlist to set the values from. + /// + internal void SetFromNativeObjectinfo(ref NATIVE_OBJECTINFO value) + { + unchecked + { + this.objtyp = (JET_objtyp)value.objtyp; + this.grbit = (ObjectInfoGrbit)value.grbit; + this.flags = (ObjectInfoFlags)value.flags; + this.cRecord = (int)value.cRecord; + this.cPage = (int)value.cPage; + } + } + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/jet_objectlist.cs b/WelsonJS.Toolkit/EsentInterop/jet_objectlist.cs new file mode 100644 index 0000000..7a9c708 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/jet_objectlist.cs @@ -0,0 +1,188 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Diagnostics.CodeAnalysis; + using System.Globalization; + using System.Runtime.InteropServices; + + /// + /// The native version of the JET_OBJECTLIST structure. + /// + [StructLayout(LayoutKind.Sequential)] + [SuppressMessage("Microsoft.StyleCop.CSharp.NamingRules", + "SA1305:FieldNamesMustNotUseHungarianNotation", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1307:AccessibleFieldsMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + internal struct NATIVE_OBJECTLIST + { + /// + /// Size of the structure. + /// + public uint cbStruct; + + /// + /// Tableid of the temporary table. + /// + public IntPtr tableid; + + /// + /// Number of records in the temporary table. + /// + public uint cRecord; + + /// + /// The id of column containing the name of the container type. + /// + public uint columnidcontainername; + + /// + /// The id of the column containing the name of the object. + /// + public uint columnidobjectname; + + /// + /// The id of the column containing the type of the object. + /// + public uint columnidobjtyp; + + /// + /// Obsolete. Do not use. + /// + [Obsolete("Unused member")] + public uint columniddtCreate; + + /// + /// Obsolete. Do not use. + /// + [Obsolete("Unused member")] + public uint columniddtUpdate; + + /// + /// The id of the column containing object grbits. + /// + public uint columnidgrbit; + + /// + /// The id of the column containing object flags. + /// + public uint columnidflags; + + /// + /// The id of the column containing the number of records in the table. + /// + public uint columnidcRecord; + + /// + /// The id of the column containing the number of pages the object uses. + /// + public uint columnidcPage; + } + + /// + /// Information about a temporary table containing information + /// about all tables for a given database. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1300:ElementMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + public class JET_OBJECTLIST + { + /// + /// Gets tableid of the temporary table. This should be closed + /// when the table is no longer needed. + /// + public JET_TABLEID tableid { get; internal set; } + + /// + /// Gets the number of records in the temporary table. + /// + public int cRecord { get; internal set; } + + /// + /// Gets the columnid of the column in the temporary table which + /// stores the name of the table. + /// + public JET_COLUMNID columnidobjectname { get; internal set; } + + /// + /// Gets the columnid of the column in the temporary table which + /// stores the type of the table. + /// + public JET_COLUMNID columnidobjtyp { get; internal set; } + + /// + /// Gets the columnid of the column in the temporary table which + /// stores the grbits used when the table was created. + /// + public JET_COLUMNID columnidgrbit { get; internal set; } + + /// + /// Gets the columnid of the column in the temporary table which + /// stores the table flags (e.g. the system table flag). + /// + public JET_COLUMNID columnidflags { get; internal set; } + + /// + /// Gets the columnid of the column in the temporary table which + /// stores the number of records in the table. + /// + public JET_COLUMNID columnidcRecord { get; internal set; } + + /// + /// Gets the columnid of the column in the temporary table which + /// stores the name of the container. + /// + public JET_COLUMNID columnidcontainername { get; internal set; } + + /// + /// Gets the columnid of the column in the temporary table which + /// stores the number of pages used by the table. + /// + public JET_COLUMNID columnidcPage { get; internal set; } + + /// + /// Returns a that represents the current . + /// + /// + /// A that represents the current . + /// + public override string ToString() + { + return string.Format( + CultureInfo.InvariantCulture, + "JET_OBJECTLIST(0x{0:x},{1} records)", + this.tableid, + this.cRecord); + } + + /// + /// Sets the fields of the object from a native JET_OBJECTLIST struct. + /// + /// + /// The native objectlist to set the values from. + /// + internal void SetFromNativeObjectlist(NATIVE_OBJECTLIST value) + { + this.tableid = new JET_TABLEID { Value = value.tableid }; + this.cRecord = checked((int)value.cRecord); + + this.columnidobjectname = new JET_COLUMNID { Value = value.columnidobjectname }; + this.columnidobjtyp = new JET_COLUMNID { Value = value.columnidobjtyp }; + this.columnidgrbit = new JET_COLUMNID { Value = value.columnidgrbit }; + this.columnidflags = new JET_COLUMNID { Value = value.columnidflags }; + this.columnidcRecord = new JET_COLUMNID { Value = value.columnidcRecord }; + this.columnidcPage = new JET_COLUMNID { Value = value.columnidcPage }; + this.columnidcontainername = new JET_COLUMNID { Value = value.columnidcontainername }; + } + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/jet_objinfo.cs b/WelsonJS.Toolkit/EsentInterop/jet_objinfo.cs new file mode 100644 index 0000000..af98582 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/jet_objinfo.cs @@ -0,0 +1,26 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + /// + /// Info levels for retrieving object info. + /// + internal enum JET_ObjInfo + { + /// + /// Retrieve a JET_OBJINFOLIST containing information + /// about all object in the table. + /// + ListNoStats = 1, + + /// + /// Retrieve a JET_OBJINFO containing information + /// about all object in the table. + /// + NoStats = 5, + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/jet_objtyp.cs b/WelsonJS.Toolkit/EsentInterop/jet_objtyp.cs new file mode 100644 index 0000000..9218321 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/jet_objtyp.cs @@ -0,0 +1,24 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + /// + /// Type of an ESENT object. + /// + public enum JET_objtyp + { + /// + /// Invalid object type. + /// + Nil = 0, + + /// + /// Object is a table. + /// + Table = 1, + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/jet_opentemporarytable.cs b/WelsonJS.Toolkit/EsentInterop/jet_opentemporarytable.cs new file mode 100644 index 0000000..e54e612 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/jet_opentemporarytable.cs @@ -0,0 +1,215 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop.Vista +{ + using System; + using System.Diagnostics.CodeAnalysis; + using System.Globalization; + using System.Runtime.InteropServices; + + /// + /// The native version of the JET_OPENTEMPORARYTABLE structure. + /// + [StructLayout(LayoutKind.Sequential)] + [SuppressMessage("Microsoft.StyleCop.CSharp.NamingRules", + "SA1305:FieldNamesMustNotUseHungarianNotation", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1307:AccessibleFieldsMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + internal unsafe struct NATIVE_OPENTEMPORARYTABLE + { + /// + /// Size of the structure. + /// + public uint cbStruct; + + /// + /// Columns to create. + /// + public NATIVE_COLUMNDEF* prgcolumndef; + + /// + /// Number of entries in prgcolumndef. + /// + public uint ccolumn; + + /// + /// Optional pointer to unicode index information. + /// + public NATIVE_UNICODEINDEX* pidxunicode; + + /// + /// Table options. + /// + public uint grbit; + + /// + /// Pointer to array of returned columnids. This + /// should have at least ccolumn entries. + /// + public uint* rgcolumnid; + + /// + /// Maximum key size. + /// + public uint cbKeyMost; + + /// + /// Maximum amount of data used to construct a key. + /// + public uint cbVarSegMac; + + /// + /// Returns the tableid of the new table. + /// + public IntPtr tableid; + } + + /// + /// A collection of parameters for the JetOpenTemporaryTable method. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1300:ElementMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + public partial class JET_OPENTEMPORARYTABLE + { + /// + /// Gets or sets the column definitions for the columns created in + /// the temporary table. + /// + public JET_COLUMNDEF[] prgcolumndef { get; set; } + + /// + /// Gets or sets the number of columns in . + /// + /// + public int ccolumn { get; set; } + + /// + /// Gets or sets the locale ID and normalization flags to use to compare any Unicode + /// key column data in the temporary table. When this parameter is + /// null, then the default LCID will be used to compare any Unicode key + /// columns in the temporary table. The default LCID is the U.S. English + /// locale. When this parameter is null, then the default normalization + /// flags will be used to compare any Unicode key column data in the temp + /// table. The default normalization flags are: NORM_IGNORECASE, + /// NORM_IGNOREKANATYPE, and NORM_IGNOREWIDTH. + /// + public JET_UNICODEINDEX pidxunicode { get; set; } + + /// + /// Gets or sets options for the temp table. + /// + public TempTableGrbit grbit { get; set; } + + /// + /// Gets or sets the output buffer that receives the array of column + /// IDs generated during the creation of the temporary table. The + /// column IDs in this array will exactly correspond to the input array + /// of column definitions. As a result, the size of this buffer must + /// correspond to the size of . + /// + public JET_COLUMNID[] prgcolumnid { get; set; } + + /// + /// Gets or sets the maximum size for a key representing a given row. The maximum + /// key size may be set to control how keys are truncated. Key + /// truncation is important because it can affect when rows are + /// considered to be distinct. If this parameter is set to 0 or + /// 255 then the maximum key size and its semantics will remain + /// identical to the maximum key size supported by Windows Server 2003 + /// and previous releases. This parameter may also be set to a larger + /// value as a function of the database page size for the instance + /// . See + /// for more information. + /// + public int cbKeyMost { get; set; } + + /// + /// Gets or sets maximum amount of data that will be used from any + /// variable lengthcolumn to construct a key for a given row. This + /// parameter may be used to control the amount of key space consumed + /// by any given key column. This limit is in bytes. If this parameter + /// is zero or is the same as the property + /// then no limit is in effect. + /// + public int cbVarSegMac { get; set; } + + /// + /// Gets the table handle for the temporary table created as a result + /// of a successful call to JetOpenTemporaryTable. + /// + public JET_TABLEID tableid { get; internal set; } + + /// + /// Returns a that represents the current . + /// + /// + /// A that represents the current . + /// + public override string ToString() + { + return string.Format( + CultureInfo.InvariantCulture, + "JET_OPENTEMPORARYTABLE({0}, {1} columns)", + this.grbit, + this.ccolumn); + } + + /// + /// Returns the unmanaged opentemporarytable that represents this managed class. + /// + /// + /// A native (interop) version of the JET_OPENTEMPORARYTABLE. + /// + internal NATIVE_OPENTEMPORARYTABLE GetNativeOpenTemporaryTable() + { + this.CheckDataSize(); + var openTemporaryTable = new NATIVE_OPENTEMPORARYTABLE(); + openTemporaryTable.cbStruct = checked((uint)Marshal.SizeOf(typeof(NATIVE_OPENTEMPORARYTABLE))); + openTemporaryTable.ccolumn = checked((uint)this.ccolumn); + openTemporaryTable.grbit = (uint)this.grbit; + openTemporaryTable.cbKeyMost = checked((uint)this.cbKeyMost); + openTemporaryTable.cbVarSegMac = checked((uint)this.cbVarSegMac); + return openTemporaryTable; + } + + /// + /// Make sure the data and count members are the correct size. + /// + private void CheckDataSize() + { + if (null == this.prgcolumndef) + { + throw new ArgumentNullException("prgcolumndef"); + } + + if (null == this.prgcolumnid) + { + throw new ArgumentNullException("prgcolumnid"); + } + + if (this.ccolumn < 0) + { + throw new ArgumentOutOfRangeException("ccolumn", this.ccolumn, "cannot be negative"); + } + + if (this.ccolumn > this.prgcolumndef.Length) + { + throw new ArgumentOutOfRangeException("ccolumn", this.ccolumn, "cannot be greater than prgcolumndef.Length"); + } + + if (this.ccolumn > this.prgcolumnid.Length) + { + throw new ArgumentOutOfRangeException("ccolumn", this.ccolumn, "cannot be greater than prgcolumnid.Length"); + } + } + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/jet_operationcontext.cs b/WelsonJS.Toolkit/EsentInterop/jet_operationcontext.cs new file mode 100644 index 0000000..169be4b --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/jet_operationcontext.cs @@ -0,0 +1,212 @@ +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop.Windows10 +{ + using System; + using System.Diagnostics.CodeAnalysis; + using System.Globalization; + using System.Runtime.InteropServices; + + /// + /// A structure that can be used with to set a client context on a session. + /// + [StructLayout(LayoutKind.Sequential)] + [SuppressMessage("Microsoft.StyleCop.CSharp.NamingRules", + "SA1305:FieldNamesMustNotUseHungarianNotation", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1307:AccessibleFieldsMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + [SuppressMessage("Microsoft.StyleCop.CSharp.OrderingRules", + "SA1202:ElementsMustBeOrderedByAccess", + Justification = "Ordering matches the rest of the codebase.")] + internal struct NATIVE_OPERATIONCONTEXT + { + /// + /// User ID this operation context belongs to. + /// + public int ulUserID; + + /// + /// An operation ID identifying this operation. + /// + public byte nOperationID; + + /// + /// Type of this operation. + /// + public byte nOperationType; + + /// + /// The client type that this operation context belongs to. + /// + public byte nClientType; + + /// + /// Flags for additional context that an application might want to store. + /// + public byte fFlags; + } + + /// + /// A type that can be used with to set a client context on a session. + /// + public struct JET_OPERATIONCONTEXT : IEquatable + { + #region Constructors + /// + /// Initializes a new instance of the + /// struct. + /// + /// The native + /// object to be based upon. + internal JET_OPERATIONCONTEXT(ref NATIVE_OPERATIONCONTEXT native) + : this() + { + this.UserID = native.ulUserID; + this.OperationID = native.nOperationID; + this.OperationType = native.nOperationType; + this.ClientType = native.nClientType; + + this.Flags = native.fFlags; + } + #endregion + + /// + /// Gets or sets the user ID this operation context belongs to. + /// + public int UserID { get; set; } + + /// + /// Gets or sets an operation ID identifying this operation. + /// + public byte OperationID { get; set; } + + /// + /// Gets or sets the type of this operation. + /// + public byte OperationType { get; set; } + + /// + /// Gets or sets the client type that this operation context belongs to. + /// + public byte ClientType { get; set; } + + /// + /// Gets or sets the flags for additional context that an application might want to store. + /// + public byte Flags { get; set; } + + #region operators + /// + /// Determines whether two specified instances of + /// are equal. + /// + /// The first instance to compare. + /// The second instance to compare. + /// True if the two instances are equal. + public static bool operator ==(JET_OPERATIONCONTEXT lhs, JET_OPERATIONCONTEXT rhs) + { + return lhs.Equals(rhs); + } + + /// + /// Determines whether two specified instances of + /// are not equal. + /// + /// The first instance to compare. + /// The second instance to compare. + /// True if the two instances are not equal. + public static bool operator !=(JET_OPERATIONCONTEXT lhs, JET_OPERATIONCONTEXT rhs) + { + return !(lhs == rhs); + } + #endregion + + #region IEquatable and related required functions. + /// + /// Returns a value indicating whether this instance is equal + /// to another instance. + /// + /// An object to compare with this instance. + /// True if the two instances are equal. + public override bool Equals(object obj) + { + if (obj == null || GetType() != obj.GetType()) + { + return false; + } + + return this.Equals((JET_OPERATIONCONTEXT)obj); + } + + /// + /// Returns the hash code for this instance. + /// + /// The hash code for this instance. + public override int GetHashCode() + { + return this.UserID.GetHashCode() + ^ this.OperationID.GetHashCode() + ^ this.OperationType.GetHashCode() + ^ this.ClientType.GetHashCode() + ^ this.Flags.GetHashCode(); + } + + /// + /// Returns a value indicating whether this instance is equal + /// to another instance. + /// + /// An instance to compare with this instance. + /// True if the two instances are equal. + public bool Equals(JET_OPERATIONCONTEXT other) + { + bool contentEquals = + this.UserID == other.UserID && + this.OperationID == other.OperationID && + this.OperationType == other.OperationType && + this.ClientType == other.ClientType && + this.Flags == other.Flags; + return contentEquals; + } + + #endregion + + /// + /// Generate a string representation of the instance. + /// + /// The structure as a string. + public override string ToString() + { + return string.Format( + CultureInfo.InvariantCulture, + "JET_OPERATIONCONTEXT({0}:{1}:{2}:{3}:0x{4:x2})", + this.UserID, + this.OperationID, + this.OperationType, + this.ClientType, + this.Flags); + } + + /// + /// Gets the native (interop) version of this object. + /// + /// + /// The native (interop) version of this object. + /// + internal NATIVE_OPERATIONCONTEXT GetNativeOperationContext() + { + var native = new NATIVE_OPERATIONCONTEXT(); + native.ulUserID = this.UserID; + native.nOperationID = this.OperationID; + native.nOperationType = this.OperationType; + native.nClientType = this.ClientType; + native.fFlags = this.Flags; + return native; + } + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/jet_param.cs b/WelsonJS.Toolkit/EsentInterop/jet_param.cs new file mode 100644 index 0000000..464bcaa --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/jet_param.cs @@ -0,0 +1,434 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + + using Microsoft.Isam.Esent.Interop.Vista; + using Microsoft.Isam.Esent.Interop.Windows7; + using Microsoft.Isam.Esent.Interop.Windows8; + + /// + /// ESENT system parameters. This list is not extensive. Some parameters introduced later + /// are in different classes, such as , , + /// or . + /// + /// is usually used with , + /// , + /// , and + /// . + /// Some of these parameters are exposed with the helper classes + /// and . + /// + /// + /// + /// + /// + public enum JET_param + { + /// + /// This parameter indicates the relative or absolute file system path of the + /// folder that will contain the checkpoint file for the instance. The path + /// must be terminated with a backslash character, which indicates that the + /// target path is a folder. + /// + SystemPath = 0, + + /// + /// This parameter indicates the relative or absolute file system path of + /// the folder or file that will contain the temporary database for the instance. + /// If the path is to a folder that will contain the temporary database then it + /// must be terminated with a backslash character. + /// + TempPath = 1, + + /// + /// This parameter indicates the relative or absolute file system path of the + /// folder that will contain the transaction logs for the instance. The path must + /// be terminated with a backslash character, which indicates that the target path + /// is a folder. + /// + LogFilePath = 2, + + /// + /// This parameter sets the three letter prefix used for many of the files used by + /// the database engine. For example, the checkpoint file is called EDB.CHK by + /// default because EDB is the default base name. + /// + BaseName = 3, + + /// + /// This parameter supplies an application specific string that will be added to + /// any event log messages that are emitted by the database engine. This allows + /// easy correlation of event log messages with the source application. By default + /// the host application executable name will be used. + /// + EventSource = 4, + + /// + /// This parameter reserves the requested number of session resources for use by an + /// instance. A session resource directly corresponds to a JET_SESID data type. + /// This setting will affect how many sessions can be used at the same time. + /// + MaxSessions = 5, + + /// + /// This parameter reserves the requested number of B+ Tree resources for use by + /// an instance. This setting will affect how many tables can be used at the same time. + /// + MaxOpenTables = 6, + + // PreferredMaxOpenTables(7) is obsolete + + /// + /// This parameter reserves the requested number of cursor resources for use by an + /// instance. A cursor resource directly corresponds to a JET_TABLEID data type. + /// This setting will affect how many cursors can be used at the same time. A cursor + /// resource cannot be shared by different sessions so this parameter must be set to + /// a large enough value so that each session can use as many cursors as are required. + /// + MaxCursors = 8, + + /// + /// This parameter reserves the requested number of version store pages for use by an instance. + /// + MaxVerPages = 9, + + /// + /// This parameter reserves the requested number of temporary table resources for use + /// by an instance. This setting will affect how many temporary tables can be used at + /// the same time. If this system parameter is set to zero then no temporary database + /// will be created and any activity that requires use of the temporary database will + /// fail. This setting can be useful to avoid the I/O required to create the temporary + /// database if it is known that it will not be used. + /// + /// + /// The use of a temporary table also requires a cursor resource. + /// + MaxTemporaryTables = 10, + + /// + /// This parameter will configure the size of the transaction log files. Each + /// transaction log file is a fixed size. The size is equal to the setting of + /// this system parameter in units of 1024 bytes. + /// + LogFileSize = 11, + + /// + /// This parameter will configure the amount of memory used to cache log records + /// before they are written to the transaction log file. The unit for this + /// parameter is the sector size of the volume that holds the transaction log files. + /// The sector size is almost always 512 bytes, so it is safe to assume that size + /// for the unit. This parameter has an impact on performance. When the database + /// engine is under heavy update load, this buffer can become full very rapidly. + /// A larger cache size for the transaction log file is critical for good update + /// performance under such a high load condition. The default is known to be too small + /// for this case. + /// Do not set this parameter to a number of buffers that is larger (in bytes) than + /// half the size of a transaction log file. + /// + LogBuffers = 12, + + /// + /// This parameter configures how transaction log files are managed by the database + /// engine. When circular logging is off, all transaction log files that are generated + /// are retained on disk until they are no longer needed because a full backup of the + /// database has been performed. When circular logging is on, only transaction log files + /// that are younger than the current checkpoint are retained on disk. The benefit of + /// this mode is that backups are not required to retire old transaction log files. + /// + CircularLog = 17, + + /// + /// This parameter controls the amount of space that is added to a database file each + /// time it needs to grow to accommodate more data. The size is in database pages. + /// + DbExtensionSize = 18, + + /// + /// This parameter controls the initial size of the temporary database. The size is in + /// database pages. A size of zero indicates that the default size of an ordinary + /// database should be used. It is often desirable for small applications to configure + /// the temporary database to be as small as possible. Setting this parameter to + /// SystemParameters.PageTempDBSmallest will achieve the smallest temporary database possible. + /// + PageTempDBMin = 19, + + /// + /// This parameter configures the maximum size of the database page cache. The size + /// is in database pages. If this parameter is left to its default value, then the + /// maximum size of the cache will be set to the size of physical memory when JetInit + /// is called. + /// + CacheSizeMax = 23, + + /// + /// This parameter controls how aggressively database pages are flushed from the + /// database page cache to minimize the amount of time it will take to recover from a + /// crash. The parameter is a threshold in bytes for about how many transaction log + /// files will need to be replayed after a crash. If circular logging is enabled using + /// JET_param.CircularLog then this parameter will also control the approximate amount + /// of transaction log files that will be retained on disk. + /// + CheckpointDepthMax = 24, + + /// + /// This parameter controls the correlation interval of ESE's LRU-K page replacement + /// algorithm. + /// + LrukCorrInterval = 25, + + /// + /// This parameter controls the timeout interval of ESE's LRU-K page replacement + /// algorithm. + /// + LrukTimeout = 28, + + /// + /// This parameter controls how many database file I/Os can be queued + /// per-disk in the host operating system at one time. A larger value + /// for this parameter can significantly help the performance of a large + /// database application. + /// + OutstandingIOMax = 30, + + /// + /// This parameter controls when the database page cache begins evicting pages from the + /// cache to make room for pages that are not cached. When the number of page buffers in the cache + /// drops below this threshold then a background process will be started to replenish that pool + /// of available buffers. This threshold is always relative to the maximum cache size as set by + /// JET_paramCacheSizeMax. This threshold must also always be less than the stop threshold as + /// set by JET_paramStopFlushThreshold. + /// + /// The distance height of the start threshold will determine the response time that the database + /// page cache must have to produce available buffers before the application needs them. A high + /// start threshold will give the background process more time to react. However, a high start + /// threshold implies a higher stop threshold and that will reduce the effective size of the + /// database page cache for modified pages (Windows 2000) or for all pages (Windows XP and later). + /// + /// + StartFlushThreshold = 31, + + /// + /// This parameter controls when the database page cache ends evicting pages from the cache to make + /// room for pages that are not cached. When the number of page buffers in the cache rises above + /// this threshold then the background process that was started to replenish that pool of available + /// buffers is stopped. This threshold is always relative to the maximum cache size as set by + /// JET_paramCacheSizeMax. This threshold must also always be greater than the start threshold + /// as set by JET_paramStartFlushThreshold. + /// + /// The distance between the start threshold and the stop threshold affects the efficiency with + /// which database pages are flushed by the background process. A larger gap will make it + /// more likely that writes to neighboring pages may be combined. However, a high stop + /// threshold will reduce the effective size of the database page cache for modified + /// pages (Windows 2000) or for all pages (Windows XP and later). + /// + /// + StopFlushThreshold = 32, + + /// + /// This parameter is the master switch that controls crash recovery for an instance. + /// If this parameter is set to "On" then ARIES style recovery will be used to bring all + /// databases in the instance to a consistent state in the event of a process or machine + /// crash. If this parameter is set to "Off" then all databases in the instance will be + /// managed without the benefit of crash recovery. That is to say, that if the instance + /// is not shut down cleanly using JetTerm prior to the process exiting or machine shutdown + /// then the contents of all databases in that instance will be corrupted. + /// + Recovery = 34, + + /// + /// This parameter controls the behavior of online defragmentation when initiated using + /// and . + /// + EnableOnlineDefrag = 35, + + /// + /// This parameter can be used to control the size of the database page cache at run time. + /// Ordinarily, the cache will automatically tune its size as a function of database and + /// machine activity levels. If the application sets this parameter to zero, then the cache + /// will tune its own size in this manner. However, if the application sets this parameter + /// to a non-zero value then the cache will adjust itself to that target size. + /// + CacheSize = 41, + + /// + /// When this parameter is true, every database is checked at JetAttachDatabase time for + /// indexes over Unicode key columns that were built using an older version of the NLS + /// library in the operating system. This must be done because the database engine persists + /// the sort keys generated by LCMapStringW and the value of these sort keys change from release to release. + /// If a primary index is detected to be in this state then JetAttachDatabase will always fail with + /// JET_err.PrimaryIndexCorrupted. + /// If any secondary indexes are detected to be in this state then there are two possible outcomes. + /// If AttachDatabaseGrbit.DeleteCorruptIndexes was passed to JetAttachDatabase then these indexes + /// will be deleted and JET_wrnCorruptIndexDeleted will be returned from JetAttachDatabase. These + /// indexes will need to be recreated by your application. If AttachDatabaseGrbit.DeleteCorruptIndexes + /// was not passed to JetAttachDatabase then the call will fail with JET_errSecondaryIndexCorrupted. + /// + EnableIndexChecking = 45, + + /// + /// This parameter can be used to control which event log the database engine uses for its event log + /// messages. By default, all event log messages will go to the Application event log. If the registry + /// key name for another event log is configured then the event log messages will go there instead. + /// + EventSourceKey = 49, + + /// + /// When this parameter is true, informational event log messages that would ordinarily be generated by + /// the database engine will be suppressed. + /// + NoInformationEvent = 50, + + /// + /// Configures the detail level of eventlog messages that are emitted + /// to the eventlog by the database engine. Higher numbers will result + /// in more detailed eventlog messages. + /// + EventLoggingLevel = 51, + + /// + /// Delete the log files that are not matching (generation wise) during soft recovery. + /// + DeleteOutOfRangeLogs = 52, + + /// + /// + /// After Windows 7, it was discovered that JET_paramEnableIndexCleanup had some implementation limitations, reducing its effectiveness. + /// Rather than update it to work with locale names, the functionality is removed altogether. + /// + /// + /// Unfortunately JET_paramEnableIndexCleanup can not be ignored altogether. JET_paramEnableIndexChecking defaults to false, so if + /// JET_paramEnableIndexCleanup were to be removed entirely, then by default there were would be no checks for NLS changes! + /// + /// + /// The current behavious (when enabled) is to track the language sort versions for the indices, and when the sort version for that + /// particular locale changes, the engine knows which indices are now invalid. For example, if the sort version for only "de-de" changes, + /// then the "de-de" indices are invalid, but the "en-us" indices will be fine. + /// + /// + /// Post-Windows 8: + /// JET_paramEnableIndexChecking accepts JET_INDEXCHECKING (which is an enum). The values of '0' and '1' have the same meaning as before, + /// but '2' is JET_IndexCheckingDeferToOpenTable, which means that the NLS up-to-date-ness is NOT checked when the database is attached. + /// It is deferred to JetOpenTable(), which may now fail with JET_errPrimaryIndexCorrupted or JET_errSecondaryIndexCorrupted (which + /// are NOT actual corruptions, but instead reflect an NLS sort change). + /// + /// + /// IN SUMMARY: + /// New code should explicitly set both IndexChecking and IndexCleanup to the same value. + /// + /// + EnableIndexCleanup = 54, + + /// + /// This parameter configures the minimum size of the database page cache. The size is in database pages. + /// + CacheSizeMin = 60, + + /// + /// This parameter represents a threshold relative to that controls + /// the discretionary use of version pages by the database engine. If the size of the version store exceeds + /// this threshold then any information that is only used for optional background tasks, such as reclaiming + /// deleted space in the database, is instead sacrificed to preserve room for transactional information. + /// + PreferredVerPages = 63, + + /// + /// This parameter configures the page size for the database. The page + /// size is the smallest unit of space allocation possible for a database + /// file. The database page size is also very important because it sets + /// the upper limit on the size of an individual record in the database. + /// + /// + /// Only one database page size is supported per process at this time. + /// This means that if you are in a single process that contains different + /// applications that use the database engine then they must all agree on + /// a database page size. + /// + DatabasePageSize = 64, + + /// + /// This parameter can be used to convert a JET_ERR into a string. + /// This should only be used with JetGetSystemParameter. + /// + ErrorToString = 70, + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + /// + /// Configures the engine with a delegate. + /// This callback may be called for the following reasons: + /// , + /// or . See + /// for more information. This parameter cannot currently be retrieved. + /// + RuntimeCallback = 73, +#endif + + /// + /// This parameter controls the outcome of JetInit when the database + /// engine is configured to start using transaction log files on disk + /// that are of a different size than what is configured. Normally, + /// will successfully recover the databases + /// but will fail with + /// to indicate that the log file size is misconfigured. However, when + /// this parameter is set to true then the database engine will silently + /// delete all the old log files, start a new set of transaction log files + /// using the configured log file size. This parameter is useful when the + /// application wishes to transparently change its transaction log file + /// size yet still work transparently in upgrade and restore scenarios. + /// + CleanupMismatchedLogFiles = 77, + + /// + /// This parameter controls what happens when an exception is thrown by the + /// database engine or code that is called by the database engine. When set + /// to JET_ExceptionMsgBox, any exception will be thrown to the Windows unhandled + /// exception filter. This will result in the exception being handled as an + /// application failure. The intent is to prevent application code from erroneously + /// trying to catch and ignore an exception generated by the database engine. + /// This cannot be allowed because database corruption could occur. If the application + /// wishes to properly handle these exceptions then the protection can be disabled + /// by setting this parameter to JET_ExceptionNone. + /// + ExceptionAction = 98, + + /// + /// When this parameter is set to true then any folder that is missing in a file system path in use by + /// the database engine will be silently created. Otherwise, the operation that uses the missing file system + /// path will fail with JET_err.InvalidPath. + /// + CreatePathIfNotExist = 100, + + /// + /// When this parameter is true then only one database is allowed to + /// be opened using JetOpenDatabase by a given session at one time. + /// The temporary database is excluded from this restriction. + /// + OneDatabasePerSession = 102, + + /// + /// This parameter controls the maximum number of instances that can be created in a single process. + /// + MaxInstances = 104, + + /// + /// This parameter controls the number of background cleanup work items that + /// can be queued to the database engine thread pool at any one time. + /// + VersionStoreTaskQueueMax = 105, + + /// + /// This parameter controls whether perfmon counters should be enabled or not. + /// By default, perfmon counters are enabled, but there is memory overhead for enabling + /// them. + /// + DisablePerfmon = 107, + + // If you can not find the parameter you are expecting here, then perhaps it is + // in a later version of the API, in VistaParam, Windows7Param, etc. + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/jet_pfndurablecommitcallback.cs b/WelsonJS.Toolkit/EsentInterop/jet_pfndurablecommitcallback.cs new file mode 100644 index 0000000..39d9505 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/jet_pfndurablecommitcallback.cs @@ -0,0 +1,37 @@ +// -------------------------------------------------------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +// +// Callback for JET_param JET_paramEmitLogDataCallback. +// +// -------------------------------------------------------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop.Windows8 +{ + using System; + + /// + /// Callback for JET_paramDurableCommitCallback. + /// + /// Instance to use. + /// Commit-id that has just been flushed. + /// Reserved currently. + /// An error code. + public delegate JET_err JET_PFNDURABLECOMMITCALLBACK( + JET_INSTANCE instance, + JET_COMMIT_ID pCommitIdSeen, + DurableCommitCallbackGrbit grbit); + + /// + /// Callback for JET_paramDurableCommitCallback. + /// + /// Instance to use. + /// Commit-id that has just been flushed. + /// Reserved currently. + /// An error code. + internal delegate JET_err NATIVE_JET_PFNDURABLECOMMITCALLBACK( + IntPtr instance, + ref NATIVE_COMMIT_ID pCommitIdSeen, + uint grbit); +} diff --git a/WelsonJS.Toolkit/EsentInterop/jet_pfnrealloc.cs b/WelsonJS.Toolkit/EsentInterop/jet_pfnrealloc.cs new file mode 100644 index 0000000..7ecc78d --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/jet_pfnrealloc.cs @@ -0,0 +1,28 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + + /// + /// Callback used by JetEnumerateColumns to allocate memory for its output buffers. + /// + /// Context given to JetEnumerateColumns. + /// + /// If non-zero, a pointer to a memory block previously allocated by this callback. + /// + /// + /// The new size of the memory block (in bytes). If this is 0 and a memory block is + /// specified, that memory block will be freed. + /// + /// + /// A pointer to newly allocated memory. If memory could not be allocated then + /// should be returned. + /// + [CLSCompliant(false)] + public delegate IntPtr JET_PFNREALLOC(IntPtr context, IntPtr memory, uint requestedSize); +} diff --git a/WelsonJS.Toolkit/EsentInterop/jet_pfnstatus.cs b/WelsonJS.Toolkit/EsentInterop/jet_pfnstatus.cs new file mode 100644 index 0000000..d2c72e2 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/jet_pfnstatus.cs @@ -0,0 +1,190 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Diagnostics; + using System.Globalization; + using System.Reflection; + using System.Runtime.CompilerServices; + using System.Threading; + + /// + /// Receives information about the progress of long-running operations, + /// such as defragmentation, backup, or restore operations. During such + /// operations, the database engine calls this callback function to give + /// an update on the progress of the operation. + /// + /// + /// The session with which the long running operation was called. + /// + /// The type of operation. + /// The status of the operation. + /// Optional data. May be a . + /// An error code. + public delegate JET_err JET_PFNSTATUS(JET_SESID sesid, JET_SNP snp, JET_SNT snt, object data); + + /// + /// Receives information about the progress of long-running operations, + /// such as defragmentation, backup, or restore operations. During such + /// operations, the database engine calls this callback function to give + /// an update on the progress of the operation. + /// + /// + /// This is the internal version of the callback. The final parameter is + /// a void* pointer, which may point to a NATIVE_SNPROG. + /// + /// + /// The session with which the long running operation was called. + /// + /// The type of operation. + /// The status of the operation. + /// Optional . + /// An error code. + internal delegate JET_err NATIVE_PFNSTATUS(IntPtr nativeSesid, uint snp, uint snt, IntPtr snprog); + + /// + /// Wraps a NATIVE_PFNSTATUS callback around a JET_PFNSTATUS. This is + /// used to convert the snprog argument to a managed snprog. + /// + internal sealed class StatusCallbackWrapper + { + /// + /// API call tracing. + /// + private static readonly TraceSwitch TraceSwitch = new TraceSwitch("ESENT StatusCallbackWrapper", "Wrapper around unmanaged ESENT status callback"); + + /// + /// The wrapped status callback. + /// + private readonly JET_PFNSTATUS wrappedCallback; + + /// + /// The native version of the callback. This will be a closure (because we are wrapping + /// a non-static method) so keep track of it here to make sure it isn't garbage collected. + /// + private readonly NATIVE_PFNSTATUS nativeCallback; + +#if !MANAGEDESENT_ON_WSA + /// + /// Initializes static members of the class. + /// + static StatusCallbackWrapper() + { + // We don't want a JIT failure when trying to execute the callback + // because that would throw an exception through ESENT, corrupting it. + // It is fine for the wrapped callback to fail because CallbackImpl + // will catch the exception and deal with it. + RuntimeHelpers.PrepareMethod(typeof(StatusCallbackWrapper).GetMethod( + "CallbackImpl", + BindingFlags.NonPublic | BindingFlags.Instance).MethodHandle); + } +#endif + + /// + /// Initializes a new instance of the StatusCallbackWrapper class. + /// + /// + /// The managed callback to use. + /// + public StatusCallbackWrapper(JET_PFNSTATUS wrappedCallback) + { + this.wrappedCallback = wrappedCallback; + this.nativeCallback = wrappedCallback != null ? this.CallbackImpl : (NATIVE_PFNSTATUS)null; + } + + /// + /// Gets a NATIVE_PFNSTATUS callback that wraps the managed callback. + /// + public NATIVE_PFNSTATUS NativeCallback + { + get + { + return this.nativeCallback; + } + } + + /// + /// Gets or sets the saved exception. If the callback throws an exception + /// it is saved here and should be rethrown when the API call finishes. + /// + private Exception SavedException { get; set; } + + /// + /// Gets or sets a value indicating whether the thread was aborted during + /// the callback. + /// + private bool ThreadWasAborted { get; set; } + + /// + /// If an exception was generated during a callback throw it. + /// + public void ThrowSavedException() + { +#if !MANAGEDESENT_ON_WSA // Thread model has changed in Windows store apps. + if (this.ThreadWasAborted) + { + Thread.CurrentThread.Abort(); + } +#endif + + if (null != this.SavedException) + { + throw this.SavedException; + } + } + + /// + /// Callback function for native code. We don't want to throw an exception through + /// unmanaged ESENT because that will corrupt ESENT's internal state. Instead we + /// catch all exceptions and return an error instead. We use a CER to make catching + /// the exceptions as reliable as possible. + /// + /// + /// The session with which the long running operation was called. + /// + /// The type of operation. + /// The status of the operation. + /// Optional . + /// An error code. + private JET_err CallbackImpl(IntPtr nativeSesid, uint nativeSnp, uint nativeSnt, IntPtr nativeData) + { + RuntimeHelpers.PrepareConstrainedRegions(); + try + { + var sesid = new JET_SESID { Value = nativeSesid }; + JET_SNP snp = (JET_SNP)nativeSnp; + JET_SNT snt = (JET_SNT)nativeSnt; + object data = CallbackDataConverter.GetManagedData(nativeData, snp, snt); + return this.wrappedCallback(sesid, snp, snt, data); + } +#if !MANAGEDESENT_ON_WSA // Thread model has changed in windows store apps. + catch (ThreadAbortException) + { + Trace.WriteLineIf(TraceSwitch.TraceWarning, "Caught ThreadAbortException"); + + // Stop the thread abort and let the unmanaged ESENT code finish. + // ThrowSavedException will call Thread.Abort() again. + this.ThreadWasAborted = true; + LibraryHelpers.ThreadResetAbort(); + return JET_err.CallbackFailed; + } +#endif + catch (Exception ex) + { + Trace.WriteLineIf( + TraceSwitch.TraceWarning, + string.Format(CultureInfo.InvariantCulture, "Caught Exception {0}", ex)); + this.SavedException = ex; + return JET_err.CallbackFailed; + } + + // What happens if the thread is aborted here, outside of the CER? + // We probably throw the exception through ESENT, which isn't good. + } + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/jet_prep.cs b/WelsonJS.Toolkit/EsentInterop/jet_prep.cs new file mode 100644 index 0000000..1ac6e8c --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/jet_prep.cs @@ -0,0 +1,60 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + /// + /// Update types for JetPrepareUpdate. + /// + public enum JET_prep + { + /// + /// This flag causes the cursor to prepare for an insert of a new record. + /// All the data is initialized to the default state for the record. + /// If the table has an auto-increment column, then a new value is + /// assigned to this record regardless of whether the update ultimately + /// succeeds, fails or is cancelled. + /// + Insert = 0, + + /// + /// This flag causes the cursor to prepare for a replace of the current + /// record. If the table has a version column, then the version column + /// is set to the next value in its sequence. If this update does not + /// complete, then the version value in the record will be unaffected. + /// An update lock is taken on the record to prevent other sessions + /// from updating this record before this session completes. + /// + Replace = 2, + + /// + /// This flag causes JetPrepareUpdate to cancel the update for this cursor. + /// + Cancel = 3, + + /// + /// This flag is similar to JET_prepReplace, but no lock is taken to prevent + /// other sessions from updating this record. Instead, this session may receive + /// JET_errWriteConflict when it calls JetUpdate to complete the update. + /// + ReplaceNoLock = 4, + + /// + /// This flag causes the cursor to prepare for an insert of a copy of the + /// existing record. There must be a current record if this option is used. + /// The initial state of the new record is copied from the current record. + /// Long values that are stored off-record are virtually copied. + /// + InsertCopy = 5, + + /// + /// This flag causes the cursor to prepare for an insert of the same record, + /// and a delete or the original record. It is used in cases in which the + /// primary key has changed. + /// + InsertCopyDeleteOriginal = 7, + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/jet_recordlist.cs b/WelsonJS.Toolkit/EsentInterop/jet_recordlist.cs new file mode 100644 index 0000000..424e9d4 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/jet_recordlist.cs @@ -0,0 +1,104 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Diagnostics.CodeAnalysis; + using System.Globalization; + using System.Runtime.InteropServices; + + /// + /// The native version of the JET_RECORDLIST structure. + /// + [StructLayout(LayoutKind.Sequential)] + [SuppressMessage("Microsoft.StyleCop.CSharp.NamingRules", + "SA1305:FieldNamesMustNotUseHungarianNotation", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1307:AccessibleFieldsMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + internal struct NATIVE_RECORDLIST + { + /// + /// Size of the structure. + /// + public uint cbStruct; + + /// + /// Temporary table containing the bookmarks. + /// + public IntPtr tableid; + + /// + /// Number of records in the table. + /// + public uint cRecords; + + /// + /// Column id of the column containing the record bookmarks. + /// + public uint columnidBookmark; + } + + /// + /// Information about a temporary table containing information + /// about all indexes for a given table. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1300:ElementMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + public class JET_RECORDLIST + { + /// + /// Gets tableid of the temporary table. This should be closed + /// when the table is no longer needed. + /// + public JET_TABLEID tableid { get; internal set; } + + /// + /// Gets the number of records in the temporary table. + /// + public int cRecords { get; internal set; } + + /// + /// Gets the columnid of the column in the temporary table which + /// stores the bookmark of the record. + /// The column is of type JET_coltyp.Text. + /// + public JET_COLUMNID columnidBookmark { get; internal set; } + + /// + /// Returns a that represents the current . + /// + /// + /// A that represents the current . + /// + public override string ToString() + { + return string.Format( + CultureInfo.InvariantCulture, + "JET_RECORDLIST(0x{0:x},{1} records)", + this.tableid, + this.cRecords); + } + + /// + /// Sets the fields of the object from a native JET_RECORDLIST struct. + /// + /// + /// The native recordlist to set the values from. + /// + internal void SetFromNativeRecordlist(NATIVE_RECORDLIST value) + { + this.tableid = new JET_TABLEID { Value = value.tableid }; + this.cRecords = checked((int)value.cRecords); + this.columnidBookmark = new JET_COLUMNID { Value = value.columnidBookmark }; + } + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/jet_recpos.cs b/WelsonJS.Toolkit/EsentInterop/jet_recpos.cs new file mode 100644 index 0000000..f8949fe --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/jet_recpos.cs @@ -0,0 +1,152 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Diagnostics; + using System.Diagnostics.CodeAnalysis; + using System.Globalization; + using System.Runtime.InteropServices; + + /// + /// The native version of the JET_RETINFO structure. + /// + [StructLayout(LayoutKind.Sequential)] + [SuppressMessage("Microsoft.StyleCop.CSharp.NamingRules", + "SA1305:FieldNamesMustNotUseHungarianNotation", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1307:AccessibleFieldsMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + internal struct NATIVE_RECPOS + { + /// + /// Size of NATIVE_RECPOS structures. + /// + public static readonly int Size = Marshal.SizeOf(typeof(NATIVE_RECPOS)); + + /// + /// Size of this structure. + /// + public uint cbStruct; + + /// + /// Approximate number of index entries less than the key. + /// + public uint centriesLT; + + /// + /// Approximate number of entries in the index range. + /// + public uint centriesInRange; + + /// + /// Approximate number of entries in the index. + /// + public uint centriesTotal; + } + + /// + /// Represents a fractional position within an index. This is used by JetGotoPosition + /// and JetGetRecordPosition. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1300:ElementMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + [Serializable] + public sealed class JET_RECPOS : IContentEquatable, IDeepCloneable + { + /// + /// The number of entries before the key. + /// + private long entriesBeforeKey; + + /// + /// Total number of entries. + /// + private long totalEntries; + + /// + /// Gets or sets the approximate number of index entries less than the key. + /// + public long centriesLT + { + [DebuggerStepThrough] + get { return this.entriesBeforeKey; } + set { this.entriesBeforeKey = value; } + } + + /// + /// Gets or sets the approximate number of entries in the index. + /// + public long centriesTotal + { + [DebuggerStepThrough] + get { return this.totalEntries; } + set { this.totalEntries = value; } + } + + /// + /// Returns a deep copy of the object. + /// + /// A deep copy of the object. + public JET_RECPOS DeepClone() + { + return (JET_RECPOS)this.MemberwiseClone(); + } + + /// + /// Generate a string representation of the instance. + /// + /// The structure as a string. + public override string ToString() + { + return string.Format(CultureInfo.InvariantCulture, "JET_RECPOS({0}/{1})", this.entriesBeforeKey, this.totalEntries); + } + + /// + /// Returns a value indicating whether this instance is equal + /// to another instance. + /// + /// An instance to compare with this instance. + /// True if the two instances are equal. + public bool ContentEquals(JET_RECPOS other) + { + if (null == other) + { + return false; + } + + return this.entriesBeforeKey == other.entriesBeforeKey && this.totalEntries == other.totalEntries; + } + + /// + /// Get a NATIVE_RECPOS structure representing the object. + /// + /// A NATIVE_RECPOS whose members match the class. + internal NATIVE_RECPOS GetNativeRecpos() + { + var recpos = new NATIVE_RECPOS(); + recpos.cbStruct = checked((uint)NATIVE_RECPOS.Size); + recpos.centriesLT = checked((uint)this.centriesLT); + recpos.centriesTotal = checked((uint)this.centriesTotal); + return recpos; + } + + /// + /// Sets the fields of the object from a NATIVE_RECPOS structure. + /// + /// The NATIVE_RECPOS which will be used to set the fields. + internal void SetFromNativeRecpos(NATIVE_RECPOS value) + { + this.centriesLT = checked((int)value.centriesLT); + this.centriesTotal = checked((int)value.centriesTotal); + } + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/jet_recsize.cs b/WelsonJS.Toolkit/EsentInterop/jet_recsize.cs new file mode 100644 index 0000000..b587e0a --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/jet_recsize.cs @@ -0,0 +1,595 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK +namespace Microsoft.Isam.Esent.Interop.Vista +{ + using System; + using System.Diagnostics; + using System.Diagnostics.CodeAnalysis; + using System.Runtime.InteropServices; + + using Microsoft.Isam.Esent.Interop.Vista; + + /// + /// Used by to return information about a record's usage + /// requirements in user data space, number of set columns, number of + /// values, and ESENT record structure overhead space. + /// + [StructLayout(LayoutKind.Auto)] + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1300:ElementMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + [Serializable] + public struct JET_RECSIZE : IEquatable + { + /// + /// User data in the record. + /// + private long userData; + + /// + /// User data associated with the record, but in the LV tree. + /// + private long userLongValueData; + + /// + /// Record overhead, including key size. + /// + private long overhead; + + /// + /// Overhead of storing the long-value data. + /// + private long longValueOverhead; + + /// + /// Number of fixed and variable columns. + /// + private long numNonTaggedColumns; + + /// + /// Number of tagged columns in the record. + /// + private long numTaggedColumns; + + /// + /// Number of extrinsic (separated) long values. + /// + private long numLongValues; + + /// + /// Number of multi-values (itag > 1) in the record. + /// + private long numMultiValues; + + /// + /// Number of compressed columns in the record. + /// + private long numCompressedColumns; + + /// + /// Size of user data after being compressed. + /// + private long userDataAfterCompression; + + /// + /// Size of the long value data after compression. + /// + private long userLongValueDataCompressed; + + /// + /// Gets the user data set in the record. + /// + public long cbData + { + [DebuggerStepThrough] + get { return this.userData; } + internal set { this.userData = value; } + } + + /// + /// Gets the user data set in the record, but stored in the long-value tree. + /// + public long cbLongValueData + { + [DebuggerStepThrough] + get { return this.userLongValueData; } + internal set { this.userLongValueData = value; } + } + + /// + /// Gets the overhead of the ESENT record structure for this record. + /// This includes the record's key size. + /// + public long cbOverhead + { + [DebuggerStepThrough] + get { return this.overhead; } + internal set { this.overhead = value; } + } + + /// + /// Gets the overhead of the long-value data. + /// + public long cbLongValueOverhead + { + [DebuggerStepThrough] + get { return this.longValueOverhead; } + internal set { this.longValueOverhead = value; } + } + + /// + /// Gets the total number of fixed and variable columns set in this record. + /// + public long cNonTaggedColumns + { + [DebuggerStepThrough] + get { return this.numNonTaggedColumns; } + internal set { this.numNonTaggedColumns = value; } + } + + /// + /// Gets the total number of tagged columns set in this record. + /// + public long cTaggedColumns + { + [DebuggerStepThrough] + get { return this.numTaggedColumns; } + internal set { this.numTaggedColumns = value; } + } + + /// + /// Gets the total number of long values stored in the long-value tree + /// for this record. This does not include intrinsic long values. + /// + public long cLongValues + { + [DebuggerStepThrough] + get { return this.numLongValues; } + internal set { this.numLongValues = value; } + } + + /// + /// Gets the accumulation of the total number of values beyond the first + /// for all columns in the record. + /// + public long cMultiValues + { + [DebuggerStepThrough] + get { return this.numMultiValues; } + internal set { this.numMultiValues = value; } + } + + /// + /// Gets the total number of columns in the record which are compressed. + /// + public long cCompressedColumns + { + [DebuggerStepThrough] + get { return this.numCompressedColumns; } + internal set { this.numCompressedColumns = value; } + } + + /// + /// Gets the compressed size of user data in record. This is the same + /// as if no intrinsic long-values are compressed). + /// + public long cbDataCompressed + { + [DebuggerStepThrough] + get { return this.userDataAfterCompression; } + internal set { this.userDataAfterCompression = value; } + } + + /// + /// Gets the compressed size of user data in the long-value tree. This is + /// the same as if no separated long values + /// are compressed. + /// + public long cbLongValueDataCompressed + { + [DebuggerStepThrough] + get { return this.userLongValueDataCompressed; } + internal set { this.userLongValueDataCompressed = value; } + } + + /// + /// Add the sizes in two JET_RECSIZE structures. + /// + /// The first JET_RECSIZE. + /// The second JET_RECSIZE. + /// A JET_RECSIZE containing the result of adding the sizes in s1 and s2. + public static JET_RECSIZE Add(JET_RECSIZE s1, JET_RECSIZE s2) + { + checked + { + return new JET_RECSIZE + { + cbData = s1.cbData + s2.cbData, + cbDataCompressed = s1.cbDataCompressed + s2.cbDataCompressed, + cbLongValueData = s1.cbLongValueData + s2.cbLongValueData, + cbLongValueDataCompressed = s1.cbLongValueDataCompressed + s2.cbLongValueDataCompressed, + cbLongValueOverhead = s1.cbLongValueOverhead + s2.cbLongValueOverhead, + cbOverhead = s1.cbOverhead + s2.cbOverhead, + cCompressedColumns = s1.cCompressedColumns + s2.cCompressedColumns, + cLongValues = s1.cLongValues + s2.cLongValues, + cMultiValues = s1.cMultiValues + s2.cMultiValues, + cNonTaggedColumns = s1.cNonTaggedColumns + s2.cNonTaggedColumns, + cTaggedColumns = s1.cTaggedColumns + s2.cTaggedColumns, + }; + } + } + + /// + /// Add the sizes in two JET_RECSIZE structures. + /// + /// The first JET_RECSIZE. + /// The second JET_RECSIZE. + /// A JET_RECSIZE containing the result of adding the sizes in left and right. + public static JET_RECSIZE operator +(JET_RECSIZE left, JET_RECSIZE right) + { + return JET_RECSIZE.Add(left, right); + } + + /// + /// Calculate the difference in sizes between two JET_RECSIZE structures. + /// + /// The first JET_RECSIZE. + /// The second JET_RECSIZE. + /// A JET_RECSIZE containing the difference in sizes between s1 and s2. + public static JET_RECSIZE Subtract(JET_RECSIZE s1, JET_RECSIZE s2) + { + checked + { + return new JET_RECSIZE + { + cbData = s1.cbData - s2.cbData, + cbDataCompressed = s1.cbDataCompressed - s2.cbDataCompressed, + cbLongValueData = s1.cbLongValueData - s2.cbLongValueData, + cbLongValueDataCompressed = s1.cbLongValueDataCompressed - s2.cbLongValueDataCompressed, + cbLongValueOverhead = s1.cbLongValueOverhead - s2.cbLongValueOverhead, + cbOverhead = s1.cbOverhead - s2.cbOverhead, + cCompressedColumns = s1.cCompressedColumns - s2.cCompressedColumns, + cLongValues = s1.cLongValues - s2.cLongValues, + cMultiValues = s1.cMultiValues - s2.cMultiValues, + cNonTaggedColumns = s1.cNonTaggedColumns - s2.cNonTaggedColumns, + cTaggedColumns = s1.cTaggedColumns - s2.cTaggedColumns, + }; + } + } + + /// + /// Calculate the difference in sizes between two JET_RECSIZE structures. + /// + /// The first JET_RECSIZE. + /// The second JET_RECSIZE. + /// A JET_RECSIZE containing the difference in sizes between left and right. + public static JET_RECSIZE operator -(JET_RECSIZE left, JET_RECSIZE right) + { + return JET_RECSIZE.Subtract(left, right); + } + + /// + /// Determines whether two specified instances of JET_RECSIZE + /// are equal. + /// + /// The first instance to compare. + /// The second instance to compare. + /// True if the two instances are equal. + public static bool operator ==(JET_RECSIZE lhs, JET_RECSIZE rhs) + { + return lhs.Equals(rhs); + } + + /// + /// Determines whether two specified instances of JET_RECSIZE + /// are not equal. + /// + /// The first instance to compare. + /// The second instance to compare. + /// True if the two instances are not equal. + public static bool operator !=(JET_RECSIZE lhs, JET_RECSIZE rhs) + { + return !(lhs == rhs); + } + + /// + /// Returns a value indicating whether this instance is equal + /// to another instance. + /// + /// An object to compare with this instance. + /// True if the two instances are equal. + public override bool Equals(object obj) + { + if (obj == null || this.GetType() != obj.GetType()) + { + return false; + } + + return this.Equals((JET_RECSIZE)obj); + } + + /// + /// Returns the hash code for this instance. + /// + /// The hash code for this instance. + public override int GetHashCode() + { + // Put the data count members first so they aren't + // shifted as much. Column counts cannot get as high + // so we don't worry about losing fidelity. + long hash = this.cbData + ^ this.cbDataCompressed << 1 + ^ this.cbLongValueData << 2 + ^ this.cbDataCompressed << 3 + ^ this.cbLongValueDataCompressed << 4 + ^ this.cbOverhead << 5 + ^ this.cbLongValueOverhead << 6 + ^ this.cNonTaggedColumns << 7 + ^ this.cTaggedColumns << 8 + ^ this.cLongValues << 9 + ^ this.cMultiValues << 10 + ^ this.cCompressedColumns << 11; + + return (int)(hash & 0xFFFFFFFF) ^ (int)(hash >> 32); + } + + /// + /// Returns a value indicating whether this instance is equal + /// to another instance. + /// + /// An object to compare with this instance. + /// True if the two instances are equal. + public bool Equals(JET_RECSIZE other) + { + return this.cbData == other.cbData + && this.cbLongValueData == other.cbLongValueData + && this.cbOverhead == other.cbOverhead + && this.cbLongValueOverhead == other.cbLongValueOverhead + && this.cNonTaggedColumns == other.cNonTaggedColumns + && this.cTaggedColumns == other.cTaggedColumns + && this.cLongValues == other.cLongValues + && this.cMultiValues == other.cMultiValues + && this.cCompressedColumns == other.cCompressedColumns + && this.cbDataCompressed == other.cbDataCompressed + && this.cbLongValueDataCompressed == other.cbLongValueDataCompressed; + } + + /// + /// Sets the fields of the object from a NATIVE_RECSIZE struct. + /// + /// + /// The native recsize to set the values from. + /// + internal void SetFromNativeRecsize(NATIVE_RECSIZE value) + { + // This is used on versions of ESENT that don't support JetGetRecordSize2. + // That means compression isn't supported so we can default the compression + // members to 'non compressed' values. + checked + { + this.cbData = (long)value.cbData; + this.cbDataCompressed = (long)value.cbData; + this.cbLongValueData = (long)value.cbLongValueData; + this.cbLongValueDataCompressed = (long)value.cbLongValueData; + this.cbLongValueOverhead = (long)value.cbLongValueOverhead; + this.cbOverhead = (long)value.cbOverhead; + this.cCompressedColumns = 0; + this.cLongValues = (long)value.cLongValues; + this.cMultiValues = (long)value.cMultiValues; + this.cNonTaggedColumns = (long)value.cNonTaggedColumns; + this.cTaggedColumns = (long)value.cTaggedColumns; + } + } + + /// + /// Sets the fields of the object from a NATIVE_RECSIZE2 struct. + /// + /// + /// The native recsize to set the values from. + /// + internal void SetFromNativeRecsize(NATIVE_RECSIZE2 value) + { + checked + { + this.cbData = (long)value.cbData; + this.cbDataCompressed = (long)value.cbDataCompressed; + this.cbLongValueData = (long)value.cbLongValueData; + this.cbLongValueDataCompressed = (long)value.cbLongValueDataCompressed; + this.cbLongValueOverhead = (long)value.cbLongValueOverhead; + this.cbOverhead = (long)value.cbOverhead; + this.cCompressedColumns = (long)value.cCompressedColumns; + this.cLongValues = (long)value.cLongValues; + this.cMultiValues = (long)value.cMultiValues; + this.cNonTaggedColumns = (long)value.cNonTaggedColumns; + this.cTaggedColumns = (long)value.cTaggedColumns; + } + } + + /// + /// Gets a NATIVE_RECSIZE containing the values in this object. + /// + /// + /// A NATIVE_RECSIZE initialized with the values in the object. + /// + internal NATIVE_RECSIZE GetNativeRecsize() + { + unchecked + { + return new NATIVE_RECSIZE + { + cbData = (ulong)this.cbData, + cbLongValueData = (ulong)this.cbLongValueData, + cbLongValueOverhead = (ulong)this.cbLongValueOverhead, + cbOverhead = (ulong)this.cbOverhead, + cLongValues = (ulong)this.cLongValues, + cMultiValues = (ulong)this.cMultiValues, + cNonTaggedColumns = (ulong)this.cNonTaggedColumns, + cTaggedColumns = (ulong)this.cTaggedColumns, + }; + } + } + + /// + /// Gets a NATIVE_RECSIZE2 containing the values in this object. + /// + /// + /// A NATIVE_RECSIZE2 initialized with the values in the object. + /// + internal NATIVE_RECSIZE2 GetNativeRecsize2() + { + unchecked + { + return new NATIVE_RECSIZE2 + { + cbData = (ulong)this.cbData, + cbDataCompressed = (ulong)this.cbDataCompressed, + cbLongValueData = (ulong)this.cbLongValueData, + cbLongValueDataCompressed = (ulong)this.cbLongValueDataCompressed, + cbLongValueOverhead = (ulong)this.cbLongValueOverhead, + cbOverhead = (ulong)this.cbOverhead, + cCompressedColumns = (ulong)this.cCompressedColumns, + cLongValues = (ulong)this.cLongValues, + cMultiValues = (ulong)this.cMultiValues, + cNonTaggedColumns = (ulong)this.cNonTaggedColumns, + cTaggedColumns = (ulong)this.cTaggedColumns, + }; + } + } + } + + /// + /// The native version of the JET_RECSIZE structure. + /// + [StructLayout(LayoutKind.Sequential)] + [SuppressMessage("Microsoft.StyleCop.CSharp.NamingRules", + "SA1305:FieldNamesMustNotUseHungarianNotation", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1307:AccessibleFieldsMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + internal struct NATIVE_RECSIZE + { + /// + /// User data in record. + /// + public ulong cbData; + + /// + /// User data associated with the record but stored in the long-value + /// tree. Does NOT count intrinsic long-values. + /// + public ulong cbLongValueData; + + /// + /// Record overhead. + /// + public ulong cbOverhead; + + /// + /// Overhead of long-value data. Does not count intrinsic long-values. + /// + public ulong cbLongValueOverhead; + + /// + /// Total number of fixed/variable columns. + /// + public ulong cNonTaggedColumns; + + /// + /// Total number of tagged columns. + /// + public ulong cTaggedColumns; + + /// + /// Total number of values stored in the long-value tree for this record. + /// Does NOT count intrinsic long-values. + /// + public ulong cLongValues; + + /// + /// Total number of values beyond the first for each column in the record. + /// + public ulong cMultiValues; + } + + /// + /// The native version of the JET_RECSIZE2 structure. + /// + [StructLayout(LayoutKind.Sequential)] + [SuppressMessage("Microsoft.StyleCop.CSharp.NamingRules", + "SA1305:FieldNamesMustNotUseHungarianNotation", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1307:AccessibleFieldsMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + internal struct NATIVE_RECSIZE2 + { + /// + /// User data in record. + /// + public ulong cbData; + + /// + /// User data associated with the record but stored in the long-value + /// tree. Does NOT count intrinsic long-values. + /// + public ulong cbLongValueData; + + /// + /// Record overhead. + /// + public ulong cbOverhead; + + /// + /// Overhead of long-value data. Does not count intrinsic long-values. + /// + public ulong cbLongValueOverhead; + + /// + /// Total number of fixed/variable columns. + /// + public ulong cNonTaggedColumns; + + /// + /// Total number of tagged columns. + /// + public ulong cTaggedColumns; + + /// + /// Total number of values stored in the long-value tree for this record. + /// Does NOT count intrinsic long-values. + /// + public ulong cLongValues; + + /// + /// Total number of values beyond the first for each column in the record. + /// + public ulong cMultiValues; + + /// + /// Total number of columns which are compressed. + /// + public ulong cCompressedColumns; + + /// + /// Compressed size of user data in record. Same as cbData if no intrinsic + /// long-values are compressed. + /// + public ulong cbDataCompressed; + + /// + /// Compressed size of user data in the long-value tree. Same as + /// cbLongValue data if no separated long values are compressed. + /// + public ulong cbLongValueDataCompressed; + } +} +#endif // !MANAGEDESENT_ON_WSA \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/jet_retinfo.cs b/WelsonJS.Toolkit/EsentInterop/jet_retinfo.cs new file mode 100644 index 0000000..9b7a4c1 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/jet_retinfo.cs @@ -0,0 +1,151 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Diagnostics.CodeAnalysis; + using System.Globalization; + using System.Runtime.InteropServices; + + /// + /// The native version of the JET_RETINFO structure. + /// + [StructLayout(LayoutKind.Sequential)] + [SuppressMessage("Microsoft.StyleCop.CSharp.NamingRules", + "SA1305:FieldNamesMustNotUseHungarianNotation", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1307:AccessibleFieldsMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + internal struct NATIVE_RETINFO + { + /// + /// The size of a NATIVE_RETINFO structure. + /// + public static readonly int Size = Marshal.SizeOf(typeof(NATIVE_RETINFO)); + + /// + /// Size of this structure. + /// + public uint cbStruct; + + /// + /// Offset of the long value to retrieve. + /// + public uint ibLongValue; + + /// + /// Itag sequence to retrieve. + /// + public uint itagSequence; + + /// + /// Returns the columnid of the next tagged column. + /// + public uint columnidNextTagged; + } + + /// + /// Contains optional input and output parameters for JetRetrieveColumn. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1300:ElementMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + public class JET_RETINFO : IContentEquatable, IDeepCloneable + { + /// + /// Gets or sets the offset to the first byte to be retrieved from a column of + /// type , or . + /// + public int ibLongValue { get; set; } + + /// + /// Gets or sets the sequence number of value in a multi-valued column. + /// The array of values is one-based. The first value is + /// sequence 1, not 0. If the record column has only one value then + /// 1 should be passed as the itagSequence. + /// + public int itagSequence { get; set; } + + /// + /// Gets the columnid of the retrieved tagged, multi-valued or + /// sparse, column when all tagged columns are retrieved by passing + /// 0 as the columnid to JetRetrieveColumn. + /// + public JET_COLUMNID columnidNextTagged { get; internal set; } + + /// + /// Returns a that represents the current . + /// + /// + /// A that represents the current . + /// + public override string ToString() + { + return string.Format( + CultureInfo.InvariantCulture, + "JET_RETINFO(ibLongValue={0},itagSequence={1})", + this.ibLongValue, + this.itagSequence); + } + + /// + /// Returns a value indicating whether this instance is equal + /// to another instance. + /// + /// An instance to compare with this instance. + /// True if the two instances are equal. + public bool ContentEquals(JET_RETINFO other) + { + if (null == other) + { + return false; + } + + return this.ibLongValue == other.ibLongValue + && this.itagSequence == other.itagSequence + && this.columnidNextTagged == other.columnidNextTagged; + } + + /// + /// Returns a deep copy of the object. + /// + /// A deep copy of the object. + public JET_RETINFO DeepClone() + { + return (JET_RETINFO)this.MemberwiseClone(); + } + + /// + /// Get a NATIVE_RETINFO structure representing the object. + /// + /// A NATIVE_RETINFO whose members match the class. + internal NATIVE_RETINFO GetNativeRetinfo() + { + var retinfo = new NATIVE_RETINFO(); + retinfo.cbStruct = checked((uint)NATIVE_RETINFO.Size); + retinfo.ibLongValue = checked((uint)this.ibLongValue); + retinfo.itagSequence = checked((uint)this.itagSequence); + return retinfo; + } + + /// + /// Sets the fields of the object from a NATIVE_RETINFO structure. + /// + /// The NATIVE_RETINFO which will be used to set the fields. + internal void SetFromNativeRetinfo(NATIVE_RETINFO value) + { + this.ibLongValue = checked((int)value.ibLongValue); + this.itagSequence = checked((int)value.itagSequence); + + var columnid = new JET_COLUMNID { Value = value.columnidNextTagged }; + this.columnidNextTagged = columnid; + } + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/jet_retrievecolumn.cs b/WelsonJS.Toolkit/EsentInterop/jet_retrievecolumn.cs new file mode 100644 index 0000000..d206482 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/jet_retrievecolumn.cs @@ -0,0 +1,235 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Diagnostics.CodeAnalysis; + using System.Globalization; + using System.Runtime.InteropServices; + + /// + /// The native version of the structure. + /// + [StructLayout(LayoutKind.Sequential)] + [SuppressMessage("Microsoft.StyleCop.CSharp.NamingRules", + "SA1305:FieldNamesMustNotUseHungarianNotation", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1307:AccessibleFieldsMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + internal struct NATIVE_RETRIEVECOLUMN + { + /// + /// The column identifier for the column to retrieve. + /// + public uint columnid; + + /// + /// A pointer to begin storing data that is retrieved from the + /// column value. + /// + public IntPtr pvData; + + /// + /// The size of allocation beginning at pvData, in bytes. The + /// retrieve column operation will not store more data at pvData + /// than cbData. + /// + public uint cbData; + + /// + /// The size, in bytes, of data that is retrieved by a retrieve + /// column operation. + /// + public uint cbActual; + + /// + /// A group of bits that contain the options for column retrieval. + /// + public uint grbit; + + /// + /// The offset to the first byte to be retrieved from a column of + /// type or + /// . + /// + public uint ibLongValue; + + /// + /// The sequence number of the values that are contained in a + /// multi-valued column. If the itagSequence is 0 then the number + /// of instances of a multi-valued column are returned instead of + /// any column data. + /// + public uint itagSequence; + + /// + /// The columnid of the tagged, multi-valued, or sparse column + /// when all tagged columns are retrieved by passing 0 as the + /// columnid. + /// + public uint columnidNextTagged; + + /// + /// Error codes and warnings returned from the retrieval of the column. + /// + public int err; + } + + /// + /// Contains input and output parameters for . + /// Fields in the structure describe what column value to retrieve, how to + /// retrieve it, and where to save results. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1300:ElementMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + public class JET_RETRIEVECOLUMN + { + /// + /// Gets or sets the column identifier for the column to retrieve. + /// + public JET_COLUMNID columnid { get; set; } + + /// + /// Gets or sets the buffer that will store data that is retrieved from the + /// column. + /// + public byte[] pvData { get; set; } + + /// + /// Gets or sets the offset in the buffer that data will be stored in. + /// + public int ibData { get; set; } + + /// + /// Gets or sets the size of the buffer, in bytes. The + /// retrieve column operation will not store more data in pvData + /// than cbData. + /// + public int cbData { get; set; } + + /// + /// Gets the size, in bytes, of data that is retrieved by a retrieve + /// column operation. + /// + public int cbActual { get; private set; } + + /// + /// Gets or sets the options for column retrieval. + /// + public RetrieveColumnGrbit grbit { get; set; } + + /// + /// Gets or sets the offset to the first byte to be retrieved from a column of + /// type or + /// . + /// + public int ibLongValue { get; set; } + + /// + /// Gets or sets the sequence number of the values that are contained in a + /// multi-valued column. If the itagSequence is 0 then the number + /// of instances of a multi-valued column are returned instead of + /// any column data. + /// + public int itagSequence { get; set; } + + /// + /// Gets the columnid of the tagged, multi-valued, or sparse column + /// when all tagged columns are retrieved by passing 0 as the + /// columnid. + /// + public JET_COLUMNID columnidNextTagged { get; private set; } + + /// + /// Gets the warning returned from the retrieval of the column. + /// + public JET_wrn err { get; private set; } + + /// + /// Returns a that represents the current . + /// + /// + /// A that represents the current . + /// + public override string ToString() + { + return string.Format(CultureInfo.InvariantCulture, "JET_RETRIEVECOLUMN(0x{0:x})", this.columnid); + } + + /// + /// Check to see if cbData is negative or greater than cbData. + /// + internal void CheckDataSize() + { + if (this.cbData < 0) + { + throw new ArgumentOutOfRangeException("cbData", this.cbData, "data length cannot be negative"); + } + + if (this.ibData < 0) + { + throw new ArgumentOutOfRangeException("ibData", this.cbData, "data offset cannot be negative"); + } + + if (0 != this.ibData && (null == this.pvData || this.ibData >= this.pvData.Length)) + { + throw new ArgumentOutOfRangeException( + "ibData", + this.ibData, + "cannot be greater than the length of the pvData buffer"); + } + + if ((null == this.pvData && 0 != this.cbData) || (null != this.pvData && this.cbData > (this.pvData.Length - this.ibData))) + { + throw new ArgumentOutOfRangeException( + "cbData", + this.cbData, + "cannot be greater than the length of the pvData buffer"); + } + } + + /// + /// Gets the NATIVE_RETRIEVECOLUMN structure that represents the object. + /// + /// The NATIVE_RETRIEVECOLUMN structure to fill in. + /// + /// This takes a reference because a NATIVE_RETRIEVECOLUMN is quite large (40 bytes) + /// so copying it around can be expensive. + /// + internal void GetNativeRetrievecolumn(ref NATIVE_RETRIEVECOLUMN retrievecolumn) + { + retrievecolumn.columnid = this.columnid.Value; + retrievecolumn.cbData = unchecked((uint)this.cbData); // guaranteed to not be negative + retrievecolumn.grbit = (uint)this.grbit; + retrievecolumn.ibLongValue = checked((uint)this.ibLongValue); + retrievecolumn.itagSequence = checked((uint)this.itagSequence); + } + + /// + /// Update the output members of the class from a NATIVE_RETRIEVECOLUMN + /// structure. This should be done after the columns are retrieved. + /// + /// + /// The structure containing the updated output fields. + /// + /// + /// This takes a reference because a NATIVE_RETRIEVECOLUMN is quite large (40 bytes) + /// so copying it around can be expensive. + /// + internal void UpdateFromNativeRetrievecolumn(ref NATIVE_RETRIEVECOLUMN native) + { + this.cbActual = checked((int)native.cbActual); + this.columnidNextTagged = new JET_COLUMNID { Value = native.columnidNextTagged }; + this.itagSequence = checked((int)native.itagSequence); + this.err = (JET_wrn)native.err; + } + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/jet_rstinfo.cs b/WelsonJS.Toolkit/EsentInterop/jet_rstinfo.cs new file mode 100644 index 0000000..f1b7822 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/jet_rstinfo.cs @@ -0,0 +1,187 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Diagnostics.CodeAnalysis; + using System.Globalization; + using System.Runtime.InteropServices; + + /// + /// The native version of the JET_RSTINFO structure. + /// + [StructLayout(LayoutKind.Sequential)] + [SuppressMessage("Microsoft.StyleCop.CSharp.NamingRules", + "SA1305:FieldNamesMustNotUseHungarianNotation", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1307:AccessibleFieldsMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + internal struct NATIVE_RSTINFO + { + /// + /// The size of a NATIVE_RSTINFO structure. + /// + public static readonly int SizeOfRstinfo = Marshal.SizeOf(typeof(NATIVE_RSTINFO)); + + /// + /// Size of the structure. + /// + public uint cbStruct; + + /// + /// The array of structures. + /// + public unsafe NATIVE_RSTMAP* rgrstmap; + + /// + /// The number of elements in the restore-map array. + /// + public uint crstmap; + + /// + /// The log position at which it stopped. + /// + public JET_LGPOS lgposStop; + + /// + /// The time at which it stopped. + /// + public JET_LOGTIME logtimeStop; + + /// + /// The callback to the status function. + /// + public NATIVE_PFNSTATUS pfnStatus; + } + + /// + /// Contains optional input and output parameters for JetRetrieveColumn. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1300:ElementMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + [Serializable] + public class JET_RSTINFO : IContentEquatable, IDeepCloneable + { + /// + /// Gets or sets the array of structures. + /// + public JET_RSTMAP[] rgrstmap { get; set; } + + /// + /// Gets or sets the number of elements in the restore-map array. + /// + public int crstmap { get; set; } + + /// + /// Gets or sets the log position to stop recovery at. + /// + public JET_LGPOS lgposStop { get; set; } + + /// + /// Gets or sets the time at which it stopped. + /// + public JET_LOGTIME logtimeStop { get; set; } + + /// + /// Gets or sets the callback to Gets or sets the status function. + /// + public JET_PFNSTATUS pfnStatus { get; set; } + + /// + /// Returns a that represents the current . + /// + /// + /// A that represents the current . + /// + public override string ToString() + { + return string.Format( + CultureInfo.InvariantCulture, + "JET_RSTINFO(crstmap={0})", + this.crstmap); + } + + /// + /// Returns a value indicating whether this instance is equal + /// to another instance. + /// + /// An instance to compare with this instance. + /// True if the two instances are equal. + public bool ContentEquals(JET_RSTINFO other) + { + if (null == other) + { + return false; + } + + this.CheckMembersAreValid(); + other.CheckMembersAreValid(); + return this.crstmap == other.crstmap + && this.lgposStop == other.lgposStop + && this.logtimeStop == other.logtimeStop + && this.pfnStatus == other.pfnStatus + && Util.ArrayObjectContentEquals(this.rgrstmap, other.rgrstmap, this.crstmap); + } + + /// + /// Returns a deep copy of the object. + /// + /// A deep copy of the object. + public JET_RSTINFO DeepClone() + { + var result = (JET_RSTINFO)this.MemberwiseClone(); + result.rgrstmap = Util.DeepCloneArray(this.rgrstmap); + return result; + } + + /// + /// Check this object to make sure its parameters are valid. + /// + internal void CheckMembersAreValid() + { + if (this.crstmap < 0) + { + throw new ArgumentOutOfRangeException("crstmap", this.crstmap, "cannot be negative"); + } + + if (null == this.rgrstmap && this.crstmap > 0) + { + throw new ArgumentOutOfRangeException("crstmap", this.crstmap, "must be zero"); + } + + if (null != this.rgrstmap && this.crstmap > this.rgrstmap.Length) + { + throw new ArgumentOutOfRangeException( + "crstmap", + this.crstmap, + "cannot be greater than the length of rgrstmap"); + } + } + + /// + /// Get a native version of this managed structure. + /// + /// A native version of this object. + internal NATIVE_RSTINFO GetNativeRstinfo() + { + this.CheckMembersAreValid(); + var native = new NATIVE_RSTINFO + { + cbStruct = (uint)NATIVE_RSTINFO.SizeOfRstinfo, + crstmap = checked((uint)this.crstmap), + lgposStop = this.lgposStop, + logtimeStop = this.logtimeStop + }; + + return native; + } + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/jet_rstmap.cs b/WelsonJS.Toolkit/EsentInterop/jet_rstmap.cs new file mode 100644 index 0000000..a7b0b61 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/jet_rstmap.cs @@ -0,0 +1,145 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Diagnostics; + using System.Diagnostics.CodeAnalysis; + using System.Globalization; + using System.Runtime.InteropServices; + + /// + /// The native version of the JET_RSTMAP structure. + /// + [StructLayout(LayoutKind.Sequential)] + [SuppressMessage("Microsoft.StyleCop.CSharp.NamingRules", + "SA1305:FieldNamesMustNotUseHungarianNotation", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1307:AccessibleFieldsMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + internal struct NATIVE_RSTMAP + { + /// + /// The old name/path of the database. Can be null if it is unchanged. + /// + public IntPtr szDatabaseName; + + /// + /// The current name/path of the database. Must not be null. + /// + public IntPtr szNewDatabaseName; + + /// + /// Free the string memory. + /// + public void FreeHGlobal() + { + LibraryHelpers.MarshalFreeHGlobal(this.szDatabaseName); + LibraryHelpers.MarshalFreeHGlobal(this.szNewDatabaseName); + } + } + + /// + /// Enables the remapping of database file paths that are stored in the transaction logs during recovery. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1300:ElementMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + [Serializable] + public class JET_RSTMAP : IContentEquatable, IDeepCloneable + { + /// + /// The old name/path of the database. Can be null if it is unchanged. + /// + private string databaseName; + + /// + /// The current name/path of the database. Must not be null. + /// + private string newDatabaseName; + + /// + /// Gets or sets the old name/path of the database. Can be null if it is unchanged. + /// + public string szDatabaseName + { + [DebuggerStepThrough] + get { return this.databaseName; } + set { this.databaseName = value; } + } + + /// + /// Gets or sets the current name/path of the database. Must not be null. + /// + public string szNewDatabaseName + { + [DebuggerStepThrough] + get { return this.newDatabaseName; } + set { this.newDatabaseName = value; } + } + + /// + /// Returns a that represents the current . + /// + /// + /// A that represents the current . + /// + public override string ToString() + { + return string.Format( + CultureInfo.InvariantCulture, + "JET_RSTINFO(szDatabaseName={0},szNewDatabaseName={1})", + this.szDatabaseName, + this.szNewDatabaseName); + } + + /// + /// Returns a value indicating whether this instance is equal + /// to another instance. + /// + /// An instance to compare with this instance. + /// True if the two instances are equal. + public bool ContentEquals(JET_RSTMAP other) + { + if (null == other) + { + return false; + } + + return string.Equals(this.szDatabaseName, other.szDatabaseName, StringComparison.OrdinalIgnoreCase) + && string.Equals(this.szNewDatabaseName, other.szNewDatabaseName, StringComparison.OrdinalIgnoreCase); + } + + /// + /// Returns a deep copy of the object. + /// + /// A deep copy of the object. + public JET_RSTMAP DeepClone() + { + return (JET_RSTMAP)this.MemberwiseClone(); + } + + /// + /// Get a native version of this managed structure. + /// + /// A native version of this object. + internal NATIVE_RSTMAP GetNativeRstmap() + { + return new NATIVE_RSTMAP + { + // Don't pin this memory -- these structures are used by JetInit3, + // which can run for a long time and we don't want to fragment the + // heap. We do have to remember to free the memory though. + szDatabaseName = LibraryHelpers.MarshalStringToHGlobalUni(this.szDatabaseName), + szNewDatabaseName = LibraryHelpers.MarshalStringToHGlobalUni(this.szNewDatabaseName), + }; + } + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/jet_sesparam.cs b/WelsonJS.Toolkit/EsentInterop/jet_sesparam.cs new file mode 100644 index 0000000..1070cd6 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/jet_sesparam.cs @@ -0,0 +1,33 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop.Windows8 +{ + /// + /// ESENT session parameters. + /// + /// + public enum JET_sesparam + { + /// + /// This parameter is not meant to be used. + /// + Base = 4096, + + /// + /// This parameter sets the grbits for commit. It is functionally the same as the + /// system parameter JET_param.CommitDefault when used with an instance and a sesid. + /// Note: JET_param.CommitDefault is not currently exposed in the ESE interop layer. + /// + CommitDefault = 4097, + + /// + /// This parameter sets a user specific commit context that will be placed in the + /// transaction log on commit to level 0. + /// + CommitGenericContext = 4098, + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/jet_setcolumn.cs b/WelsonJS.Toolkit/EsentInterop/jet_setcolumn.cs new file mode 100644 index 0000000..23b69b6 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/jet_setcolumn.cs @@ -0,0 +1,237 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Diagnostics.CodeAnalysis; + using System.Globalization; + using System.Runtime.InteropServices; + + /// + /// The native version of the structure. + /// + [StructLayout(LayoutKind.Sequential)] + [SuppressMessage("Microsoft.StyleCop.CSharp.NamingRules", + "SA1305:FieldNamesMustNotUseHungarianNotation", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1307:AccessibleFieldsMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + internal struct NATIVE_SETCOLUMN + { + /// + /// Columnid to set. + /// + public uint columnid; + + /// + /// Data to set. + /// + public IntPtr pvData; + + /// + /// Size of data to set. + /// + public uint cbData; + + /// + /// SetColumns options. + /// + public uint grbit; + + /// + /// Long-value offset to set. + /// + public uint ibLongValue; + + /// + /// Itag sequence to set. + /// + public uint itagSequence; + + /// + /// Returns the error from setting the column. + /// + public uint err; + } + + /// + /// Contains input and output parameters for . + /// Fields in the structure describe what column value to set, how to set it, + /// and where to get the column set data. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1300:ElementMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + public class JET_SETCOLUMN : IContentEquatable, IDeepCloneable + { + /// + /// Gets or sets the column identifier for a column to set. + /// + public JET_COLUMNID columnid { get; set; } + + /// + /// Gets or sets a pointer to the data to set. + /// + public byte[] pvData { get; set; } + + /// + /// Gets or sets the offset of the data to set. + /// + public int ibData { get; set; } + + /// + /// Gets or sets the size of the data to set. + /// + public int cbData { get; set; } + + /// + /// Gets or sets options for the set column operation. + /// + public SetColumnGrbit grbit { get; set; } + + /// + /// Gets or sets offset to the first byte to be set in a column of type + /// or . + /// + public int ibLongValue { get; set; } + + /// + /// Gets or sets the sequence number of value in a multi-valued column to be set. The array of values is one-based. + /// The first value is sequence 1, not 0 (zero). If the record column has only one value then 1 should be passed + /// as the itagSequence if that value is being replaced. A value of 0 (zero) means to add a new column value instance + /// to the end of the sequence of column values. + /// + public int itagSequence { get; set; } + + /// + /// Gets the error code or warning returned from the set column operation. + /// + public JET_wrn err { get; internal set; } + + /// + /// Returns a that represents the current . + /// + /// + /// A that represents the current . + /// + public override string ToString() + { + return string.Format( + CultureInfo.InvariantCulture, + "JET_SETCOLUMN(0x{0:x},{1},ibLongValue={2},itagSequence={3})", + this.columnid.Value, + Util.DumpBytes(this.pvData, this.ibData, this.cbData), + this.ibLongValue, + this.itagSequence); + } + + /// + /// Returns a value indicating whether this instance is equal + /// to another instance. + /// + /// An instance to compare with this instance. + /// True if the two instances are equal. + public bool ContentEquals(JET_SETCOLUMN other) + { + if (null == other) + { + return false; + } + + this.CheckDataSize(); + other.CheckDataSize(); + return this.columnid == other.columnid + && this.ibData == other.ibData + && this.cbData == other.cbData + && this.grbit == other.grbit + && this.ibLongValue == other.ibLongValue + && this.itagSequence == other.itagSequence + && this.err == other.err + && Util.ArrayEqual(this.pvData, other.pvData, this.ibData, this.cbData); + } + + /// + /// Returns a deep copy of the object. + /// + /// A deep copy of the object. + public JET_SETCOLUMN DeepClone() + { + JET_SETCOLUMN result = (JET_SETCOLUMN)this.MemberwiseClone(); + if (null != this.pvData) + { + result.pvData = new byte[this.pvData.Length]; + Array.Copy(this.pvData, result.pvData, this.cbData); + } + + return result; + } + + /// + /// Check to see if cbData is negative or greater than the length of pvData. + /// Check to see if ibData is negative or greater than the length of pvData. + /// + internal void CheckDataSize() + { + if (this.cbData < 0) + { + throw new ArgumentOutOfRangeException("cbData", "data length cannot be negative"); + } + + if (this.ibData < 0) + { + throw new ArgumentOutOfRangeException("ibData", "data offset cannot be negative"); + } + + if (0 != this.ibData && (null == this.pvData || this.ibData >= this.pvData.Length)) + { + throw new ArgumentOutOfRangeException( + "ibData", + this.ibData, + "cannot be greater than the length of the pvData"); + } + + if ((null == this.pvData && 0 != this.cbData && SetColumnGrbit.SizeLV != (this.grbit & SetColumnGrbit.SizeLV)) + || (null != this.pvData && this.cbData > (this.pvData.Length - this.ibData))) + { + throw new ArgumentOutOfRangeException( + "cbData", + this.cbData, + "cannot be greater than the length of the pvData (unless the SizeLV option is used)"); + } + + if (this.itagSequence < 0) + { + throw new ArgumentOutOfRangeException("itagSequence", this.itagSequence, "cannot be negative"); + } + + if (this.ibLongValue < 0) + { + throw new ArgumentOutOfRangeException("ibLongValue", this.ibLongValue, "cannot be negative"); + } + } + + /// + /// Gets the NATIVE_SETCOLUMN structure that represents the object. + /// + /// A NATIVE_SETCOLUMN structure whose fields match the class. + internal NATIVE_SETCOLUMN GetNativeSetcolumn() + { + var setinfo = new NATIVE_SETCOLUMN + { + columnid = this.columnid.Value, + cbData = checked((uint)this.cbData), + grbit = (uint)this.grbit, + ibLongValue = checked((uint)this.ibLongValue), + itagSequence = checked((uint)this.itagSequence), + }; + return setinfo; + } + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/jet_setinfo.cs b/WelsonJS.Toolkit/EsentInterop/jet_setinfo.cs new file mode 100644 index 0000000..1cd5ef9 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/jet_setinfo.cs @@ -0,0 +1,143 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Diagnostics.CodeAnalysis; + using System.Globalization; + using System.Runtime.InteropServices; + + /// + /// The native version of the JET_SETINFO structure. + /// + [StructLayout(LayoutKind.Sequential)] + [SuppressMessage("Microsoft.StyleCop.CSharp.NamingRules", + "SA1305:FieldNamesMustNotUseHungarianNotation", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1307:AccessibleFieldsMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + internal struct NATIVE_SETINFO + { + /// + /// The size of a NATIVE_SETINFO structure. + /// + public static readonly int Size = Marshal.SizeOf(typeof(NATIVE_SETINFO)); + + /// + /// Size of the structure. + /// + public uint cbStruct; + + /// + /// Offset to the first byte to be set in a column of type JET_coltypLongBinary or JET_coltypLongText. + /// + public uint ibLongValue; + + /// + /// The sequence number of value in a multi-valued column to be set. + /// + public uint itagSequence; + } + + /// + /// Settings for JetSetColumn. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1300:ElementMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + [Serializable] + public class JET_SETINFO : IContentEquatable, IDeepCloneable + { + /// + /// Offset to the first byte to be set in a column of type or . + /// + private int longValueOffset; + + /// + /// The sequence number of value in a multi-valued column to be set. + /// + private int itag; + + /// + /// Gets or sets offset to the first byte to be set in a column of type or . + /// + public int ibLongValue + { + get { return this.longValueOffset; } + set { this.longValueOffset = value; } + } + + /// + /// Gets or sets the sequence number of value in a multi-valued column to be set. The array of values is one-based. + /// The first value is sequence 1, not 0 (zero). If the record column has only one value then 1 should be passed + /// as the itagSequence if that value is being replaced. A value of 0 (zero) means to add a new column value instance + /// to the end of the sequence of column values. + /// + public int itagSequence + { + get { return this.itag; } + set { this.itag = value; } + } + + /// + /// Returns a that represents the current . + /// + /// + /// A that represents the current . + /// + public override string ToString() + { + return string.Format( + CultureInfo.InvariantCulture, + "JET_SETINFO(ibLongValue={0},itagSequence={1})", + this.ibLongValue, + this.itagSequence); + } + + /// + /// Returns a value indicating whether this instance is equal + /// to another instance. + /// + /// An instance to compare with this instance. + /// True if the two instances are equal. + public bool ContentEquals(JET_SETINFO other) + { + if (null == other) + { + return false; + } + + return this.ibLongValue == other.ibLongValue + && this.itagSequence == other.itagSequence; + } + + /// + /// Returns a deep copy of the object. + /// + /// A deep copy of the object. + public JET_SETINFO DeepClone() + { + return (JET_SETINFO)this.MemberwiseClone(); + } + + /// + /// Gets the NATIVE_SETINFO structure that represents the object. + /// + /// A NATIVE_SETINFO structure whose fields match the class. + internal NATIVE_SETINFO GetNativeSetinfo() + { + var setinfo = new NATIVE_SETINFO(); + setinfo.cbStruct = checked((uint)NATIVE_SETINFO.Size); + setinfo.ibLongValue = checked((uint)this.ibLongValue); + setinfo.itagSequence = checked((uint)this.itagSequence); + return setinfo; + } + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/jet_signature.cs b/WelsonJS.Toolkit/EsentInterop/jet_signature.cs new file mode 100644 index 0000000..7c51972 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/jet_signature.cs @@ -0,0 +1,260 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Diagnostics.CodeAnalysis; + using System.Globalization; + using System.Runtime.InteropServices; + + /// + /// The JET_SIGNATURE structure contains information that uniquely + /// identifies a database or logfile sequence. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1304:NonPrivateReadonlyFieldsMustBeginWithUpperCaseLetter", + Justification = "This should match the name of the unmanaged structure.")] + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1305:FieldNamesMustNotUseHungarianNotation", + Justification = "This should match the name of the unmanaged structure.")] + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1307:AccessibleFieldsMustBeginWithUpperCaseLetter", + Justification = "This should match the name of the unmanaged structure.")] + [StructLayout(LayoutKind.Auto)] + [Serializable] + public struct JET_SIGNATURE : IEquatable + { + /// + /// A randomly assigned number. + /// + internal readonly uint ulRandom; + + /// + /// The time that the database or first logfile in the sequence was + /// created. + /// + internal readonly JET_LOGTIME logtimeCreate; + + /// + /// NetBIOS name of the computer. This may be null. + /// + private readonly string szComputerName; + + /// + /// Initializes a new instance of the struct. + /// + /// The serialized representation of a JET_SIGNATURE from ToBytes(). + public JET_SIGNATURE(byte[] bytes) + { + var nativeSignature = new NATIVE_SIGNATURE(); + IntPtr ptr = Marshal.AllocHGlobal(Marshal.SizeOf(nativeSignature)); + Marshal.Copy(bytes, 0, ptr, Marshal.SizeOf(nativeSignature)); + for (int i = bytes.Length; i < Marshal.SizeOf(nativeSignature); i++) + { + Marshal.WriteByte(ptr, i, 0); + } + + nativeSignature = (NATIVE_SIGNATURE)Marshal.PtrToStructure(ptr, nativeSignature.GetType()); + Marshal.FreeHGlobal(ptr); + + this.ulRandom = nativeSignature.ulRandom; + this.logtimeCreate = nativeSignature.logtimeCreate; + this.szComputerName = nativeSignature.szComputerName; + } + + /// + /// Initializes a new instance of the struct. + /// + /// A random number. + /// The time for the creation time. + /// The optional computer name. + internal JET_SIGNATURE(int random, DateTime? time, string computerName) + { + this.ulRandom = unchecked((uint)random); + this.logtimeCreate = time.HasValue ? new JET_LOGTIME(time.Value) : new JET_LOGTIME(); + this.szComputerName = computerName; + } + + /// + /// Initializes a new instance of the struct. + /// + /// A native signature to initialize the members with. + internal JET_SIGNATURE(NATIVE_SIGNATURE native) + { + this.ulRandom = native.ulRandom; + this.logtimeCreate = native.logtimeCreate; + this.szComputerName = native.szComputerName; + } + + /// + /// Determines whether two specified instances of JET_SIGNATURE + /// are equal. + /// + /// The first instance to compare. + /// The second instance to compare. + /// True if the two instances are equal. + public static bool operator ==(JET_SIGNATURE lhs, JET_SIGNATURE rhs) + { + return lhs.Equals(rhs); + } + + /// + /// Determines whether two specified instances of JET_SIGNATURE + /// are not equal. + /// + /// The first instance to compare. + /// The second instance to compare. + /// True if the two instances are not equal. + public static bool operator !=(JET_SIGNATURE lhs, JET_SIGNATURE rhs) + { + return !(lhs == rhs); + } + + /// + /// Generate a string representation of the structure. + /// + /// The structure as a string. + public override string ToString() + { + string convertedDate = string.Empty; + DateTime? createDate = this.logtimeCreate.ToDateTime(); + if (createDate.HasValue) + { + // the standard Round-trip date/time pattern + convertedDate = createDate.Value.ToString("o", CultureInfo.InvariantCulture); + } + + return string.Format( + CultureInfo.InvariantCulture, + "JET_SIGNATURE({0}:{1}:{2})", + this.ulRandom, + convertedDate, + this.szComputerName); + } + + /// + /// Generate the serialized representation of the structure. + /// + /// The structure as a byte array. + public byte[] ToBytes() + { + NATIVE_SIGNATURE nativeSignature = this.GetNativeSignature(); + IntPtr ptr = Marshal.AllocHGlobal(Marshal.SizeOf(nativeSignature)); + Marshal.StructureToPtr(nativeSignature, ptr, false); + byte[] bytes = new byte[Marshal.SizeOf(nativeSignature)]; + Marshal.Copy(ptr, bytes, 0, Marshal.SizeOf(nativeSignature)); + Marshal.FreeHGlobal(ptr); + return bytes; + } + + /// + /// Returns a value indicating whether this instance is equal + /// to another instance. + /// + /// An object to compare with this instance. + /// True if the two instances are equal. + public override bool Equals(object obj) + { + if (obj == null || GetType() != obj.GetType()) + { + return false; + } + + return this.Equals((JET_SIGNATURE)obj); + } + + /// + /// Returns the hash code for this instance. + /// + /// The hash code for this instance. + public override int GetHashCode() + { + return this.ulRandom.GetHashCode() + ^ this.logtimeCreate.GetHashCode() + ^ (null == this.szComputerName + ? -1 + : this.szComputerName.GetHashCode()); + } + + /// + /// Returns a value indicating whether this instance is equal + /// to another instance. + /// + /// An instance to compare with this instance. + /// True if the two instances are equal. + public bool Equals(JET_SIGNATURE other) + { + bool namesAreEqual = (string.IsNullOrEmpty(this.szComputerName) && string.IsNullOrEmpty(other.szComputerName)) + || + (!string.IsNullOrEmpty(this.szComputerName) && !string.IsNullOrEmpty(other.szComputerName) && + this.szComputerName == other.szComputerName); + return namesAreEqual + && this.ulRandom == other.ulRandom + && this.logtimeCreate == other.logtimeCreate; + } + + /// + /// Converts the structure to the native representation. + /// + /// The native representation of the signature. + internal NATIVE_SIGNATURE GetNativeSignature() + { + var native = new NATIVE_SIGNATURE + { + ulRandom = this.ulRandom, + szComputerName = this.szComputerName, + logtimeCreate = this.logtimeCreate, + }; + return native; + } + } + + /// + /// Native (interop) version of the JET_SIGNATURE structure. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1305:FieldNamesMustNotUseHungarianNotation", + Justification = "This should match the name of the unmanaged structure.")] + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1307:AccessibleFieldsMustBeginWithUpperCaseLetter", + Justification = "This should match the name of the unmanaged structure.")] + [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)] + [Serializable] + internal struct NATIVE_SIGNATURE + { + /// + /// Size of the szComputerName array. + /// + public const int ComputerNameSize = 16; // JET_MAX_COMPUTER_NAME_LENGTH + 1 + + /// + /// The size of a NATIVE_SIGNATURE structure. + /// + public static readonly int Size = Marshal.SizeOf(typeof(NATIVE_SIGNATURE)); + + /// + /// A random number. + /// + public uint ulRandom; + + /// + /// Time the database or log sequence was created. + /// + public JET_LOGTIME logtimeCreate; + + /// + /// NetBIOS name of the computer. + /// + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = ComputerNameSize)] + public string szComputerName; + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/jet_snp.cs b/WelsonJS.Toolkit/EsentInterop/jet_snp.cs new file mode 100644 index 0000000..f8888f5 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/jet_snp.cs @@ -0,0 +1,45 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + /// + /// The type of operation that progress is being reported for. + /// + public enum JET_SNP + { + /// + /// Callback is for a repair option. + /// + Repair = 2, + + /// + /// Callback is for database defragmentation. + /// + Compact = 4, + + /// + /// Callback is for a restore options. + /// + Restore = 8, + + /// + /// Callback is for a backup options. + /// + Backup = 9, + + /// + /// Callback is for database zeroing. + /// + Scrub = 11, + + /// + /// Callback is for the process of upgrading the record format of + /// all database pages. + /// + UpgradeRecordFormat = 12, + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/jet_snprog.cs b/WelsonJS.Toolkit/EsentInterop/jet_snprog.cs new file mode 100644 index 0000000..f31c24d --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/jet_snprog.cs @@ -0,0 +1,154 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Diagnostics; + using System.Diagnostics.CodeAnalysis; + using System.Globalization; + using System.Runtime.InteropServices; + + /// + /// The native version of the JET_SNPROG structure. + /// + [StructLayout(LayoutKind.Sequential)] + [SuppressMessage("Microsoft.StyleCop.CSharp.NamingRules", + "SA1305:FieldNamesMustNotUseHungarianNotation", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1307:AccessibleFieldsMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + internal struct NATIVE_SNPROG + { + /// + /// Size of this structure. + /// + public static readonly int Size = Marshal.SizeOf(typeof(NATIVE_SNPROG)); + + /// + /// Size of the structure. + /// + public uint cbStruct; + + /// + /// The number of work units that are already completed during the long + /// running operation. + /// + public uint cunitDone; + + /// + /// The number of work units that need to be completed. This value will + /// always be bigger than or equal to cunitDone. + /// + public uint cunitTotal; + } + + /// + /// Contains information about the progress of a long-running operation. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1300:ElementMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + [Serializable] + public class JET_SNPROG : IEquatable + { + /// + /// Number of units of work that have completed. + /// + private int completedUnits; + + /// + /// Total number of units of work to be done. + /// + private int totalUnits; + + /// + /// Gets the number of work units that are already completed during the long + /// running operation. + /// + public int cunitDone + { + [DebuggerStepThrough] + get { return this.completedUnits; } + internal set { this.completedUnits = value; } + } + + /// + /// Gets the number of work units that need to be completed. This value will + /// always be bigger than or equal to cunitDone. + /// + public int cunitTotal + { + [DebuggerStepThrough] + get { return this.totalUnits; } + internal set { this.totalUnits = value; } + } + + /// + /// Returns a value indicating whether this instance is equal + /// to another instance. + /// + /// An object to compare with this instance. + /// True if the two instances are equal. + public override bool Equals(object obj) + { + if (obj == null || this.GetType() != obj.GetType()) + { + return false; + } + + return this.Equals((JET_SNPROG)obj); + } + + /// + /// Generate a string representation of the instance. + /// + /// The structure as a string. + public override string ToString() + { + return string.Format(CultureInfo.InvariantCulture, "JET_SNPROG({0}/{1})", this.cunitDone, this.cunitTotal); + } + + /// + /// Returns the hash code for this instance. + /// + /// The hash code for this instance. + public override int GetHashCode() + { + return unchecked(this.cunitDone * 31) ^ this.cunitTotal; + } + + /// + /// Returns a value indicating whether this instance is equal + /// to another instance. + /// + /// An instance to compare with this instance. + /// True if the two instances are equal. + public bool Equals(JET_SNPROG other) + { + if (null == other) + { + return false; + } + + return this.cunitDone == other.cunitDone && this.cunitTotal == other.cunitTotal; + } + + /// + /// Set the members of this class from a . + /// + /// The native struct. + internal void SetFromNative(NATIVE_SNPROG native) + { + Debug.Assert(native.cbStruct == NATIVE_SNPROG.Size, "NATIVE_SNPROG is the wrong size"); + this.cunitDone = checked((int)native.cunitDone); + this.cunitTotal = checked((int)native.cunitTotal); + } + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/jet_snt.cs b/WelsonJS.Toolkit/EsentInterop/jet_snt.cs new file mode 100644 index 0000000..37f4c62 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/jet_snt.cs @@ -0,0 +1,40 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + /// + /// Type of progress being reported. + /// + public enum JET_SNT + { + /// + /// Callback for the beginning of an operation. + /// + Begin = 5, + + /// + /// Callback for operation progress. + /// + Progress = 0, + + /// + /// Callback for the completion of an operation. + /// + Complete = 6, + + /// + /// Callback for failure during the operation. + /// + Fail = 3, + + /// + /// RecoveryStep was used for internal reserved functionality + /// prior to Windows 8. Windows 8 and later no longer use RecoveryStep. + /// + RecoveryStep = 8, + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/jet_spacehints.cs b/WelsonJS.Toolkit/EsentInterop/jet_spacehints.cs new file mode 100644 index 0000000..ca7d766 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/jet_spacehints.cs @@ -0,0 +1,268 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Diagnostics; + using System.Diagnostics.CodeAnalysis; + using System.Globalization; + using System.Runtime.InteropServices; + + /// + /// The native version of the JET_SPACEHINTS structure. + /// + [StructLayout(LayoutKind.Sequential)] + [SuppressMessage("Microsoft.StyleCop.CSharp.NamingRules", + "SA1305:FieldNamesMustNotUseHungarianNotation", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1307:AccessibleFieldsMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + internal struct NATIVE_SPACEHINTS + { + /// + /// Size of the structure. + /// + public uint cbStruct; + + /// + /// Density at (append) layout. + /// + public uint ulInitialDensity; + + /// + /// Initial size (in bytes). + /// + public uint cbInitial; + + /// + /// Space hints options. + /// + public uint grbit; + + /// + /// Density to maintain at. + /// + public uint ulMaintDensity; + + /// + /// Percent growth from last growth or initial size (possibly rounded to nearest native JET allocation size). + /// + public uint ulGrowth; + + /// + /// Overrides ulGrowth if too small. + /// + public uint cbMinExtent; + + /// + /// Cap of ulGrowth. + /// + public uint cbMaxExtent; + } + + /// + /// Describes a column in a table of an ESENT database. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1300:ElementMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + [Serializable] + public sealed class JET_SPACEHINTS : IContentEquatable, IDeepCloneable + { + /// + /// Density at (append) layout. + /// + private int initialDensity; + + /// + /// Initial size (in bytes). + /// + private int initialSize; + + /// + /// Space hints options. + /// + private SpaceHintsGrbit options; + + /// + /// Density to maintain at. + /// + private int maintenanceDensity; + + /// + /// Percent growth from last growth or initial size (possibly rounded to nearest native JET allocation size). + /// + private int growthPercent; + + /// + /// Overrides ulGrowth if too small. + /// + private int minimumExtent; + + /// + /// Cap of ulGrowth. + /// + private int maximumExtent; + + /// + /// Gets or sets the density at (append) layout. + /// + public int ulInitialDensity + { + [DebuggerStepThrough] + get { return this.initialDensity; } + set { this.initialDensity = value; } + } + + /// + /// Gets or sets the initial size (in bytes). + /// + public int cbInitial + { + [DebuggerStepThrough] + get { return this.initialSize; } + set { this.initialSize = value; } + } + + /// + /// Gets or sets the space hints options. + /// + public SpaceHintsGrbit grbit + { + [DebuggerStepThrough] + get { return this.options; } + set { this.options = value; } + } + + /// + /// Gets or sets the density at which to maintain. + /// + public int ulMaintDensity + { + [DebuggerStepThrough] + get { return this.maintenanceDensity; } + set { this.maintenanceDensity = value; } + } + + /// + /// Gets or sets the percent growth from last growth or initial size (possibly rounded + /// to nearest native JET allocation size). + /// Valid values are 0, and [100, 50000). + /// + public int ulGrowth + { + [DebuggerStepThrough] + get { return this.growthPercent; } + set { this.growthPercent = value; } + } + + /// + /// Gets or sets the value that overrides ulGrowth if too small. This value is in bytes. + /// + public int cbMinExtent + { + [DebuggerStepThrough] + get { return this.minimumExtent; } + set { this.minimumExtent = value; } + } + + /// + /// Gets or sets the value that sets the ceiling of ulGrowth. This value is in bytes. + /// + public int cbMaxExtent + { + [DebuggerStepThrough] + get { return this.maximumExtent; } + set { this.maximumExtent = value; } + } + + #region IContentEquatable + /// + /// Returns a value indicating whether this instance is equal + /// to another instance. + /// + /// An instance to compare with this instance. + /// True if the two instances are equal. + public bool ContentEquals(JET_SPACEHINTS other) + { + if (null == other) + { + return false; + } + + return this.ulInitialDensity == other.ulInitialDensity + && this.cbInitial == other.cbInitial + && this.grbit == other.grbit + && this.ulMaintDensity == other.ulMaintDensity + && this.ulGrowth == other.ulGrowth + && this.cbMinExtent == other.cbMinExtent + && this.cbMaxExtent == other.cbMaxExtent; + } + #endregion + + #region IDeepCloneable + /// + /// Returns a deep copy of the object. + /// + /// A deep copy of the object. + public JET_SPACEHINTS DeepClone() + { + JET_SPACEHINTS result = (JET_SPACEHINTS)this.MemberwiseClone(); + return result; + } + #endregion + + /// + /// Generate a string representation of the instance. + /// + /// The structure as a string. + public override string ToString() + { + return string.Format(CultureInfo.InvariantCulture, "JET_SPACEHINTS({0})", this.grbit); + } + + /// + /// Returns the unmanaged columncreate that represents this managed class. + /// + /// A native (interop) version of the JET_SPACEHINTS. + internal NATIVE_SPACEHINTS GetNativeSpaceHints() + { + var native = new NATIVE_SPACEHINTS(); + native.cbStruct = checked((uint)Marshal.SizeOf(typeof(NATIVE_SPACEHINTS))); + + native.ulInitialDensity = checked((uint)this.ulInitialDensity); + native.cbInitial = checked((uint)this.cbInitial); + native.grbit = (uint)this.grbit; + native.ulMaintDensity = checked((uint)this.ulMaintDensity); + native.ulGrowth = checked((uint)this.ulGrowth); + native.cbMinExtent = checked((uint)this.cbMinExtent); + native.cbMaxExtent = checked((uint)this.cbMaxExtent); + + return native; + } + + /// + /// Sets the fields of the object from a native JET_SPACEHINTS struct. + /// + /// + /// The native columncreate to set the values from. + /// + internal void SetFromNativeSpaceHints(NATIVE_SPACEHINTS value) + { + this.ulInitialDensity = checked((int)value.ulInitialDensity); + this.cbInitial = checked((int)value.cbInitial); + this.grbit = (SpaceHintsGrbit)value.grbit; + this.ulMaintDensity = checked((int)value.ulMaintDensity); + this.ulGrowth = checked((int)value.ulGrowth); + this.cbMinExtent = checked((int)value.cbMinExtent); + this.cbMaxExtent = checked((int)value.cbMaxExtent); + } + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/jet_tablecreate.cs b/WelsonJS.Toolkit/EsentInterop/jet_tablecreate.cs new file mode 100644 index 0000000..fb19d57 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/jet_tablecreate.cs @@ -0,0 +1,647 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Diagnostics; + using System.Diagnostics.CodeAnalysis; + using System.Globalization; + using System.Runtime.InteropServices; + using Microsoft.Isam.Esent.Interop.Implementation; + + /// + /// Contains the information needed to create a table in an ESE database. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1300:ElementMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + [Serializable] + public partial class JET_TABLECREATE : IContentEquatable, IDeepCloneable + { + /// + /// Name of the table to create. + /// + private string tableName; + + /// + /// Name of the table from which to inherit base DDL. + /// + private string templateTableName; + + /// + /// Initial pages to allocate for table. + /// + private int initialPageAllocation; + + /// + /// Table density. + /// + private int tableDensity; + + /// + /// Array of column creation info. + /// + private JET_COLUMNCREATE[] columnCreates; + + /// + /// Number of columns to create. + /// + private int columnCreateCount; + + /// + /// Array of indices to create, pointer to . + /// + private JET_INDEXCREATE[] indexCreates; + + /// + /// Number of indices to create. + /// + private int indexCreateCount; + + /// + /// Callback function to use for the table. + /// + private string callbackFunction; + + /// + /// Type of the callback function. + /// + private JET_cbtyp callbackType; + + /// + /// Table options. + /// + private CreateTableColumnIndexGrbit options; + + /// + /// Space allocation, maintenance, and usage hints for default sequential index. + /// + private JET_SPACEHINTS seqSpacehints; + + /// + /// Space allocation, maintenance, and usage hints for Separated LV tree. + /// + private JET_SPACEHINTS longValueSpacehints; + + /// + /// Heuristic size to separate a intrinsic LV from the primary record. + /// + private int separateLvThresholdHint; + + /// + /// Returned tableid. + /// + [NonSerialized] + private JET_TABLEID tableIdentifier; + + /// + /// Count of objects created (columns+table+indexes+callbacks). + /// + private int objectsCreated; + + /// + /// Gets or sets the name of the table to create. + /// + public string szTableName + { + [DebuggerStepThrough] + get { return this.tableName; } + set { this.tableName = value; } + } + + /// + /// Gets or sets the name of the table from which to inherit base DDL. + /// + public string szTemplateTableName + { + [DebuggerStepThrough] + get { return this.templateTableName; } + set { this.templateTableName = value; } + } + + /// + /// Gets or sets the initial pages to allocate for table. + /// + public int ulPages + { + [DebuggerStepThrough] + get { return this.initialPageAllocation; } + set { this.initialPageAllocation = value; } + } + + /// + /// Gets or sets the table density. + /// + public int ulDensity + { + [DebuggerStepThrough] + get { return this.tableDensity; } + set { this.tableDensity = value; } + } + + /// + /// Gets or sets an array of column creation info, of type . + /// + public JET_COLUMNCREATE[] rgcolumncreate + { + [DebuggerStepThrough] + get { return this.columnCreates; } + set { this.columnCreates = value; } + } + + /// + /// Gets or sets the number of columns to create. + /// + public int cColumns + { + [DebuggerStepThrough] + get { return this.columnCreateCount; } + set { this.columnCreateCount = value; } + } + + /// + /// Gets or sets an array of indices to create, of type . + /// + public JET_INDEXCREATE[] rgindexcreate + { + [DebuggerStepThrough] + get { return this.indexCreates; } + set { this.indexCreates = value; } + } + + /// + /// Gets or sets the number of indices to create. + /// + public int cIndexes + { + [DebuggerStepThrough] + get { return this.indexCreateCount; } + set { this.indexCreateCount = value; } + } + + /// + /// Gets or sets a callback function to use for the table. This is in the form "module!functionName", + /// and assumes unmanaged code. See for an alternative. + /// + public string szCallback + { + [DebuggerStepThrough] + get { return this.callbackFunction; } + set { this.callbackFunction = value; } + } + + /// + /// Gets or sets a type of the callback function. + /// + public JET_cbtyp cbtyp + { + [DebuggerStepThrough] + get { return this.callbackType; } + set { this.callbackType = value; } + } + + /// + /// Gets or sets the table options. + /// + public CreateTableColumnIndexGrbit grbit + { + [DebuggerStepThrough] + get { return this.options; } + set { this.options = value; } + } + + /// + /// Gets or sets space allocation, maintenance, and usage hints for default sequential index. + /// + public JET_SPACEHINTS pSeqSpacehints + { + [DebuggerStepThrough] + get { return this.seqSpacehints; } + set { this.seqSpacehints = value; } + } + + /// + /// Gets or sets space allocation, maintenance, and usage hints for Separated LV tree, of type . + /// + public JET_SPACEHINTS pLVSpacehints + { + [DebuggerStepThrough] + get { return this.longValueSpacehints; } + set { this.longValueSpacehints = value; } + } + + /// + /// Gets or sets the heuristic size to separate a intrinsic LV from the primary record. + /// + public int cbSeparateLV + { + [DebuggerStepThrough] + get { return this.separateLvThresholdHint; } + set { this.separateLvThresholdHint = value; } + } + + /// + /// Gets or sets the returned tableid. + /// + public JET_TABLEID tableid + { + [DebuggerStepThrough] + get { return this.tableIdentifier; } + set { this.tableIdentifier = value; } + } + + /// + /// Gets or sets the count of objects created (columns+table+indexes+callbacks). + /// + public int cCreated + { + [DebuggerStepThrough] + get { return this.objectsCreated; } + set { this.objectsCreated = value; } + } + + #region IContentEquatable + /// + /// Returns a value indicating whether this instance is equal + /// to another instance. + /// + /// An instance to compare with this instance. + /// True if the two instances are equal. + public bool ContentEquals(JET_TABLECREATE other) + { + if (null == other) + { + return false; + } + + this.CheckMembersAreValid(); + other.CheckMembersAreValid(); + + bool notYetPublishedEquals = true; + this.NotYetPublishedEquals(other, ref notYetPublishedEquals); + + return notYetPublishedEquals + && this.szTableName == other.szTableName + && this.szTemplateTableName == other.szTemplateTableName + && this.ulPages == other.ulPages + && this.ulDensity == other.ulDensity + && this.cColumns == other.cColumns + && this.cIndexes == other.cIndexes + && this.szCallback == other.szCallback + && this.cbtyp == other.cbtyp + && this.grbit == other.grbit + && this.cbSeparateLV == other.cbSeparateLV + && Util.ObjectContentEquals(this.pSeqSpacehints, other.pSeqSpacehints) + && Util.ObjectContentEquals(this.pLVSpacehints, other.pLVSpacehints) + && this.tableid == other.tableid + && this.cCreated == other.cCreated + && Util.ArrayObjectContentEquals(this.rgcolumncreate, other.rgcolumncreate, this.cColumns) + && Util.ArrayObjectContentEquals(this.rgindexcreate, other.rgindexcreate, this.cIndexes); + } + #endregion + + #region IDeepCloneable + /// + /// Returns a deep copy of the object. + /// + /// A deep copy of the object. + public JET_TABLECREATE DeepClone() + { + JET_TABLECREATE result = (JET_TABLECREATE)this.MemberwiseClone(); + result.rgcolumncreate = Util.DeepCloneArray(this.rgcolumncreate); + result.rgindexcreate = Util.DeepCloneArray(this.rgindexcreate); + result.seqSpacehints = (null == this.seqSpacehints) ? null : this.seqSpacehints.DeepClone(); + result.pLVSpacehints = (null == this.pLVSpacehints) ? null : this.pLVSpacehints.DeepClone(); + + return result; + } + + #endregion + + /// + /// Generate a string representation of the instance. + /// + /// The structure as a string. + public override string ToString() + { + return string.Format( + CultureInfo.InvariantCulture, + "JET_TABLECREATE({0}:{1} columns:{2} indices)", + this.szTableName, + this.cColumns, + this.cIndexes); + } + + /// + /// Check this object to make sure its parameters are valid. + /// + internal void CheckMembersAreValid() + { + if (this.cColumns < 0) + { + throw new ArgumentOutOfRangeException("cColumns", this.cColumns, "cannot be negative"); + } + + if (this.rgcolumncreate != null && this.cColumns > this.rgcolumncreate.Length) + { + throw new ArgumentOutOfRangeException("cColumns", this.cColumns, "cannot be greater than rgcolumncreate.Length"); + } + + if (this.rgcolumncreate == null && this.cColumns != 0) + { + throw new ArgumentOutOfRangeException("cColumns", this.cColumns, "must be zero when rgcolumncreate is null"); + } + + if (this.cIndexes < 0) + { + throw new ArgumentOutOfRangeException("cIndexes", this.cIndexes, "cannot be negative"); + } + + if (this.rgindexcreate != null && this.cIndexes > this.rgindexcreate.Length) + { + throw new ArgumentOutOfRangeException("cIndexes", this.cIndexes, "cannot be greater than rgindexcreate.Length"); + } + + if (this.rgindexcreate == null && this.cIndexes != 0) + { + throw new ArgumentOutOfRangeException("cIndexes", this.cIndexes, "must be zero when rgindexcreate is null"); + } + } + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + /// + /// Gets the native (interop) version of this object. The following members are + /// NOT converted: , , + /// , and . + /// + /// The native (interop) version of this object. + internal NATIVE_TABLECREATE2 GetNativeTableCreate2() + { + this.CheckMembersAreValid(); + + var native = new NATIVE_TABLECREATE2(); + native.cbStruct = checked((uint)Marshal.SizeOf(typeof(NATIVE_TABLECREATE2))); + native.szTableName = this.szTableName; + native.szTemplateTableName = this.szTemplateTableName; + native.ulPages = checked((uint)this.ulPages); + native.ulDensity = checked((uint)this.ulDensity); + + // native.rgcolumncreate is done at pinvoke time. + native.cColumns = checked((uint)this.cColumns); + + // native.rgindexcreate is done at pinvoke time. + native.cIndexes = checked((uint)this.cIndexes); + native.szCallback = this.szCallback; + native.cbtyp = this.cbtyp; + native.grbit = checked((uint)this.grbit); + native.tableid = this.tableid.Value; + native.cCreated = checked((uint)this.cCreated); + + return native; + } + + /// + /// Gets the native (interop) version of this object. The following members are + /// NOT converted: , , + /// , and . + /// + /// The native (interop) version of this object. + internal NATIVE_TABLECREATE3 GetNativeTableCreate3() + { + this.CheckMembersAreValid(); + + var native = new NATIVE_TABLECREATE3(); + native.cbStruct = checked((uint)Marshal.SizeOf(typeof(NATIVE_TABLECREATE3))); + native.szTableName = this.szTableName; + native.szTemplateTableName = this.szTemplateTableName; + native.ulPages = checked((uint)this.ulPages); + native.ulDensity = checked((uint)this.ulDensity); + + // native.rgcolumncreate is done at pinvoke time. + native.cColumns = checked((uint)this.cColumns); + + // native.rgindexcreate is done at pinvoke time. + native.cIndexes = checked((uint)this.cIndexes); + native.szCallback = this.szCallback; + native.cbtyp = this.cbtyp; + native.grbit = checked((uint)this.grbit); + + // native.pSeqSpacehints is done at pinvoke time. + // native.pLVSpacehints is done at pinvoke time. + native.cbSeparateLV = checked((uint)this.cbSeparateLV); + native.tableid = this.tableid.Value; + native.cCreated = checked((uint)this.cCreated); + + return native; + } +#endif // !MANAGEDESENT_ON_WSA + + /// + /// Provides a hook to allow comparison of additional fields in + /// a different file. These additonal fields are not yet published + /// on MSDN. + /// + /// The structure to compare with. + /// Whether the additional fields in + /// are the same as this. + partial void NotYetPublishedEquals(JET_TABLECREATE other, ref bool notYetPublishedEquals); + +#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK + /// + /// The native version of the structure. This includes callbacks, + /// space hints, and uses NATIVE_INDEXCREATE. + /// + [StructLayout(LayoutKind.Sequential)] + [SuppressMessage("Microsoft.StyleCop.CSharp.NamingRules", + "SA1305:FieldNamesMustNotUseHungarianNotation", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1307:AccessibleFieldsMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + internal unsafe struct NATIVE_TABLECREATE2 + { + /// + /// Size of the structure. + /// + public uint cbStruct; + + /// + /// Name of the table to create. + /// + [MarshalAs(UnmanagedType.LPTStr)] + public string szTableName; + + /// + /// Name of the table from which to inherit base DDL. + /// + [MarshalAs(UnmanagedType.LPTStr)] + public string szTemplateTableName; + + /// + /// Initial pages to allocate for table. + /// + public uint ulPages; + + /// + /// Table density. + /// + public uint ulDensity; + + /// + /// Array of column creation info. + /// + public NATIVE_COLUMNCREATE* rgcolumncreate; + + /// + /// Number of columns to create. + /// + public uint cColumns; + + /// + /// Array of indices to create, pointer to . + /// + public IntPtr rgindexcreate; + + /// + /// Number of indices to create. + /// + public uint cIndexes; + + /// + /// Callback function to use for the table. + /// + [MarshalAs(UnmanagedType.LPTStr)] + public string szCallback; + + /// + /// Type of the callback function. + /// + public JET_cbtyp cbtyp; + + /// + /// Table options. + /// + public uint grbit; + + /// + /// Returned tableid. + /// + public IntPtr tableid; + + /// + /// Count of objects created (columns+table+indexes+callbacks). + /// + public uint cCreated; + } + + /// + /// The native version of the structure. This includes callbacks, + /// space hints, and uses NATIvE_INDEXCREATE2. + /// + [StructLayout(LayoutKind.Sequential)] + [SuppressMessage("Microsoft.StyleCop.CSharp.NamingRules", + "SA1305:FieldNamesMustNotUseHungarianNotation", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1307:AccessibleFieldsMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + internal unsafe struct NATIVE_TABLECREATE3 + { + /// + /// Size of the structure. + /// + public uint cbStruct; + + /// + /// Name of the table to create. + /// + [MarshalAs(UnmanagedType.LPWStr)] + public string szTableName; + + /// + /// Name of the table from which to inherit base DDL. + /// + [MarshalAs(UnmanagedType.LPWStr)] + public string szTemplateTableName; + + /// + /// Initial pages to allocate for table. + /// + public uint ulPages; + + /// + /// Table density. + /// + public uint ulDensity; + + /// + /// Array of column creation info. + /// + public NATIVE_COLUMNCREATE* rgcolumncreate; + + /// + /// Number of columns to create. + /// + public uint cColumns; + + /// + /// Array of indices to create, pointer to . + /// + public IntPtr rgindexcreate; + + /// + /// Number of indices to create. + /// + public uint cIndexes; + + /// + /// Callback function to use for the table. + /// + [MarshalAs(UnmanagedType.LPWStr)] + public string szCallback; + + /// + /// Type of the callback function. + /// + public JET_cbtyp cbtyp; + + /// + /// Table options. + /// + public uint grbit; + + /// + /// Space allocation, maintenance, and usage hints for default sequential index. + /// + public NATIVE_SPACEHINTS* pSeqSpacehints; + + /// + /// Space allocation, maintenance, and usage hints for Separated LV tree. + /// + public NATIVE_SPACEHINTS* pLVSpacehints; + + /// + /// Heuristic size to separate a intrinsic LV from the primary record. + /// + public uint cbSeparateLV; + + /// + /// Returned tableid. + /// + public IntPtr tableid; + + /// + /// Count of objects created (columns+table+indexes+callbacks). + /// + public uint cCreated; + } +#endif // !MANAGEDESENT_ON_WSA + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/jet_tblinfo.cs b/WelsonJS.Toolkit/EsentInterop/jet_tblinfo.cs new file mode 100644 index 0000000..ce28c87 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/jet_tblinfo.cs @@ -0,0 +1,77 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + /// + /// Info levels for retrieving table info with JetGetTableInfo. + /// + public enum JET_TblInfo + { + /// + /// Default option. Retrieves a containing + /// information about the table. Use this option with + /// . + /// + Default = 0, + + /// + /// Retrieves the name of the table. Use this option with + /// . + /// + Name = 1, + + /// + /// Retrieves the of the database containing the + /// table. Use this option with + /// . + /// + Dbid = 2, + + /// + /// The behavior of the method depends on how large the array that is passed + /// to the method is. The array must have at least two entries. + /// The first entry will contain the number of Owned Extents in the table. + /// The second entry will contain the number of Available Extents in the table. + /// If the array has more than two entries then the remaining bytes of + /// the buffer will consist of an array of structures that represent a list of + /// extents. This structure contains two members: the last page number in the + /// extent and the number of pages in the extent. Use this option with + /// . + /// + SpaceUsage = 7, + + /// + /// The array passed to JetGetTableInfo must have two entries. + /// The first entry will be set to the number of pages in the table. + /// The second entry will be set to the target density of pages for the table. + /// Use this option with + /// . + /// + SpaceAlloc = 9, + + /// + /// Gets the number of owned pages in the table. Use this option with + /// . + /// + SpaceOwned = 10, + + /// + /// Gets the number of available pages in the table. Use this option with + /// . + /// + SpaceAvailable = 11, + + /// + /// If the table is a derived table, the result will be filled in with the + /// name of the table from which the derived table inherited its DDL. If + /// the table is not a derived table, the buffer will an empty string. + /// Use this option with + /// . + /// + TemplateTableName = 12, + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/jet_threadstats.cs b/WelsonJS.Toolkit/EsentInterop/jet_threadstats.cs new file mode 100644 index 0000000..65bbbbd --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/jet_threadstats.cs @@ -0,0 +1,392 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop.Vista +{ + using System; + using System.Diagnostics; + using System.Diagnostics.CodeAnalysis; + using System.Globalization; + using System.Runtime.InteropServices; + + /// + /// Contains cumulative statistics on the work performed by the database + /// engine on the current thread. This information is returned via + /// JetGetThreadStats. + /// + [StructLayout(LayoutKind.Sequential)] + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1300:ElementMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + [Serializable] + [SuppressMessage("Microsoft.StyleCop.CSharp.NamingRules", + "SA1305:FieldNamesMustNotUseHungarianNotation", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + public struct JET_THREADSTATS : IEquatable + { + /// + /// The size of a JET_THREADSTATS structure. + /// + internal static readonly int Size = Marshal.SizeOf(typeof(JET_THREADSTATS)); + + /// + /// Size of the structure. This is used for interop. + /// + private readonly int cbStruct; + + /// + /// Number of pages visited. + /// + private int pagesReferenced; + + /// + /// Number of pages read from disk. + /// + private int pagesRead; + + /// + /// Number of pages preread. + /// + private int pagesPreread; + + /// + /// Number of pages dirtied. + /// + private int pagesDirtied; + + /// + /// Pages redirtied. + /// + private int pagesRedirtied; + + /// + /// Number of log records generated. + /// + private int numLogRecords; + + /// + /// Number of bytes logged. + /// + private int loggedBytes; + + /// + /// Gets the total number of database pages visited by the database + /// engine on the current thread. + /// + public int cPageReferenced + { + [DebuggerStepThrough] + get { return this.pagesReferenced; } + internal set { this.pagesReferenced = value; } + } + + /// + /// Gets the total number of database pages fetched from disk by the + /// database engine on the current thread. + /// + public int cPageRead + { + [DebuggerStepThrough] + get { return this.pagesRead; } + internal set { this.pagesRead = value; } + } + + /// + /// Gets the total number of database pages prefetched from disk by + /// the database engine on the current thread. + /// + public int cPagePreread + { + [DebuggerStepThrough] + get { return this.pagesPreread; } + internal set { this.pagesPreread = value; } + } + + /// + /// Gets the total number of database pages, with no unwritten changes, + /// that have been modified by the database engine on the current thread. + /// + public int cPageDirtied + { + [DebuggerStepThrough] + get { return this.pagesDirtied; } + internal set { this.pagesDirtied = value; } + } + + /// + /// Gets the total number of database pages, with unwritten changes, that + /// have been modified by the database engine on the current thread. + /// + public int cPageRedirtied + { + [DebuggerStepThrough] + get { return this.pagesRedirtied; } + internal set { this.pagesRedirtied = value; } + } + + /// + /// Gets the total number of transaction log records that have been + /// generated by the database engine on the current thread. + /// + public int cLogRecord + { + [DebuggerStepThrough] + get { return this.numLogRecords; } + internal set { this.numLogRecords = value; } + } + + /// + /// Gets the total size, in bytes, of transaction log records that + /// have been generated by the database engine on the current thread. + /// + public int cbLogRecord + { + [DebuggerStepThrough] + get { return this.loggedBytes; } + internal set { this.loggedBytes = value; } + } + + /// + /// Create a new struct with the specified + /// valued. + /// + /// + /// Number of pages visited. + /// + /// + /// Number of pages read. + /// + /// + /// Number of pages preread. + /// + /// + /// TNumber of pages dirtied. + /// + /// + /// Number of pages redirtied. + /// + /// + /// Number of log records generated. + /// + /// + /// Bytes of log records written. + /// + /// + /// A new struct with the specified values. + /// + public static JET_THREADSTATS Create( + int cPageReferenced, + int cPageRead, + int cPagePreread, + int cPageDirtied, + int cPageRedirtied, + int cLogRecord, + int cbLogRecord) + { + return new JET_THREADSTATS + { + cPageReferenced = cPageReferenced, + cPageRead = cPageRead, + cPagePreread = cPagePreread, + cPageDirtied = cPageDirtied, + cPageRedirtied = cPageRedirtied, + cLogRecord = cLogRecord, + cbLogRecord = cbLogRecord, + }; + } + + /// + /// Add the stats in two JET_THREADSTATS structures. + /// + /// The first JET_THREADSTATS. + /// The second JET_THREADSTATS. + /// A JET_THREADSTATS containing the result of adding the stats in t1 and t2. + public static JET_THREADSTATS Add(JET_THREADSTATS t1, JET_THREADSTATS t2) + { + unchecked + { + return new JET_THREADSTATS + { + cPageReferenced = t1.cPageReferenced + t2.cPageReferenced, + cPageRead = t1.cPageRead + t2.cPageRead, + cPagePreread = t1.cPagePreread + t2.cPagePreread, + cPageDirtied = t1.cPageDirtied + t2.cPageDirtied, + cPageRedirtied = t1.cPageRedirtied + t2.cPageRedirtied, + cLogRecord = t1.cLogRecord + t2.cLogRecord, + cbLogRecord = t1.cbLogRecord + t2.cbLogRecord, + }; + } + } + + /// + /// Add the stats in two JET_THREADSTATS structures. + /// + /// The first JET_THREADSTATS. + /// The second JET_THREADSTATS. + /// A JET_THREADSTATS containing the result of adding the stats in t1 and t2. + public static JET_THREADSTATS operator +(JET_THREADSTATS t1, JET_THREADSTATS t2) + { + return Add(t1, t2); + } + + /// + /// Calculate the difference in stats between two JET_THREADSTATS structures. + /// + /// The first JET_THREADSTATS. + /// The second JET_THREADSTATS. + /// A JET_THREADSTATS containing the difference in stats between t1 and t2. + public static JET_THREADSTATS Subtract(JET_THREADSTATS t1, JET_THREADSTATS t2) + { + unchecked + { + return new JET_THREADSTATS + { + cPageReferenced = t1.cPageReferenced - t2.cPageReferenced, + cPageRead = t1.cPageRead - t2.cPageRead, + cPagePreread = t1.cPagePreread - t2.cPagePreread, + cPageDirtied = t1.cPageDirtied - t2.cPageDirtied, + cPageRedirtied = t1.cPageRedirtied - t2.cPageRedirtied, + cLogRecord = t1.cLogRecord - t2.cLogRecord, + cbLogRecord = t1.cbLogRecord - t2.cbLogRecord, + }; + } + } + + /// + /// Calculate the difference in stats between two JET_THREADSTATS structures. + /// + /// The first JET_THREADSTATS. + /// The second JET_THREADSTATS. + /// A JET_THREADSTATS containing the difference in stats between t1 and t2. + public static JET_THREADSTATS operator -(JET_THREADSTATS t1, JET_THREADSTATS t2) + { + return Subtract(t1, t2); + } + + /// + /// Determines whether two specified instances of JET_THREADSTATS + /// are equal. + /// + /// The first instance to compare. + /// The second instance to compare. + /// True if the two instances are equal. + public static bool operator ==(JET_THREADSTATS lhs, JET_THREADSTATS rhs) + { + return lhs.Equals(rhs); + } + + /// + /// Determines whether two specified instances of JET_THREADSTATS + /// are not equal. + /// + /// The first instance to compare. + /// The second instance to compare. + /// True if the two instances are not equal. + public static bool operator !=(JET_THREADSTATS lhs, JET_THREADSTATS rhs) + { + return !(lhs == rhs); + } + + /// + /// Gets a string representation of this object. + /// + /// A string representation of this object. + public override string ToString() + { + // String.Concat is faster than using a StringBuilder. + // use Int32.ToString instead of passing the Int32 to + // String.Format (which requires boxing). + return string.Concat( + this.cPageReferenced.ToString("N0", CultureInfo.InvariantCulture), + " page reference", + GetPluralS(this.cPageReferenced), + ", ", + this.cPageRead.ToString("N0", CultureInfo.InvariantCulture), + " page", + GetPluralS(this.cPageRead), + " read, ", + this.cPagePreread.ToString("N0", CultureInfo.InvariantCulture), + " page", + GetPluralS(this.cPagePreread), + " preread, ", + this.cPageDirtied.ToString("N0", CultureInfo.InvariantCulture), + " page", + GetPluralS(this.cPageDirtied), + " dirtied, ", + this.cPageRedirtied.ToString("N0", CultureInfo.InvariantCulture), + " page", + GetPluralS(this.cPageRedirtied), + " redirtied, ", + this.cLogRecord.ToString("N0", CultureInfo.InvariantCulture), + " log record", + GetPluralS(this.cLogRecord), + ", ", + this.cbLogRecord.ToString("N0", CultureInfo.InvariantCulture), + " byte", + GetPluralS(this.cbLogRecord), + " logged"); + } + + /// + /// Returns a value indicating whether this instance is equal + /// to another instance. + /// + /// An object to compare with this instance. + /// True if the two instances are equal. + public override bool Equals(object obj) + { + if (obj == null || GetType() != obj.GetType()) + { + return false; + } + + return this.Equals((JET_THREADSTATS)obj); + } + + /// + /// Returns the hash code for this instance. + /// + /// The hash code for this instance. + public override int GetHashCode() + { + return this.cPageReferenced + ^ this.cPageRead << 1 + ^ this.cPagePreread << 2 + ^ this.cPageDirtied << 3 + ^ this.cPageRedirtied << 4 + ^ this.cLogRecord << 5 + ^ this.cbLogRecord << 6; + } + + /// + /// Returns a value indicating whether this instance is equal + /// to another instance. + /// + /// An instance to compare with this instance. + /// True if the two instances are equal. + public bool Equals(JET_THREADSTATS other) + { + return this.cbLogRecord == other.cbLogRecord + && this.cLogRecord == other.cLogRecord + && this.cPageDirtied == other.cPageDirtied + && this.cPagePreread == other.cPagePreread + && this.cPageRead == other.cPageRead + && this.cPageRedirtied == other.cPageRedirtied + && this.cPageReferenced == other.cPageReferenced; + } + + /// + /// Get the plural suffix ('s') for the given number. + /// + /// The number. + /// The letter 's' if n is greater than 1. + private static string GetPluralS(int n) + { + return n == 1 ? string.Empty : "s"; + } + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/jet_threadstats2.cs b/WelsonJS.Toolkit/EsentInterop/jet_threadstats2.cs new file mode 100644 index 0000000..40dec93 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/jet_threadstats2.cs @@ -0,0 +1,447 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop.Windows10 +{ + using System; + using System.Diagnostics; + using System.Diagnostics.CodeAnalysis; + using System.Globalization; + using System.Runtime.InteropServices; + + /// + /// Contains cumulative statistics on the work performed by the database + /// engine on the current thread. This information is returned via + /// JetGetThreadStats. + /// + [StructLayout(LayoutKind.Sequential)] + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1300:ElementMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + [Serializable] + [SuppressMessage("Microsoft.StyleCop.CSharp.NamingRules", + "SA1305:FieldNamesMustNotUseHungarianNotation", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + public struct JET_THREADSTATS2 : IEquatable + { + /// + /// The size of a JET_THREADSTATS2 structure. + /// + internal static readonly int Size = Marshal.SizeOf(typeof(JET_THREADSTATS2)); + + /// + /// Size of the structure. This is used for interop. + /// + private readonly int cbStruct; + + /// + /// Number of pages visited. + /// + private int pagesReferenced; + + /// + /// Number of pages read from disk. + /// + private int pagesRead; + + /// + /// Number of pages preread. + /// + private int pagesPreread; + + /// + /// Number of pages dirtied. + /// + private int pagesDirtied; + + /// + /// Pages redirtied. + /// + private int pagesRedirtied; + + /// + /// Number of log records generated. + /// + private int numLogRecords; + + /// + /// Number of bytes logged. + /// + private int loggedBytes; + + /// + /// Elapsed time for pages cache missed in microseconds. + /// + private long usecsCacheMisses; + + /// + /// Number of pages cache missed. + /// + private int pagesCacheMisses; + + /// + /// Gets the total number of database pages visited by the database + /// engine on the current thread. + /// + public int cPageReferenced + { + [DebuggerStepThrough] + get { return this.pagesReferenced; } + internal set { this.pagesReferenced = value; } + } + + /// + /// Gets the total number of database pages fetched from disk by the + /// database engine on the current thread. + /// + public int cPageRead + { + [DebuggerStepThrough] + get { return this.pagesRead; } + internal set { this.pagesRead = value; } + } + + /// + /// Gets the total number of database pages prefetched from disk by + /// the database engine on the current thread. + /// + public int cPagePreread + { + [DebuggerStepThrough] + get { return this.pagesPreread; } + internal set { this.pagesPreread = value; } + } + + /// + /// Gets the total number of database pages, with no unwritten changes, + /// that have been modified by the database engine on the current thread. + /// + public int cPageDirtied + { + [DebuggerStepThrough] + get { return this.pagesDirtied; } + internal set { this.pagesDirtied = value; } + } + + /// + /// Gets the total number of database pages, with unwritten changes, that + /// have been modified by the database engine on the current thread. + /// + public int cPageRedirtied + { + [DebuggerStepThrough] + get { return this.pagesRedirtied; } + internal set { this.pagesRedirtied = value; } + } + + /// + /// Gets the total number of transaction log records that have been + /// generated by the database engine on the current thread. + /// + public int cLogRecord + { + [DebuggerStepThrough] + get { return this.numLogRecords; } + internal set { this.numLogRecords = value; } + } + + /// + /// Gets the total size, in bytes, of transaction log records that + /// have been generated by the database engine on the current thread. + /// + public int cbLogRecord + { + [DebuggerStepThrough] + get { return this.loggedBytes; } + internal set { this.loggedBytes = value; } + } + + /// + /// Gets the cumulative latency, in microseconds, of cache misses experienced by + /// this thread. + /// + public long cusecPageCacheMiss + { + [DebuggerStepThrough] + get { return this.usecsCacheMisses; } + internal set { this.usecsCacheMisses = value; } + } + + /// + /// Gets the cumulative count of cache misses experienced by the thread. + /// + public int cPageCacheMiss + { + [DebuggerStepThrough] + get { return this.pagesCacheMisses; } + internal set { this.pagesCacheMisses = value; } + } + + /// + /// Create a new struct with the specified + /// valued. + /// + /// + /// Number of pages visited. + /// + /// + /// Number of pages read. + /// + /// + /// Number of pages preread. + /// + /// + /// TNumber of pages dirtied. + /// + /// + /// Number of pages redirtied. + /// + /// + /// Number of log records generated. + /// + /// + /// Bytes of log records written. + /// + /// + /// Elapsed time for pages cache missed in microseconds. + /// + /// + /// Number of pages cache missed. + /// + /// + /// A new struct with the specified values. + /// + public static JET_THREADSTATS2 Create( + int cPageReferenced, + int cPageRead, + int cPagePreread, + int cPageDirtied, + int cPageRedirtied, + int cLogRecord, + int cbLogRecord, + long cusecPageCacheMiss, + int cPageCacheMiss) + { + return new JET_THREADSTATS2 + { + cPageReferenced = cPageReferenced, + cPageRead = cPageRead, + cPagePreread = cPagePreread, + cPageDirtied = cPageDirtied, + cPageRedirtied = cPageRedirtied, + cLogRecord = cLogRecord, + cbLogRecord = cbLogRecord, + cusecPageCacheMiss = cusecPageCacheMiss, + cPageCacheMiss = cPageCacheMiss, + }; + } + + /// + /// Add the stats in two JET_THREADSTATS2 structures. + /// + /// The first JET_THREADSTATS2. + /// The second JET_THREADSTATS2. + /// A JET_THREADSTATS2 containing the result of adding the stats in t1 and t2. + public static JET_THREADSTATS2 Add(JET_THREADSTATS2 t1, JET_THREADSTATS2 t2) + { + unchecked + { + return new JET_THREADSTATS2 + { + cPageReferenced = t1.cPageReferenced + t2.cPageReferenced, + cPageRead = t1.cPageRead + t2.cPageRead, + cPagePreread = t1.cPagePreread + t2.cPagePreread, + cPageDirtied = t1.cPageDirtied + t2.cPageDirtied, + cPageRedirtied = t1.cPageRedirtied + t2.cPageRedirtied, + cLogRecord = t1.cLogRecord + t2.cLogRecord, + cbLogRecord = t1.cbLogRecord + t2.cbLogRecord, + cusecPageCacheMiss = t1.cusecPageCacheMiss + t2.cusecPageCacheMiss, + cPageCacheMiss = t1.cPageCacheMiss + t2.cPageCacheMiss, + }; + } + } + + /// + /// Add the stats in two JET_THREADSTATS2 structures. + /// + /// The first JET_THREADSTATS2. + /// The second JET_THREADSTATS2. + /// A JET_THREADSTATS2 containing the result of adding the stats in t1 and t2. + public static JET_THREADSTATS2 operator +(JET_THREADSTATS2 t1, JET_THREADSTATS2 t2) + { + return Add(t1, t2); + } + + /// + /// Calculate the difference in stats between two JET_THREADSTATS2 structures. + /// + /// The first JET_THREADSTATS2. + /// The second JET_THREADSTATS2. + /// A JET_THREADSTATS2 containing the difference in stats between t1 and t2. + public static JET_THREADSTATS2 Subtract(JET_THREADSTATS2 t1, JET_THREADSTATS2 t2) + { + unchecked + { + return new JET_THREADSTATS2 + { + cPageReferenced = t1.cPageReferenced - t2.cPageReferenced, + cPageRead = t1.cPageRead - t2.cPageRead, + cPagePreread = t1.cPagePreread - t2.cPagePreread, + cPageDirtied = t1.cPageDirtied - t2.cPageDirtied, + cPageRedirtied = t1.cPageRedirtied - t2.cPageRedirtied, + cLogRecord = t1.cLogRecord - t2.cLogRecord, + cbLogRecord = t1.cbLogRecord - t2.cbLogRecord, + cusecPageCacheMiss = t1.cusecPageCacheMiss - t2.cusecPageCacheMiss, + cPageCacheMiss = t1.cPageCacheMiss - t2.cPageCacheMiss, + }; + } + } + + /// + /// Calculate the difference in stats between two JET_THREADSTATS2 structures. + /// + /// The first JET_THREADSTATS2. + /// The second JET_THREADSTATS2. + /// A JET_THREADSTATS2 containing the difference in stats between t1 and t2. + public static JET_THREADSTATS2 operator -(JET_THREADSTATS2 t1, JET_THREADSTATS2 t2) + { + return Subtract(t1, t2); + } + + /// + /// Determines whether two specified instances of JET_THREADSTATS2 + /// are equal. + /// + /// The first instance to compare. + /// The second instance to compare. + /// True if the two instances are equal. + public static bool operator ==(JET_THREADSTATS2 lhs, JET_THREADSTATS2 rhs) + { + return lhs.Equals(rhs); + } + + /// + /// Determines whether two specified instances of JET_THREADSTATS2 + /// are not equal. + /// + /// The first instance to compare. + /// The second instance to compare. + /// True if the two instances are not equal. + public static bool operator !=(JET_THREADSTATS2 lhs, JET_THREADSTATS2 rhs) + { + return !(lhs == rhs); + } + + /// + /// Gets a string representation of this object. + /// + /// A string representation of this object. + public override string ToString() + { + // String.Concat is faster than using a StringBuilder. + // use Int32.ToString instead of passing the Int32 to + // String.Format (which requires boxing). + return string.Concat( + this.cPageReferenced.ToString("N0", CultureInfo.InvariantCulture), + " page reference", + GetPluralS(this.cPageReferenced), + ", ", + this.cPageRead.ToString("N0", CultureInfo.InvariantCulture), + " page", + GetPluralS(this.cPageRead), + " read, ", + this.cPagePreread.ToString("N0", CultureInfo.InvariantCulture), + " page", + GetPluralS(this.cPagePreread), + " preread, ", + this.cPageDirtied.ToString("N0", CultureInfo.InvariantCulture), + " page", + GetPluralS(this.cPageDirtied), + " dirtied, ", + this.cPageRedirtied.ToString("N0", CultureInfo.InvariantCulture), + " page", + GetPluralS(this.cPageRedirtied), + " redirtied, ", + this.cLogRecord.ToString("N0", CultureInfo.InvariantCulture), + " log record", + GetPluralS(this.cLogRecord), + ", ", + this.cbLogRecord.ToString("N0", CultureInfo.InvariantCulture), + " byte", + GetPluralS(this.cbLogRecord), + " logged", + ", ", + this.cusecPageCacheMiss.ToString("N0", CultureInfo.InvariantCulture), + " page cache miss latency (us)", + ", ", + this.cPageCacheMiss.ToString("N0", CultureInfo.InvariantCulture), + " page cache miss count"); + } + + /// + /// Returns a value indicating whether this instance is equal + /// to another instance. + /// + /// An object to compare with this instance. + /// True if the two instances are equal. + public override bool Equals(object obj) + { + if (obj == null || GetType() != obj.GetType()) + { + return false; + } + + return this.Equals((JET_THREADSTATS2)obj); + } + + /// + /// Returns the hash code for this instance. + /// + /// The hash code for this instance. + public override int GetHashCode() + { + return this.cPageReferenced + ^ this.cPageRead << 1 + ^ this.cPagePreread << 2 + ^ this.cPageDirtied << 3 + ^ this.cPageRedirtied << 4 + ^ this.cLogRecord << 5 + ^ this.cbLogRecord << 6 + ^ this.cusecPageCacheMiss.GetHashCode() << 7 + ^ this.cPageCacheMiss << 8; + } + + /// + /// Returns a value indicating whether this instance is equal + /// to another instance. + /// + /// An instance to compare with this instance. + /// True if the two instances are equal. + public bool Equals(JET_THREADSTATS2 other) + { + return this.cPageCacheMiss == other.cPageCacheMiss + && this.cusecPageCacheMiss == other.cusecPageCacheMiss + && this.cbLogRecord == other.cbLogRecord + && this.cLogRecord == other.cLogRecord + && this.cPageDirtied == other.cPageDirtied + && this.cPagePreread == other.cPagePreread + && this.cPageRead == other.cPageRead + && this.cPageRedirtied == other.cPageRedirtied + && this.cPageReferenced == other.cPageReferenced; + } + + /// + /// Get the plural suffix ('s') for the given number. + /// + /// The number. + /// The letter 's' if n is greater than 1. + private static string GetPluralS(int n) + { + return n == 1 ? string.Empty : "s"; + } + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/jet_unicodeindex.cs b/WelsonJS.Toolkit/EsentInterop/jet_unicodeindex.cs new file mode 100644 index 0000000..9d8fda0 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/jet_unicodeindex.cs @@ -0,0 +1,155 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Diagnostics; + using System.Diagnostics.CodeAnalysis; + using System.Globalization; + using System.Runtime.InteropServices; + + /// + /// The native version of the JET_UNICODEINDEX structure. + /// + [StructLayout(LayoutKind.Sequential)] + [SuppressMessage("Microsoft.StyleCop.CSharp.NamingRules", + "SA1305:FieldNamesMustNotUseHungarianNotation", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1307:AccessibleFieldsMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + internal struct NATIVE_UNICODEINDEX + { + /// + /// The LCID to be used when normalizing unicode data. + /// + public uint lcid; + + /// + /// The flags for LCMapString. + /// + public uint dwMapFlags; + } + + /// + /// Customizes how Unicode data gets normalized when an index is created over a Unicode column. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1300:ElementMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + [Serializable] + public sealed partial class JET_UNICODEINDEX : IContentEquatable, IDeepCloneable + { + /// + /// The LCID to be used when normalizing unicode data. + /// + private int localeId; + + /// + /// The LocaleName to be used when normalizing unicode data. + /// + private string localeName; + + /// + /// Sets the flags to be used with LCMapString when normalizing unicode data. + /// + private uint mapStringFlags; + + /// + /// Gets or sets the LCID to be used when normalizing unicode data. + /// + public int lcid + { + [DebuggerStepThrough] + get { return this.localeId; } + set { this.localeId = value; } + } + + /// + /// Gets or sets the LocaleName to be used when normalizing unicode data. + /// + public string szLocaleName + { + [DebuggerStepThrough] + get { return this.localeName; } + set { this.localeName = value; } + } + + /// + /// Gets or sets the flags to be used with LCMapString when normalizing unicode data. + /// + [CLSCompliant(false)] + public uint dwMapFlags + { + [DebuggerStepThrough] + get { return this.mapStringFlags; } + set { this.mapStringFlags = value; } + } + + /// + /// Returns a deep copy of the object. + /// + /// A deep copy of the object. + public JET_UNICODEINDEX DeepClone() + { + return (JET_UNICODEINDEX)this.MemberwiseClone(); + } + + /// + /// Generate a string representation of the instance. + /// + /// The structure as a string. + public override string ToString() + { + return string.Format( + CultureInfo.InvariantCulture, + "JET_UNICODEINDEX({0}:{1}:0x{2:X})", + this.localeId, + this.localeName, + this.mapStringFlags); + } + + /// + /// Returns a value indicating whether this instance is equal + /// to another instance. + /// + /// An instance to compare with this instance. + /// True if the two instances are equal. + public bool ContentEquals(JET_UNICODEINDEX other) + { + if (null == other) + { + return false; + } + + return this.localeId == other.localeId + && this.mapStringFlags == other.mapStringFlags + && string.Compare(this.localeName, other.localeName, StringComparison.OrdinalIgnoreCase) == 0; + } + + /// + /// Gets the native version of this object. + /// + /// The native version of this object. + internal NATIVE_UNICODEINDEX GetNativeUnicodeIndex() + { + if (!string.IsNullOrEmpty(this.localeName)) + { + throw new ArgumentException("localeName was specified, but this version of the API does not accept locale names. Use LCIDs or a different API."); + } + + var native = new NATIVE_UNICODEINDEX + { + lcid = (uint)this.lcid, + dwMapFlags = this.dwMapFlags, + }; + return native; + } + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/jet_unicodeindex2.cs b/WelsonJS.Toolkit/EsentInterop/jet_unicodeindex2.cs new file mode 100644 index 0000000..00d1ff5 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/jet_unicodeindex2.cs @@ -0,0 +1,124 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + using System.Collections.Generic; + using System.Diagnostics.CodeAnalysis; + using System.Runtime.InteropServices; + + /// + /// The native version of the JET_UNICODEINDEX2 structure. + /// + [StructLayout(LayoutKind.Sequential)] + [SuppressMessage("Microsoft.StyleCop.CSharp.NamingRules", + "SA1305:FieldNamesMustNotUseHungarianNotation", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + [SuppressMessage( + "Microsoft.StyleCop.CSharp.NamingRules", + "SA1307:AccessibleFieldsMustBeginWithUpperCaseLetter", + Justification = "This should match the unmanaged API, which isn't capitalized.")] + internal struct NATIVE_UNICODEINDEX2 + { + /// + /// The locale to be used when normalizing unicode data. + /// + public IntPtr szLocaleName; + + /// + /// The flags for LCMapString. + /// + public uint dwMapFlags; + } + + /// + /// Customizes how Unicode data gets normalized when an index is created over a Unicode column. + /// + public sealed partial class JET_UNICODEINDEX : IContentEquatable, IDeepCloneable + { + /// + /// Contains a limited mapping of LCIDs to locale names. + /// + private static readonly Dictionary LcidToLocales = new Dictionary(10); + + /// + /// Initializes static members of the JET_UNICODEINDEX class. + /// + static JET_UNICODEINDEX() + { + // Some common LCIDs are listed at http://msdn.microsoft.com/en-us/goglobal/bb964664.aspx. + LcidToLocales.Add(127, string.Empty); + LcidToLocales.Add(1033, "en-us"); + LcidToLocales.Add(1046, "pt-br"); + LcidToLocales.Add(3084, "fr-ca"); + } + + /// + /// Initializes a new instance of the class. + /// + public JET_UNICODEINDEX() + { + } + + /// + /// Initializes a new instance of the class. + /// + /// The native object from which to read values. + internal JET_UNICODEINDEX(ref NATIVE_UNICODEINDEX2 native) + { + this.szLocaleName = Marshal.PtrToStringUni(native.szLocaleName); + this.dwMapFlags = native.dwMapFlags; + } + + /// + /// As a workaround for systems that do not have LCID support, we will convert a VERY limited number of + /// LCIDs to locale names. + /// + /// A BCP-47 style locale name. + public string GetEffectiveLocaleName() + { + if (this.szLocaleName != null) + { + return this.szLocaleName; + } + + return LimitedLcidToLocaleNameMapping(this.lcid); + } + + /// + /// As a workaround for systems that do not have LCID support, we will convert a VERY limited number of + /// LCIDs to locale names. + /// + /// A locale identifier. + /// A BCP-47 style locale name. + internal static string LimitedLcidToLocaleNameMapping(int lcid) + { + string locale; + LcidToLocales.TryGetValue(lcid, out locale); + return locale; + } + + /// + /// Gets the native version of this object. + /// + /// The native version of this object. + internal NATIVE_UNICODEINDEX2 GetNativeUnicodeIndex2() + { + if (this.lcid != 0 && !LcidToLocales.ContainsKey(this.lcid)) + { + throw new ArgumentException("lcid was specified, but this version of the API does not accept LCIDs. Use a locale name or a different API."); + } + + ////szLocaleName is converted at pinvoke time. + var native = new NATIVE_UNICODEINDEX2 + { + dwMapFlags = this.dwMapFlags, + }; + return native; + } + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/EsentInterop/jet_wrn.cs b/WelsonJS.Toolkit/EsentInterop/jet_wrn.cs new file mode 100644 index 0000000..ff12406 --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/jet_wrn.cs @@ -0,0 +1,288 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System.Diagnostics.CodeAnalysis; + + /// + /// ESENT warning codes. + /// + [SuppressMessage( + "Microsoft.StyleCop.CSharp.DocumentationRules", + "SA1629:DocumentationTextMustEndWithAPeriod", + Justification = "Auto-generated comments.")] + [SuppressMessage( + "Microsoft.StyleCop.CSharp.DocumentationRules", + "SA1628:DocumentationTextMustBeginWithACapitalLetter", + Justification = "Auto-generated comments.")] + public enum JET_wrn + { + /// + /// Successful operation. + /// + Success = 0, + + #region Warnings + + /// + /// The version store is still active + /// + RemainingVersions = 321, + + /// + /// seek on non-unique index yielded a unique key + /// + UniqueKey = 345, + + /// + /// Column is a separated long-value + /// + SeparateLongValue = 406, + + /// + /// No more records to stream + /// + NoMoreRecords = 428, + + /// + /// Existing log file has bad signature + /// + ExistingLogFileHasBadSignature = 558, + + /// + /// Existing log file is not contiguous + /// + ExistingLogFileIsNotContiguous = 559, + + /// + /// INTERNAL ERROR + /// + SkipThisRecord = 564, + + /// + /// TargetInstance specified for restore is running + /// + TargetInstanceRunning = 578, + + /// + /// One or more logs that were committed to this database, were not recovered. The database is still clean/consistent, as though the lost log's transactions were committed lazily (and lost). + /// + CommittedLogFilesLost = 585, + + /// + /// One or more logs that were committed to this database, were no recovered. The database is still clean/consistent, as though the corrupted log's transactions were committed lazily (and lost). + /// + CommittedLogFilesRemoved = 587, + + /// + /// Signal used by clients to indicate JetInit() finished with undo + /// + FinishWithUndo = 588, + + /// + /// Database corruption has been repaired + /// + DatabaseRepaired = 595, + + /// + /// Column is NULL-valued + /// + ColumnNull = 1004, + + /// + /// Buffer too small for data + /// + BufferTruncated = 1006, + + /// + /// Database is already attached + /// + DatabaseAttached = 1007, + + /// + /// Sort does not fit in memory + /// + SortOverflow = 1009, + + /// + /// Exact match not found during seek + /// + SeekNotEqual = 1039, + + /// + /// No extended error information + /// + NoErrorInfo = 1055, + + /// + /// No idle activity occurred + /// + NoIdleActivity = 1058, + + /// + /// No write lock at transaction level 0 + /// + NoWriteLock = 1067, + + /// + /// Column set to NULL-value + /// + ColumnSetNull = 1068, + + /// + /// Database file could not be shrunk because there is not enough internal free space available or there is unmovable data present. + /// + ShrinkNotPossible = 1122, + + /// + /// Warning code DTC callback should return if the specified transaction is to be committed + /// + DTCCommitTransaction = 1163, + + /// + /// Warning code DTC callback should return if the specified transaction is to be rolled back + /// + DTCRollbackTransaction = 1164, + + /// + /// Opened an empty table + /// + TableEmpty = 1301, + + /// + /// System cleanup has a cursor open on the table + /// + TableInUseBySystem = 1327, + + /// + /// Out of date index removed + /// + CorruptIndexDeleted = 1415, + + /// + /// The Primary index is created with an incompatible OS sort version. The table can not be safely modified. + /// + PrimaryIndexOutOfDate = 1417, + + /// + /// One or more Secondary index is created with an incompatible OS sort version. Any index over Unicode text should be deleted. + /// + SecondaryIndexOutOfDate = 1418, + + /// + /// Max length too big, truncated + /// + ColumnMaxTruncated = 1512, + + /// + /// Single instance column bursted + /// + CopyLongValue = 1520, + + /// + /// RetrieveTaggedColumnList ran out of copy buffer before retrieving all tagged columns + /// + TaggedColumnsRemaining = 1523, + + /// + /// Column value(s) not returned because the corresponding column id or itagSequence requested for enumeration was null + /// + ColumnSkipped = 1531, + + /// + /// Column value(s) not returned because they could not be reconstructed from the data at hand + /// + ColumnNotLocal = 1532, + + /// + /// Column values exist that were not requested for enumeration + /// + ColumnMoreTags = 1533, + + /// + /// Column value truncated at the requested size limit during enumeration + /// + ColumnTruncated = 1534, + + /// + /// Column values exist but were not returned by request + /// + ColumnPresent = 1535, + + /// + /// Column value returned in JET_COLUMNENUM as a result of JET_bitEnumerateCompressOutput + /// + ColumnSingleValue = 1536, + + /// + /// Column value(s) not returned because they were set to their default value(s) and JET_bitEnumerateIgnoreDefault was specified + /// + ColumnDefault = 1537, + + /// + /// Column value(s) not returned because they could not be reconstructed from the data in the record + /// + ColumnNotInRecord = 1539, + + /// + /// Column value returned as a reference because it could not be reconstructed from the data in the record + /// + ColumnReference = 1541, + + /// + /// Data has changed + /// + DataHasChanged = 1610, + + /// + /// Moved to new key + /// + KeyChanged = 1618, + + /// + /// Database file is read only + /// + FileOpenReadOnly = 1813, + + /// + /// Idle registry full + /// + IdleFull = 1908, + + /// + /// Online defrag already running on specified database + /// + DefragAlreadyRunning = 2000, + + /// + /// Online defrag not running on specified database + /// + DefragNotRunning = 2001, + + /// + /// JetDatabaseScan already running on specified database + /// + DatabaseScanAlreadyRunning = 2002, + + /// + /// JetDatabaseScan not running on specified database + /// + DatabaseScanNotRunning = 2003, + + /// + /// Unregistered a non-existent callback function + /// + CallbackNotRegistered = 2100, + + /// + /// The log data provided jumped to the next log suddenly, we have deleted the incomplete log file as a precautionary measure + /// + PreviousLogFileIncomplete = 2602, + + #endregion + } +} diff --git a/WelsonJS.Toolkit/EsentInterop/objectinfogrbit.cs b/WelsonJS.Toolkit/EsentInterop/objectinfogrbit.cs new file mode 100644 index 0000000..5b8aedc --- /dev/null +++ b/WelsonJS.Toolkit/EsentInterop/objectinfogrbit.cs @@ -0,0 +1,32 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) Microsoft Corporation. +// +//----------------------------------------------------------------------- + +namespace Microsoft.Isam.Esent.Interop +{ + using System; + + /// + /// Table options, used in . + /// + [Flags] + public enum ObjectInfoGrbit + { + /// + /// The table can have bookmarks. + /// + Bookmark = 0x1, + + /// + /// The table can be rolled back. + /// + Rollback = 0x2, + + /// + /// The table can be updated. + /// + Updatable = 0x4, + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/WelsonJS.Esent/Column.cs b/WelsonJS.Toolkit/WelsonJS.Esent/Column.cs new file mode 100644 index 0000000..a5274ba --- /dev/null +++ b/WelsonJS.Toolkit/WelsonJS.Esent/Column.cs @@ -0,0 +1,76 @@ +// Column.cs (WelsonJS.Esent) +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2025 Namhyeon Go, Catswords OSS and WelsonJS Contributors +// https://github.com/gnh1201/welsonjs +// +using System; +using System.Text; +using Microsoft.Isam.Esent.Interop; + +namespace WelsonJS.Esent +{ + public class Column + { + public string Name { get; set; } + public JET_coltyp Type { get; set; } + public int MaxSize { get; set; } + public JET_CP CodePage { get; set; } + public bool IsPrimaryKey { get; set; } = false; + + public override string ToString() + { + return Name; + } + + public static explicit operator string(Column c) + { + return c.ToString(); + } + + public Column(string name, JET_coltyp type, int maxSize = 0, JET_CP codePage = JET_CP.None) + { + Name = name; + Type = type; + MaxSize = maxSize; + CodePage = codePage == JET_CP.None ? + JET_CP.Unicode : codePage; + } + + public Column(string name, Type dotNetType, int maxSize = 0, Encoding encoding = null) + { + Name = name; + Type = GetJetColtypFromType(dotNetType); + MaxSize = maxSize; + CodePage = GetJetCpFromEncoding(encoding ?? Encoding.Unicode); + } + + private static JET_coltyp GetJetColtypFromType(Type type) + { + if (type == typeof(string)) return JET_coltyp.Text; + if (type == typeof(int)) return JET_coltyp.Long; + if (type == typeof(long)) return JET_coltyp.Currency; + if (type == typeof(bool)) return JET_coltyp.Bit; + if (type == typeof(float)) return JET_coltyp.IEEESingle; + if (type == typeof(double)) return JET_coltyp.IEEEDouble; + if (type == typeof(DateTime)) return JET_coltyp.DateTime; + if (type == typeof(byte[])) return JET_coltyp.LongBinary; + + throw new NotSupportedException($"Unsupported .NET type: {type.FullName}"); + } + + private static JET_CP GetJetCpFromEncoding(Encoding encoding) + { + if (encoding == Encoding.Unicode) return JET_CP.Unicode; + if (encoding == Encoding.ASCII) return JET_CP.ASCII; + if (encoding.CodePage == 1252) return (JET_CP)1252; // Windows-1252 / Latin1 + if (encoding.CodePage == 51949) return (JET_CP)51949; // EUC-KR + if (encoding.CodePage == 949) return (JET_CP)949; // UHC (Windows Korean) + if (encoding.CodePage == 932) return (JET_CP)932; // Shift-JIS (Japanese) + if (encoding.CodePage == 936) return (JET_CP)936; // GB2312 (Simplified Chinese) + if (encoding.CodePage == 65001) return (JET_CP)65001; // UTF-8 + if (encoding.CodePage == 28591) return (JET_CP)28591; // ISO-8859-1 + + throw new NotSupportedException($"Unsupported encoding: {encoding.WebName} (code page {encoding.CodePage})"); + } + } +} diff --git a/WelsonJS.Toolkit/WelsonJS.Esent/DataStore.cs b/WelsonJS.Toolkit/WelsonJS.Esent/DataStore.cs new file mode 100644 index 0000000..0842913 --- /dev/null +++ b/WelsonJS.Toolkit/WelsonJS.Esent/DataStore.cs @@ -0,0 +1,423 @@ +// DataStore.cs (WelsonJS.Esent) +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2025 Namhyeon Go, Catswords OSS and WelsonJS Contributors +// https://github.com/gnh1201/welsonjs +// +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.IO; +using System.Linq; +using System.Text; +using Microsoft.Isam.Esent.Interop; + +namespace WelsonJS.Esent +{ + public class DataStore : IDisposable + { + private const string _primaryKeyindexName = "primary"; + private const string _indexNamePrefix = "idx_"; + + private static readonly object _lock = new object(); + private static bool _initialized = false; + private static Instance _instance; + private static string _workingDirectory; + private static string _filePath; + + private readonly Session _session; + private readonly JET_DBID _dbid; + private readonly Schema _schema; + private readonly Column _primaryKey; + private readonly Dictionary _columnIds; + + public DataStore(Schema schema, string workingDirectory) + { + _primaryKey = schema.PrimaryKey; + + if (schema == null) + throw new ArgumentNullException(nameof(schema)); + + if (_primaryKey == null) + throw new ArgumentNullException(); + + if (!schema.Columns.Exists(c => c == _primaryKey)) + throw new ArgumentException($"Primary key '{_primaryKey.Name}' is not in schema."); + + _workingDirectory = workingDirectory; + _schema = schema; + _columnIds = new Dictionary(StringComparer.OrdinalIgnoreCase); + + InitializeInstance(); + + _session = new Session(_instance); + + if (!File.Exists(_filePath)) + { + Api.JetCreateDatabase(_session, _filePath, null, out _dbid, CreateDatabaseGrbit.None); + CreateTable(_schema); + } + else + { + Api.JetAttachDatabase(_session, _filePath, AttachDatabaseGrbit.None); + Api.JetOpenDatabase(_session, _filePath, null, out _dbid, OpenDatabaseGrbit.None); + } + + CacheColumns(); + } + + private static void InitializeInstance() + { + if (_initialized) return; + + lock (_lock) + { + if (_initialized) return; + + // set the file path + _filePath = Path.Combine(_workingDirectory, "metadata.edb"); + + // config the instance + _instance = new Instance("WelsonJS.Launcher.MetadataStore"); + _instance.Parameters.SystemDirectory = _workingDirectory; + _instance.Parameters.LogFileDirectory = _workingDirectory; + _instance.Parameters.TempDirectory = _workingDirectory; + + // initialize the instance + _instance.Init(); + _initialized = true; + } + } + + private void CreateTable(Schema schema) + { + Api.JetBeginTransaction(_session); + JET_TABLEID tableid; + Api.JetCreateTable(_session, _dbid, schema.TableName, 0, 100, out tableid); + + foreach (var col in schema.Columns) + { + var coldef = new JET_COLUMNDEF + { + coltyp = col.Type, + cbMax = col.MaxSize, + cp = col.CodePage + }; + Api.JetAddColumn(_session, tableid, col.Name, coldef, null, 0, out _); + } + + CreateIndex(tableid, new[] { _primaryKey }, CreateIndexGrbit.IndexPrimary | CreateIndexGrbit.IndexUnique); + + Api.JetCloseTable(_session, tableid); + Api.JetCommitTransaction(_session, CommitTransactionGrbit.None); + } + + public void CreateIndex(JET_TABLEID tableid, IEnumerable columns, CreateIndexGrbit grbit) + { + if (columns == null) + throw new ArgumentNullException(nameof(columns)); + + var columnList = columns.ToList(); + if (columnList.Count == 0) + throw new ArgumentException("At least one column is required to create an index.", nameof(columns)); + + if (tableid == JET_TABLEID.Nil) + throw new ArgumentException("Invalid table ID.", nameof(tableid)); + + bool isPrimaryKeyIndex = (columnList.Count == 1 && columnList[0].IsPrimaryKey); + + if (isPrimaryKeyIndex && (grbit & CreateIndexGrbit.IndexPrimary) == 0) + throw new ArgumentException("Primary key index must have the CreateIndexGrbit.IndexPrimary flag set.", nameof(grbit)); + + string indexName = isPrimaryKeyIndex + ? _primaryKeyindexName + : _indexNamePrefix + string.Join("_", columnList.Select(c => c.Name)); + + string key = string.Concat(columnList.Select(c => "+" + c.Name)); + string keyDescription = key + "\0\0"; // double null-terminated + int keyDescriptionLength = keyDescription.Length; + + Api.JetCreateIndex( + _session, + tableid, + indexName, + grbit, + keyDescription, + keyDescriptionLength, + 100 + ); + } + + private void CacheColumns() + { + using (var table = new Table(_session, _dbid, _schema.TableName, OpenTableGrbit.ReadOnly)) + { + foreach (var col in _schema.Columns) + { + try + { + JET_COLUMNID colid = Api.GetTableColumnid(_session, table, col.Name); + _columnIds[col.Name] = colid; + } + catch (EsentColumnNotFoundException) + { + Trace.TraceWarning($"Column '{col.Name}' not found."); + } + } + } + } + + public bool Insert(Dictionary values, out object key) + { + return TrySaveRecord(values, JET_prep.Insert, expectSeek: false, out key); + } + + public bool Update(Dictionary values) + { + return TrySaveRecord(values, JET_prep.Replace, expectSeek: true, out _); + } + + private bool TrySaveRecord( + Dictionary values, + JET_prep prepType, + bool expectSeek, + out object primaryKeyValue) + { + primaryKeyValue = null; + + if (!TryGetPrimaryKeyValue(values, out var keyValue)) + return false; + + var keyType = _primaryKey.Type; + + using (var table = new Table(_session, _dbid, _schema.TableName, OpenTableGrbit.Updatable)) + { + try + { + Api.JetBeginTransaction(_session); + + Api.JetSetCurrentIndex(_session, table, _primaryKeyindexName); + MakeKeyByType(keyValue, keyType, _session, table); + bool found = Api.TrySeek(_session, table, SeekGrbit.SeekEQ); + + if (expectSeek != found) + { + Trace.TraceWarning($"[ESENT] Operation skipped. Seek result = {found}, expected = {expectSeek}"); + Api.JetRollback(_session, RollbackTransactionGrbit.None); + return false; + } + + Api.JetPrepareUpdate(_session, table, prepType); + SetAllColumns(values, table); + + Api.JetUpdate(_session, table); + Api.JetCommitTransaction(_session, CommitTransactionGrbit.None); + + if (prepType == JET_prep.Insert) + primaryKeyValue = keyValue; + + return true; + } + catch (Exception ex) + { + Api.JetRollback(_session, RollbackTransactionGrbit.None); + throw new InvalidOperationException($"[ESENT] Operation failed: {ex.Message}"); + } + } + } + + public Dictionary FindById(object keyValue) + { + var result = new Dictionary(); + var keyType = _primaryKey.Type; + + using (var table = new Table(_session, _dbid, _schema.TableName, OpenTableGrbit.ReadOnly)) + { + Api.JetSetCurrentIndex(_session, table, _primaryKeyindexName); + MakeKeyByType(keyValue, keyType, _session, table); + if (!Api.TrySeek(_session, table, SeekGrbit.SeekEQ)) + return null; + + foreach (var col in _schema.Columns) + { + if (!_columnIds.TryGetValue(col.Name, out var colid)) + continue; + + var value = RetrieveColumnByType(_session, table, colid, col.Type); + result[col.Name] = value; + } + } + + return result; + } + + public List> FindAll() + { + var results = new List>(); + + using (var table = new Table(_session, _dbid, _schema.TableName, OpenTableGrbit.ReadOnly)) + { + Api.JetSetCurrentIndex(_session, table, _primaryKeyindexName); + + if (!Api.TryMoveFirst(_session, table)) + return results; + + do + { + var row = new Dictionary(); + foreach (var col in _schema.Columns) + { + if (!_columnIds.TryGetValue(col.Name, out var colid)) + continue; + + var value = RetrieveColumnByType(_session, table, colid, col.Type); + row[col.Name] = value; + } + results.Add(row); + } + while (Api.TryMoveNext(_session, table)); + } + + return results; + } + + public bool DeleteById(object keyValue) + { + var keyType = _primaryKey.Type; + + using (var table = new Table(_session, _dbid, _schema.TableName, OpenTableGrbit.Updatable)) + { + Api.JetSetCurrentIndex(_session, table, _primaryKeyindexName); + MakeKeyByType(keyValue, keyType, _session, table); + if (!Api.TrySeek(_session, table, SeekGrbit.SeekEQ)) + return false; + + Api.JetDelete(_session, table); + return true; + } + } + + private object RetrieveColumnByType(Session session, Table table, JET_COLUMNID columnId, JET_coltyp type) + { + switch (type) + { + case JET_coltyp.Text: + return Api.RetrieveColumnAsString(session, table, columnId, Encoding.Unicode); + case JET_coltyp.Long: + return Api.RetrieveColumnAsInt32(session, table, columnId); + case JET_coltyp.IEEEDouble: + return Api.RetrieveColumnAsDouble(session, table, columnId); + case JET_coltyp.DateTime: + return Api.RetrieveColumnAsDateTime(session, table, columnId); + case JET_coltyp.Binary: + case JET_coltyp.LongBinary: + return Api.RetrieveColumn(session, table, columnId); + default: + Trace.TraceWarning($"[ESENT] Unsupported RetrieveColumn type: {type}"); + return null; + } + } + + private bool TryGetPrimaryKeyValue(Dictionary values, out object keyValue) + { + keyValue = null; + + if (!values.TryGetValue(_primaryKey.Name, out keyValue)) + { + Trace.TraceWarning($"[ESENT] Missing primary key '{_primaryKey.Name}'."); + return false; + } + + if (keyValue == null) + { + Trace.TraceWarning("[ESENT] Primary key value cannot be null."); + return false; + } + + return true; + } + + private JET_coltyp GetColumnType(string columnName) + { + var column = _schema.Columns.FirstOrDefault(c => c.Name == columnName); + if (column == null) + throw new ArgumentException($"Column '{columnName}' not found in schema."); + + return column.Type; + } + + private void SetAllColumns(Dictionary values, Table table) + { + foreach (var kv in values) + { + if (!_columnIds.TryGetValue(kv.Key, out var colid)) + { + Trace.TraceWarning($"[ESENT] Column '{kv.Key}' not found in cache."); + continue; + } + + var colType = GetColumnType(kv.Key); + SetColumnByType(_session, table, colid, kv.Value, colType); + } + } + + private void SetColumnByType(Session session, Table table, JET_COLUMNID columnId, object value, JET_coltyp type) + { + if (value == null) + return; + + switch (type) + { + case JET_coltyp.Text: + Api.SetColumn(session, table, columnId, value.ToString(), Encoding.Unicode); + break; + case JET_coltyp.Long: + Api.SetColumn(session, table, columnId, Convert.ToInt32(value)); + break; + case JET_coltyp.IEEEDouble: + Api.SetColumn(session, table, columnId, Convert.ToDouble(value)); + break; + case JET_coltyp.DateTime: + Api.SetColumn(session, table, columnId, Convert.ToDateTime(value)); + break; + case JET_coltyp.Binary: + case JET_coltyp.LongBinary: + Api.SetColumn(session, table, columnId, (byte[])value); + break; + default: + Trace.TraceWarning($"[ESENT] Unsupported SetColumn type: {type}"); + break; + } + } + + private void MakeKeyByType(object value, JET_coltyp type, Session session, Table table) + { + switch (type) + { + case JET_coltyp.Text: + Api.MakeKey(session, table, value.ToString(), Encoding.Unicode, MakeKeyGrbit.NewKey); + break; + case JET_coltyp.Long: + Api.MakeKey(session, table, Convert.ToInt32(value), MakeKeyGrbit.NewKey); + break; + case JET_coltyp.IEEEDouble: + Api.MakeKey(session, table, Convert.ToDouble(value), MakeKeyGrbit.NewKey); + break; + case JET_coltyp.DateTime: + Api.MakeKey(session, table, Convert.ToDateTime(value), MakeKeyGrbit.NewKey); + break; + case JET_coltyp.Binary: + case JET_coltyp.LongBinary: + Api.MakeKey(session, table, (byte[])value, MakeKeyGrbit.NewKey); + break; + default: + Trace.TraceWarning($"[ESENT] Unsupported MakeKey type: {type}"); + break; + } + } + + public void Dispose() + { + _session?.Dispose(); + } + } +} diff --git a/WelsonJS.Toolkit/WelsonJS.Esent/LICENSE b/WelsonJS.Toolkit/WelsonJS.Esent/LICENSE new file mode 100644 index 0000000..79b41a4 --- /dev/null +++ b/WelsonJS.Toolkit/WelsonJS.Esent/LICENSE @@ -0,0 +1,7 @@ +Copyright 2025 Namhyeon Go, Catswords OSS and WelsonJS Contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/WelsonJS.Toolkit/WelsonJS.Esent/Schema.cs b/WelsonJS.Toolkit/WelsonJS.Esent/Schema.cs new file mode 100644 index 0000000..66b3ea1 --- /dev/null +++ b/WelsonJS.Toolkit/WelsonJS.Esent/Schema.cs @@ -0,0 +1,42 @@ +// Schema.cs (WelsonJS.Esent) +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2025 Namhyeon Go, Catswords OSS and WelsonJS Contributors +// https://github.com/gnh1201/welsonjs +// +using System; +using System.Collections.Generic; + +namespace WelsonJS.Esent +{ + public class Schema + { + public string TableName { get; set; } + public List Columns { get; set; } + public Column PrimaryKey + { + get + { + return Columns.Find(c => c.IsPrimaryKey) ?? null; + } + } + + public Schema(string tableName, List columns) + { + TableName = tableName; + Columns = columns ?? new List(); + } + + public void SetPrimaryKey(string columnName) + { + Column column = Columns.Find(c => c.Name.Equals(columnName, StringComparison.OrdinalIgnoreCase)); + if (column != null) + { + column.IsPrimaryKey = true; + } + else + { + throw new ArgumentException($"Column '{columnName}' does not exist in schema '{TableName}'."); + } + } + } +} \ No newline at end of file diff --git a/WelsonJS.Toolkit/WelsonJS.Esent/WelsonJS.Esent.csproj b/WelsonJS.Toolkit/WelsonJS.Esent/WelsonJS.Esent.csproj new file mode 100644 index 0000000..480cb78 --- /dev/null +++ b/WelsonJS.Toolkit/WelsonJS.Esent/WelsonJS.Esent.csproj @@ -0,0 +1,13 @@ + + + + netstandard2.0 + AnyCPU;x86 + WelsonJS.Esent + + + + + + + diff --git a/WelsonJS.Toolkit/WelsonJS.Launcher/InstancesForm.Designer.cs b/WelsonJS.Toolkit/WelsonJS.Launcher/InstancesForm.Designer.cs index 042b0d0..46cfbf4 100644 --- a/WelsonJS.Toolkit/WelsonJS.Launcher/InstancesForm.Designer.cs +++ b/WelsonJS.Toolkit/WelsonJS.Launcher/InstancesForm.Designer.cs @@ -15,6 +15,7 @@ { if (disposing && (components != null)) { + _dataStore?.Dispose(); // dispose the database session components.Dispose(); } base.Dispose(disposing); diff --git a/WelsonJS.Toolkit/WelsonJS.Launcher/InstancesForm.cs b/WelsonJS.Toolkit/WelsonJS.Launcher/InstancesForm.cs index fcbcbb0..5b9c07d 100644 --- a/WelsonJS.Toolkit/WelsonJS.Launcher/InstancesForm.cs +++ b/WelsonJS.Toolkit/WelsonJS.Launcher/InstancesForm.cs @@ -4,82 +4,112 @@ // https://github.com/gnh1201/welsonjs // using System; +using System.Collections.Generic; +using System.Diagnostics; using System.IO; using System.Threading.Tasks; using System.Windows.Forms; +using WelsonJS.Esent; namespace WelsonJS.Launcher { public partial class InstancesForm : Form { - private string entryFileName; - private string scriptName; - private const string timestampFormat = "yyyy-MM-dd HH:mm:ss"; + private string _entryFileName; + private string _scriptName; + private readonly string _dateTimeFormat; + private readonly DataStore _dataStore; public InstancesForm() { InitializeComponent(); - entryFileName = "bootstrap.bat"; + // set the datetime format + _dateTimeFormat = Program.GetAppConfig("DateTimeFormat"); + + // set the entry file name to run the instance + _entryFileName = "bootstrap.bat"; + + // connect the database to manage an instances + Schema schema = new Schema("Instances", new List + { + new Column("InstanceId", typeof(string), 255), + new Column("FirstDeployTime", typeof(DateTime), 1) + }); + schema.SetPrimaryKey("InstanceId"); + _dataStore = new DataStore(schema, Program.GetAppDataPath()); + } + + public DataStore GetDataStore() + { + return _dataStore; } private void InstancesForm_Load(object sender, EventArgs e) { lvInstances.Items.Clear(); - LoadInstances(Program.GetAppDataPath()); - LoadInstances(Path.GetTempPath()); + LoadInstances(); } - private void LoadInstances(string instancesRoot) + private void LoadInstances() { - if (!Directory.Exists(instancesRoot)) - return; - - foreach (string dir in Directory.GetDirectories(instancesRoot)) + var instances = _dataStore.FindAll(); + foreach (var instance in instances) { - string timestampFile = Path.Combine(dir, ".welsonjs_first_deploy_time"); - string entryScriptFile = Path.Combine(dir, "app.js"); - string firstDeployTime = null; + try + { + string instanceId = instance["InstanceId"].ToString(); + string firstDeployTime = instance.ContainsKey("FirstDeployTime") + ? ((DateTime)instance["FirstDeployTime"]).ToString(_dateTimeFormat) + : "Unknown"; - if (File.Exists(timestampFile) - && DateTime.TryParse(File.ReadAllText(timestampFile).Trim(), out DateTime parsedTimestamp)) - { - firstDeployTime = parsedTimestamp.ToString(timestampFormat); - } - else if (File.Exists(entryScriptFile)) - { - firstDeployTime = File.GetCreationTime(entryScriptFile).ToString(timestampFormat); - } - - if (firstDeployTime != null) - { lvInstances.Items.Add(new ListViewItem(new[] { - Path.GetFileName(dir), + instanceId, firstDeployTime }) { - Tag = dir + Tag = ResolveWorkingDirectory(instanceId) }); } + catch (Exception ex) + { + Trace.TraceWarning(ex.Message); + } } } + private string ResolveWorkingDirectory(string instanceId) + { + string workingDirectory = Program.GetWorkingDirectory(instanceId, true); + + if (!Directory.Exists(workingDirectory)) + { + workingDirectory = Path.Combine(Path.GetTempPath(), instanceId); + } + + if (!Directory.Exists(workingDirectory)) + { + throw new DirectoryNotFoundException($"Working directory for instance '{instanceId}' does not exist: {workingDirectory}"); + } + + return workingDirectory; + } + private void btnStart_Click(object sender, EventArgs e) { if (lvInstances.SelectedItems.Count > 0) { - scriptName = txtUseSpecificScript.Text; + _scriptName = txtUseSpecificScript.Text; - string instanceId = lvInstances.SelectedItems[0].Text; - string workingDirectory = Program.GetWorkingDirectory(instanceId, true); + string workingDirectory = (string)lvInstances.SelectedItems[0].Tag; Task.Run(() => { try { // Run the appliction - Program.RunCommandPrompt(workingDirectory, entryFileName, scriptName, cbUseSpecificScript.Checked, cbInteractiveServiceApp.Checked); + Program.RunCommandPrompt(workingDirectory, _entryFileName, _scriptName, cbUseSpecificScript.Checked, cbInteractiveServiceApp.Checked); } catch (Exception ex) { @@ -95,24 +125,25 @@ namespace WelsonJS.Launcher private void btnDelete_Click(object sender, EventArgs e) { - if (lvInstances.SelectedItems.Count > 0) + var selectedItems = lvInstances.SelectedItems; + + if (selectedItems.Count > 0) { - string instanceId = lvInstances.SelectedItems[0].Text; - string workingDirectory = Program.GetWorkingDirectory(instanceId, false); + string workingDirectory = (string)selectedItems[0].Tag; + string instanceId = selectedItems[0].SubItems[0].Text; - if (!Directory.Exists(workingDirectory)) - { - workingDirectory = Path.Combine(Path.GetTempPath(), instanceId); - } - - if (Directory.Exists(workingDirectory)) + try { Directory.Delete(workingDirectory, true); - - lvInstances.Items.Clear(); - LoadInstances(Program.GetAppDataPath()); - LoadInstances(Path.GetTempPath()); + _dataStore.DeleteById(instanceId); } + catch (Exception ex) + { + Trace.TraceError(ex.Message); + } + + lvInstances.Items.Clear(); + LoadInstances(); } else { @@ -124,8 +155,7 @@ namespace WelsonJS.Launcher { if (lvInstances.SelectedItems.Count > 0) { - string instanceId = lvInstances.SelectedItems[0].Text; - string workingDirectory = Program.GetWorkingDirectory(instanceId, true); + string workingDirectory = (string)lvInstances.SelectedItems[0].Tag; if (Directory.Exists(workingDirectory)) { diff --git a/WelsonJS.Toolkit/WelsonJS.Launcher/MainForm.cs b/WelsonJS.Toolkit/WelsonJS.Launcher/MainForm.cs index 98b2be8..6fb6aa7 100644 --- a/WelsonJS.Toolkit/WelsonJS.Launcher/MainForm.cs +++ b/WelsonJS.Toolkit/WelsonJS.Launcher/MainForm.cs @@ -4,6 +4,7 @@ // https://github.com/gnh1201/welsonjs // using System; +using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.IO.Compression; @@ -15,14 +16,17 @@ namespace WelsonJS.Launcher { public partial class MainForm : Form { - private string workingDirectory; - private string instanceId; - private readonly string entryFileName; - private string scriptName; + private const string _entryFileName = "bootstrap.bat"; + + private readonly string _dateTimeFormat; + + private string _workingDirectory; + private string _instanceId; + private string _scriptName; public MainForm() { - entryFileName = "bootstrap.bat"; + _dateTimeFormat = Program.GetAppConfig("DateTimeFormat"); InitializeComponent(); @@ -123,29 +127,29 @@ namespace WelsonJS.Launcher private void ExtractAndRun(string filePath) { - instanceId = Guid.NewGuid().ToString(); - workingDirectory = Program.GetWorkingDirectory(instanceId); - scriptName = txtUseSpecificScript.Text; + _instanceId = Guid.NewGuid().ToString(); + _workingDirectory = Program.GetWorkingDirectory(_instanceId); + _scriptName = txtUseSpecificScript.Text; try { // check if the working directory exists - if (Directory.Exists(workingDirectory)) + if (Directory.Exists(_workingDirectory)) { throw new InvalidOperationException("GUID validation failed. Directory already exists."); } // try to extract ZIP file - ZipFile.ExtractToDirectory(filePath, workingDirectory); + ZipFile.ExtractToDirectory(filePath, _workingDirectory); // record the first deploy time - RecordFirstDeployTime(workingDirectory); + RecordFirstDeployTime(_workingDirectory, _instanceId); // follow the sub-directory - workingDirectory = Program.GetWorkingDirectory(instanceId, true); + _workingDirectory = Program.GetWorkingDirectory(_instanceId, true); // Run the application - Program.RunCommandPrompt(workingDirectory, entryFileName, scriptName, cbUseSpecificScript.Checked, cbInteractiveServiceApp.Checked); + Program.RunCommandPrompt(_workingDirectory, _entryFileName, _scriptName, cbUseSpecificScript.Checked, cbInteractiveServiceApp.Checked); } catch (Exception ex) { @@ -156,18 +160,37 @@ namespace WelsonJS.Launcher SafeInvoke(() => EnableUI()); } - private void RecordFirstDeployTime(string directory) + private void RecordFirstDeployTime(string directory, string instanceId) { + // get current time + DateTime now = DateTime.Now; + + // record to the metadata database + InstancesForm instancesForm = new InstancesForm(); + try + { + instancesForm.GetDataStore().Insert(new Dictionary + { + ["InstanceId"] = instanceId, + ["FirstDeployTime"] = now + }, out _); + } + catch (Exception ex) + { + Trace.TraceError($"Failed to record first deploy time: {ex.Message}"); + } + instancesForm.Dispose(); + + // record to the instance directory try { string filePath = Path.Combine(directory, ".welsonjs_first_deploy_time"); - string text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); - + string text = now.ToString(_dateTimeFormat); File.WriteAllText(filePath, text); } catch (Exception ex) { - throw new Exception($"Failed to record first deploy time: {ex.Message}"); + Trace.TraceError($"Failed to record first deploy time: {ex.Message}"); } } @@ -242,26 +265,26 @@ namespace WelsonJS.Launcher { Program.StartResourceServer(); - if (!Program.resourceServer.IsRunning()) + if (!Program._ResourceServer.IsRunning()) { - Program.resourceServer.Start(); + Program._ResourceServer.Start(); ((ToolStripMenuItem)sender).Text = "Open the code editor..."; } else { - Program.OpenWebBrowser(Program.resourceServer.GetPrefix()); + Program.OpenWebBrowser(Program._ResourceServer.GetPrefix()); } } private void openCodeEditorToolStripMenuItem_Click(object sender, EventArgs e) { - if (Program.resourceServer == null) + if (Program._ResourceServer == null) { MessageBox.Show("A resource server is not running."); } else { - Program.OpenWebBrowser(Program.resourceServer.GetPrefix()); + Program.OpenWebBrowser(Program._ResourceServer.GetPrefix()); } } diff --git a/WelsonJS.Toolkit/WelsonJS.Launcher/Program.cs b/WelsonJS.Toolkit/WelsonJS.Launcher/Program.cs index 80de408..b796fb5 100644 --- a/WelsonJS.Toolkit/WelsonJS.Launcher/Program.cs +++ b/WelsonJS.Toolkit/WelsonJS.Launcher/Program.cs @@ -16,22 +16,25 @@ namespace WelsonJS.Launcher internal static class Program { static Mutex mutex; - public static ResourceServer resourceServer; + public static ResourceServer _ResourceServer; [STAThread] static void Main() { - mutex = new Mutex(true, "WelsonJS.Launcher.Mutex", out bool isMutexNotExists); + // create the mutex + mutex = new Mutex(true, "WelsonJS.Launcher", out bool isMutexNotExists); if (!isMutexNotExists) { MessageBox.Show("WelsonJS Launcher already running."); return; } + // draw the main form Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new MainForm()); + // destory the mutex mutex.ReleaseMutex(); mutex.Dispose(); } @@ -147,9 +150,9 @@ namespace WelsonJS.Launcher { lock(typeof(Program)) { - if (resourceServer == null) + if (_ResourceServer == null) { - resourceServer = new ResourceServer(GetAppConfig("ResourceServerPrefix"), "editor.html"); + _ResourceServer = new ResourceServer(GetAppConfig("ResourceServerPrefix"), "editor.html"); } } } diff --git a/WelsonJS.Toolkit/WelsonJS.Launcher/Properties/Resources.Designer.cs b/WelsonJS.Toolkit/WelsonJS.Launcher/Properties/Resources.Designer.cs index 034326f..c3ebefd 100644 --- a/WelsonJS.Toolkit/WelsonJS.Launcher/Properties/Resources.Designer.cs +++ b/WelsonJS.Toolkit/WelsonJS.Launcher/Properties/Resources.Designer.cs @@ -132,6 +132,15 @@ namespace WelsonJS.Launcher.Properties { } } + /// + /// yyyy-MM-dd HH:mm:ss과(와) 유사한 지역화된 문자열을 찾습니다. + /// + internal static string DateTimeFormat { + get { + return ResourceManager.GetString("DateTimeFormat", resourceCulture); + } + } + /// /// http://localhost:9222/과(와) 유사한 지역화된 문자열을 찾습니다. /// diff --git a/WelsonJS.Toolkit/WelsonJS.Launcher/Properties/Resources.resx b/WelsonJS.Toolkit/WelsonJS.Launcher/Properties/Resources.resx index 88786e0..7bf3635 100644 --- a/WelsonJS.Toolkit/WelsonJS.Launcher/Properties/Resources.resx +++ b/WelsonJS.Toolkit/WelsonJS.Launcher/Properties/Resources.resx @@ -196,4 +196,7 @@ https://api.criminalip.io/v1/ + + yyyy-MM-dd HH:mm:ss + \ No newline at end of file diff --git a/WelsonJS.Toolkit/WelsonJS.Launcher/WelsonJS.Launcher.csproj b/WelsonJS.Toolkit/WelsonJS.Launcher/WelsonJS.Launcher.csproj index 0c27148..fcfc2ee 100644 --- a/WelsonJS.Toolkit/WelsonJS.Launcher/WelsonJS.Launcher.csproj +++ b/WelsonJS.Toolkit/WelsonJS.Launcher/WelsonJS.Launcher.csproj @@ -55,6 +55,24 @@ favicon.ico + + true + bin\x64\Debug\ + DEBUG;TRACE + full + x64 + 7.3 + prompt + + + bin\x64\Release\ + TRACE + true + pdbonly + x64 + 7.3 + prompt + @@ -160,5 +178,15 @@ + + + {e929e163-52a0-4aac-917b-6d7faf70c45e} + EsentInterop + + + {783f2db2-80d0-4f58-a55e-9593e44d5743} + WelsonJS.Esent + + \ No newline at end of file diff --git a/WelsonJS.Toolkit/WelsonJS.Launcher/app.config b/WelsonJS.Toolkit/WelsonJS.Launcher/app.config index a9f7f58..3e9cad8 100644 --- a/WelsonJS.Toolkit/WelsonJS.Launcher/app.config +++ b/WelsonJS.Toolkit/WelsonJS.Launcher/app.config @@ -17,6 +17,7 @@ + diff --git a/WelsonJS.Toolkit/WelsonJS.Toolkit.sln b/WelsonJS.Toolkit/WelsonJS.Toolkit.sln index 8422f8c..b079305 100644 --- a/WelsonJS.Toolkit/WelsonJS.Toolkit.sln +++ b/WelsonJS.Toolkit/WelsonJS.Toolkit.sln @@ -9,6 +9,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WelsonJS.Service", "WelsonJ EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WelsonJS.Launcher", "WelsonJS.Launcher\WelsonJS.Launcher.csproj", "{4074D413-195C-45E9-9E63-0D07914187B8}" EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EsentInterop", "EsentInterop\EsentInterop.csproj", "{E929E163-52A0-4AAC-917B-6D7FAF70C45E}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WelsonJS.Esent", "WelsonJS.Esent\WelsonJS.Esent.csproj", "{783F2DB2-80D0-4F58-A55E-9593E44D5743}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -41,6 +45,22 @@ Global {4074D413-195C-45E9-9E63-0D07914187B8}.Release|Any CPU.Build.0 = Release|Any CPU {4074D413-195C-45E9-9E63-0D07914187B8}.Release|x86.ActiveCfg = Release|x86 {4074D413-195C-45E9-9E63-0D07914187B8}.Release|x86.Build.0 = Release|x86 + {E929E163-52A0-4AAC-917B-6D7FAF70C45E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E929E163-52A0-4AAC-917B-6D7FAF70C45E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E929E163-52A0-4AAC-917B-6D7FAF70C45E}.Debug|x86.ActiveCfg = Debug|x86 + {E929E163-52A0-4AAC-917B-6D7FAF70C45E}.Debug|x86.Build.0 = Debug|x86 + {E929E163-52A0-4AAC-917B-6D7FAF70C45E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E929E163-52A0-4AAC-917B-6D7FAF70C45E}.Release|Any CPU.Build.0 = Release|Any CPU + {E929E163-52A0-4AAC-917B-6D7FAF70C45E}.Release|x86.ActiveCfg = Release|x86 + {E929E163-52A0-4AAC-917B-6D7FAF70C45E}.Release|x86.Build.0 = Release|x86 + {783F2DB2-80D0-4F58-A55E-9593E44D5743}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {783F2DB2-80D0-4F58-A55E-9593E44D5743}.Debug|Any CPU.Build.0 = Debug|Any CPU + {783F2DB2-80D0-4F58-A55E-9593E44D5743}.Debug|x86.ActiveCfg = Debug|x86 + {783F2DB2-80D0-4F58-A55E-9593E44D5743}.Debug|x86.Build.0 = Debug|x86 + {783F2DB2-80D0-4F58-A55E-9593E44D5743}.Release|Any CPU.ActiveCfg = Release|Any CPU + {783F2DB2-80D0-4F58-A55E-9593E44D5743}.Release|Any CPU.Build.0 = Release|Any CPU + {783F2DB2-80D0-4F58-A55E-9593E44D5743}.Release|x86.ActiveCfg = Release|Any CPU + {783F2DB2-80D0-4F58-A55E-9593E44D5743}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE