Example #1
0
 /// <summary>
 /// Sets a parameter on the provided session state, used for the lifetime of this session or until reset.
 /// </summary>
 /// <param name="sesid">The session to set the parameter on.</param>
 /// <param name="sesparamid">The ID of the session parameter to retrieve.</param>
 /// <param name="operationContext">An operation context to retrieve.</param>
 /// <seealso cref="JET_OPERATIONCONTEXT"/>
 public static void JetGetSessionParameter(
     JET_SESID sesid,
     JET_sesparam sesparamid,
     out JET_OPERATIONCONTEXT operationContext)
 {
     Api.Check(Api.Impl.JetGetSessionParameter(sesid, sesparamid, out operationContext));
 }
        public void JetOperationContextToString()
        {
            var operationContext = new JET_OPERATIONCONTEXT()
            {
                UserID        = 2,
                OperationID   = 3,
                OperationType = 4,
                ClientType    = 5,
                Flags         = 6,
            };

            Assert.AreEqual("JET_OPERATIONCONTEXT(2:3:4:5:0x06)", operationContext.ToString());
        }
        public void Setup()
        {
            this.native = new NATIVE_OPERATIONCONTEXT()
            {
                ulUserID       = Any.Int32,
                nOperationID   = Any.Byte,
                nOperationType = Any.Byte,
                nClientType    = Any.Byte,
                fFlags         = Any.Byte,
            };

            this.managed       = new JET_OPERATIONCONTEXT(ref this.native);
            this.reconstituted = this.managed.GetNativeOperationContext();
        }
Example #4
0
        public void VerifyWindows10GetOperationContextIsEmpty()
        {
            if (!EsentVersion.SupportsWindows10Features)
            {
                return;
            }

            using (var session = new Session(this.instance))
            {
                JET_OPERATIONCONTEXT operationcontext = session.GetOperationContext();

                Assert.AreEqual(int.MinValue, operationcontext.UserID);
                Assert.AreEqual(0, operationcontext.OperationID);
                Assert.AreEqual(0, operationcontext.OperationType);
                Assert.AreEqual(0, operationcontext.ClientType);
                Assert.AreEqual(0, operationcontext.Flags);
            }
        }
Example #5
0
        /// <summary>
        /// Sets a parameter on the provided session state, used for the lifetime of this session or until reset.
        /// </summary>
        /// <param name="sesid">The session to set the parameter on.</param>
        /// <param name="sesparamid">The ID of the session parameter to set.</param>
        /// <param name="operationContext">An operation context to set.</param>
        /// <returns>An error code.</returns>
        public int JetSetSessionParameter(
            JET_SESID sesid,
            JET_sesparam sesparamid,
            JET_OPERATIONCONTEXT operationContext)
        {
            TraceFunctionCall("JetSetSessionParameter");
            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));
        }
        public void VerifyJetOperationContextEquality()
        {
            var x = new JET_OPERATIONCONTEXT
            {
                UserID        = 1,
                OperationID   = 2,
                OperationType = 3,
                ClientType    = 4,
                Flags         = 5,
            };
            var y = new JET_OPERATIONCONTEXT
            {
                UserID        = 1,
                OperationID   = 2,
                OperationType = 3,
                ClientType    = 4,
                Flags         = 5,
            };

            TestEquals(x, y);
        }
Example #7
0
        public void VerifyWindows10GetOperationContextAndSetOperationContext()
        {
            if (!EsentVersion.SupportsWindows10Features)
            {
                return;
            }

            using (var session = new Session(this.instance))
            {
                JET_OPERATIONCONTEXT operationcontext = new JET_OPERATIONCONTEXT()
                {
                    UserID        = 2,
                    OperationID   = 3,
                    OperationType = 4,
                    ClientType    = 5,
                    Flags         = 6,
                };

                session.SetOperationContext(operationcontext);
                var retrieved = session.GetOperationContext();

                Assert.AreEqual(operationcontext.UserID, retrieved.UserID);
                Assert.AreEqual(operationcontext.OperationID, retrieved.OperationID);
                Assert.AreEqual(operationcontext.OperationType, retrieved.OperationType);
                Assert.AreEqual(operationcontext.ClientType, retrieved.ClientType);
                Assert.AreEqual(operationcontext.Flags, retrieved.Flags);
            }

            using (var session = new Session(this.instance))
            {
                // A new session shouldn't re-use the old value.
                var retrieved = session.GetOperationContext();

                Assert.AreEqual(int.MinValue, retrieved.UserID);
                Assert.AreEqual(0, retrieved.OperationID);
                Assert.AreEqual(0, retrieved.OperationType);
                Assert.AreEqual(0, retrieved.ClientType);
                Assert.AreEqual(0, retrieved.Flags);
            }
        }
Example #8
0
        /// <summary>
        /// Sets a parameter on the provided session state, used for the lifetime of this session or until reset.
        /// </summary>
        /// <param name="sesid">The session to set the parameter on.</param>
        /// <param name="sesparamid">The ID of the session parameter to set.</param>
        /// <param name="operationContext">An operation context to set.</param>
        /// <returns>An error code.</returns>
        public int JetGetSessionParameter(
            JET_SESID sesid,
            JET_sesparam sesparamid,
            out JET_OPERATIONCONTEXT operationContext)
        {
            TraceFunctionCall("JetGetSessionParameter");
            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));
        }
Example #9
0
        /// <summary>
        /// Sets a parameter on the provided session state, used for the lifetime of this session or until reset.
        /// </summary>
        /// <param name="sesid">The session to set the parameter on.</param>
        /// <param name="sesparamid">The ID of the session parameter to set.</param>
        /// <param name="operationContext">An operation context to set.</param>
        /// <returns>An error code.</returns>
        public int JetGetSessionParameter(
            JET_SESID sesid,
            JET_sesparam sesparamid,
            out JET_OPERATIONCONTEXT operationContext)
        {
            TraceFunctionCall("JetGetSessionParameter");
            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);
        }
Example #10
0
        /// <summary>
        /// Sets a parameter on the provided session state, used for the lifetime of this session or until reset.
        /// </summary>
        /// <param name="sesid">The session to set the parameter on.</param>
        /// <param name="sesparamid">The ID of the session parameter to set.</param>
        /// <param name="operationContext">An operation context to set.</param>
        /// <returns>An error code.</returns>
        public int JetSetSessionParameter(
            JET_SESID sesid,
            JET_sesparam sesparamid,
            JET_OPERATIONCONTEXT operationContext)
        {
            TraceFunctionCall("JetSetSessionParameter");
            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);
        }
Example #11
0
 /// <summary>
 /// A client context of type <see cref="JET_OPERATIONCONTEXT"/> that the engine uses to track
 /// and trace operations (such as IOs).
 /// </summary>
 /// <param name="session">The <see cref="Session"/> to query.</param>
 /// <param name="operationcontext">The operation context to set.</param>
 public static void SetOperationContext(
     this Session session,
     JET_OPERATIONCONTEXT operationcontext)
 {
     Windows10Api.JetSetSessionParameter(session.JetSesid, Windows10Sesparam.OperationContext, operationcontext);
 }