コード例 #1
0
        public void Open(string filter, DivertLayer layer, short priority, DivertFlags flags)
        {
            if (String.IsNullOrWhiteSpace(filter))
            {
                throw new ArgumentNullException("filter");
            }

            ulong           m_flag  = Convert.ToUInt64(flags);
            WINDIVERT_LAYER m_layer = (WINDIVERT_LAYER)layer;

            _divert_handle = NativeMethods.WinDivertOpen(filter, m_layer, priority, m_flag);
            int lastWin32Error = Marshal.GetLastWin32Error();

            if (_divert_handle.IsInvalid)
            {
                switch (lastWin32Error)
                {
                case WinError.ERROR_FILE_NOT_FOUND:
                    throw new Exception("The driver files WinDivert32.sys or WinDivert64.sys were not found.");

                case WinError.ERROR_ACCESS_DENIED:
                    throw new Exception("You don't have sufficent privilege to use the driver.");

                case WinError.ERROR_INVALID_PARAMETER:
                    throw new Exception("Filter string, layer, priority, or flags parameters contain invalid values.");

                case WinError.ERROR_INVALID_IMAGE_HASH:
                    throw new Exception("The WinDivert32.sys or WinDivert64.sys driver does not have a valid digital signature.");

                case WinError.ERROR_DRIVER_BLOCKED:
                    throw new Exception("The driver is blocked from operating. This can happen for various reasons, such as interference from security software, or usage inside a virtualization environment that does not support drivers.");

                default:
                    throw new Exception("Failed to open WinDivert safe handle. Cause is unknown. Win32 Error is " + lastWin32Error);
                }
            }
        }
コード例 #2
0
ファイル: WinDivert.cs プロジェクト: zheng9980419/ntminer
 public static extern bool WinDivertHelperEvalFilter([In][MarshalAs(UnmanagedType.LPStr)] string filter, WINDIVERT_LAYER layer, [In] byte[] pPacket, uint packetLen, [In] ref WINDIVERT_ADDRESS pAddr);
コード例 #3
0
ファイル: WinDivert.cs プロジェクト: zheng9980419/ntminer
 public static extern bool WinDivertHelperCheckFilter([In][MarshalAs(UnmanagedType.LPStr)] string filter, WINDIVERT_LAYER layer, ref IntPtr errorStr, IntPtr errorPos);
コード例 #4
0
ファイル: WinDivert.cs プロジェクト: zheng9980419/ntminer
 public static extern IntPtr WinDivertOpen([In][MarshalAs(UnmanagedType.LPStr)] string filter, WINDIVERT_LAYER layer, short priority, ulong flags);
コード例 #5
0
ファイル: WinDivert.cs プロジェクト: MissGod1/DNSsniffer
 private extern static UIntPtr WinDivertOpen(string filter, WINDIVERT_LAYER layer,
                                             Int16 prio, WINDIVERT_FLAG flags);
コード例 #6
0
ファイル: WinDivert.cs プロジェクト: zhouweiaccp/reactor
 internal static extern System.IntPtr WinDivertOpen([In][MarshalAs(UnmanagedType.LPStr)] System.String filter,
                                                    [In]  WINDIVERT_LAYER layer,
                                                    [In]  System.Int16 priority,
                                                    [In]  System.UInt64 flags);
コード例 #7
0
 public static extern DivertSafeHandle WinDivertOpen([InAttribute(), MarshalAs(UnmanagedType.LPStr)] string filter,
                                                     WINDIVERT_LAYER layer, short priority, ulong flags);