Example #1
0
        /// <summary>
        /// Gets extended information about an error.
        /// </summary>
        /// <param name="error">The error code about which to retrieve information.</param>
        /// <param name="errinfo">Information about the specified error code.</param>
        /// <returns>An error code.</returns>
        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);
        }
Example #2
0
        public void ConvertErrorInfoToNativeAndBackIsLossless()
        {
            var nativeTemp    = this.managed.GetNativeErrInfo();
            var managedActual = new JET_ERRINFOBASIC();

            managedActual.SetFromNative(ref nativeTemp);

            Assert.IsTrue(managedActual.ContentEquals(this.managed));
            Assert.IsFalse(managedActual.ContentEquals(null));
        }
        public void JetErrinfobasicToString()
        {
            var errorinfobasic = new JET_ERRINFOBASIC()
            {
                errValue       = JET_err.ReadVerifyFailure,
                errcat         = JET_ERRCAT.Quota,
                rgszSourceFile = "abc.cxx",
                lSourceLine    = 93,
            };

            Assert.AreEqual("JET_ERRINFOBASIC(ReadVerifyFailure:Quota:abc.cxx:93)", errorinfobasic.ToString());
        }
Example #4
0
        public void Setup()
        {
            this.managedOriginal = new JET_ERRINFOBASIC()
            {
                errValue = JET_err.ReadVerifyFailure,
                errcat   = JET_ERRCAT.Corruption,
                rgCategoricalHierarchy = new JET_ERRCAT[] { JET_ERRCAT.Error, JET_ERRCAT.Data, JET_ERRCAT.Fragmentation, 0, 0, 0, 0, 0 },
                lSourceLine            = 42,
                rgszSourceFile         = "sourcefile.cxx",
            };

            this.native  = this.managedOriginal.GetNativeErrInfo();
            this.managed = new JET_ERRINFOBASIC();
            this.managed.SetFromNative(ref this.native);
        }
        public void VerifyErrorInfoCanBeSerialized()
        {
            var expected = new JET_ERRINFOBASIC()
            {
                errValue = JET_err.ReadVerifyFailure,
                errcat   = JET_ERRCAT.Corruption,
                rgCategoricalHierarchy = new JET_ERRCAT[] { JET_ERRCAT.Data, 0, 0, 0, 0, 0, 0, 0 },
                lSourceLine            = 42,
                rgszSourceFile         = "sourcefile.cxx",
            };

            var actual = SerializeDeserialize(expected);

            Assert.AreNotSame(expected, actual);
            Assert.AreEqual(expected.errValue, actual.errValue);
            Assert.AreEqual(expected.errcat, actual.errcat);
            Assert.AreEqual(expected.rgCategoricalHierarchy[0], actual.rgCategoricalHierarchy[0]);
            Assert.AreEqual(expected.rgCategoricalHierarchy[1], actual.rgCategoricalHierarchy[1]);
            Assert.AreEqual(expected.lSourceLine, actual.lSourceLine);
            Assert.AreEqual(expected.rgszSourceFile, actual.rgszSourceFile);
        }
        /// <summary>
        /// Gets extended information about an error.
        /// </summary>
        /// <param name="error">The error code about which to retrieve information.</param>
        /// <param name="errinfo">Information about the specified error code.</param>
        /// <returns>An error code.</returns>
        public int JetGetErrorInfo(
            JET_err error,
            out JET_ERRINFOBASIC errinfo)
        {
            TraceFunctionCall("JetGetErrorInfo");
            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;
        }
Example #7
0
 /// <summary>
 /// Gets extended information about an error.
 /// </summary>
 /// <param name="error">The error code about which to retrieve information.</param>
 /// <param name="errinfo">Information about the specified error code.</param>
 public static void JetGetErrorInfo(
     JET_err error,
     out JET_ERRINFOBASIC errinfo)
 {
     Api.Check(Api.Impl.JetGetErrorInfo(error, out errinfo));
 }