Ejemplo n.º 1
0
        private CcwHook(IDisposable comObject, IntPtr comInterface, IntPtr originalInterface, CcwWrappers wrappers)
        {
            this.comObject = comObject;
            this.originalInterface = originalInterface;
            this.wrappers = wrappers;

            queryInterfaceDetour = QueryInterfaceDetour;
            releaseDetour = ReleaseDetour;

            var vtable = Marshal.ReadIntPtr(comInterface);
            var originalQueryInterfacePointer = Marshal.ReadIntPtr(vtable, 0 * IntPtr.Size);
            var originalReleasePointer = Marshal.ReadIntPtr(vtable, 2 * IntPtr.Size);
            originalQueryInterface = Marshal.GetDelegateForFunctionPointer<QueryInterfaceDelegate>(originalQueryInterfacePointer);
            originalRelease = Marshal.GetDelegateForFunctionPointer<ReleaseDelegate>(originalReleasePointer);
            Marshal.WriteIntPtr(vtable, 0 * IntPtr.Size, Marshal.GetFunctionPointerForDelegate(queryInterfaceDetour));
            Marshal.WriteIntPtr(vtable, 2 * IntPtr.Size, Marshal.GetFunctionPointerForDelegate(releaseDetour));
        }
Ejemplo n.º 2
0
        private CcwHook(IDisposable comObject, IntPtr comInterface, IntPtr originalInterface, CcwWrappers wrappers)
        {
            this.comObject         = comObject;
            this.originalInterface = originalInterface;
            this.wrappers          = wrappers;

            queryInterfaceDetour = QueryInterfaceDetour;
            releaseDetour        = ReleaseDetour;

            var vtable = Marshal.ReadIntPtr(comInterface);
            var originalQueryInterfacePointer = Marshal.ReadIntPtr(vtable, 0 * IntPtr.Size);
            var originalReleasePointer        = Marshal.ReadIntPtr(vtable, 2 * IntPtr.Size);

            originalQueryInterface = Marshal.GetDelegateForFunctionPointer <QueryInterfaceDelegate>(originalQueryInterfacePointer);
            originalRelease        = Marshal.GetDelegateForFunctionPointer <ReleaseDelegate>(originalReleasePointer);
            Marshal.WriteIntPtr(vtable, 0 * IntPtr.Size, Marshal.GetFunctionPointerForDelegate(queryInterfaceDetour));
            Marshal.WriteIntPtr(vtable, 2 * IntPtr.Size, Marshal.GetFunctionPointerForDelegate(releaseDetour));
        }
Ejemplo n.º 3
0
 public CcwHook(IDisposable comObject, IntPtr comInterface, CcwWrappers wrappers)
     : this(comObject, comInterface, comInterface, wrappers)
 {
 }
Ejemplo n.º 4
0
 public CcwHook(IDisposable comObject, CcwWrapper wrapper, CcwWrappers wrappers)
     : this(comObject, wrapper.Wrapper, wrapper.Original, wrappers)
 {
 }
Ejemplo n.º 5
0
 public CcwHook(IDisposable comObject, IntPtr comInterface, CcwWrappers wrappers)
     : this(comObject, comInterface, comInterface, wrappers)
 {
 }
Ejemplo n.º 6
0
 public CcwHook(IDisposable comObject, CcwWrapper wrapper, CcwWrappers wrappers)
     : this(comObject, wrapper.Wrapper, wrapper.Original, wrappers)
 {
 }