private IntPtr HookProc(int code, IntPtr wordParam, IntPtr longParam)
        {
            if (code < 0)
            {
                return(NativeMethods.CallNextHookEx(_hookId.DangerousGetHandle(), code, wordParam, longParam));
            }

            var wordParamInt32 = wordParam.ToInt32();
            var longParamInt32 = Marshal.ReadInt32(longParam);

            _hookReceivedCallback(wordParamInt32, longParamInt32);

            return(NativeMethods.CallNextHookEx(_hookId.DangerousGetHandle(), code, wordParam, longParam));
        }
Exemple #2
0
    public static void SafeHandle_SetHandleAsInvalid()
    {
        IntPtr       ptr    = new IntPtr(1);
        MySafeHandle handle = new MySafeHandle(ptr);

        handle.SetHandleAsInvalid();
        Assert.True(handle.IsClosed);
        Assert.False(handle.IsInvalid);
        Assert.False(handle.IsReleased);
        Assert.Equal(ptr, handle.DangerousGetHandle());
    }
Exemple #3
0
    public static void SafeHandle_invalid()
    {
        MySafeHandle mch = new MySafeHandle();

        Assert.False(mch.IsClosed);
        Assert.True(mch.IsInvalid);
        Assert.False(mch.IsReleased);
        Assert.Equal(IntPtr.Zero, mch.DangerousGetHandle());

        mch.Dispose();
        Assert.True(mch.IsClosed);
        Assert.True(mch.IsInvalid);
        Assert.False(mch.IsReleased);

        // Make sure we can dispose multiple times
        mch.Dispose();
        Assert.True(mch.IsClosed);
        Assert.True(mch.IsInvalid);
        Assert.False(mch.IsReleased);
    }
Exemple #4
0
 public void MethodWithSafeHandleDangerousGetHandleCall()
 {
     MySafeHandle myHandle  = new MySafeHandle();
     IntPtr       handlePtr = myHandle.DangerousGetHandle();
 }