示例#1
0
文件: NtTimer.cs 项目: codehz/winsilo
 /// <summary>
 /// Set timer state.
 /// </summary>
 /// <param name="due_time">The due time for the timer.</param>
 /// <param name="apc_routine">Optional APC routine.</param>
 /// <param name="context">Optional APC context pointer.</param>
 /// <param name="resume">True to resume.</param>
 /// <param name="period">Period time.</param>
 /// <returns>The previous state.</returns>
 public bool Set(NtWaitTimeout due_time,
                 TimerApcCallback apc_routine,
                 IntPtr context,
                 bool resume,
                 int period)
 {
     return(Set(due_time, apc_routine, context, resume, period, true).Result);
 }
示例#2
0
文件: NtTimer.cs 项目: codehz/winsilo
        /// <summary>
        /// Set timer state.
        /// </summary>
        /// <param name="due_time">The due time for the timer.</param>
        /// <param name="apc_routine">Optional APC routine.</param>
        /// <param name="context">Optional APC context pointer.</param>
        /// <param name="resume">True to resume.</param>
        /// <param name="period">Period time.</param>
        /// <param name="throw_on_error">True throw on error.</param>
        /// <returns>The NT result and previous state.</returns>
        public NtResult <bool> Set(NtWaitTimeout due_time,
                                   TimerApcCallback apc_routine,
                                   IntPtr context,
                                   bool resume,
                                   int period,
                                   bool throw_on_error)
        {
            IntPtr apc_ptr = apc_routine != null?Marshal.GetFunctionPointerForDelegate(apc_routine) : IntPtr.Zero;

            return(NtSystemCalls.NtSetTimer(Handle, due_time.Timeout, apc_ptr, context, resume, period,
                                            out bool previous_state).CreateResult(throw_on_error, () => previous_state));
        }