示例#1
0
文件: FltLib.cs 项目: y11en/FileWall
 public virtual int FilterGetMessage(IntPtr hPort,
                                     ref ACCESS_REQUEST lpMessageBuffer,
                                     int dwMessageBufferSize,
                                     IntPtr lpOverlapped)
 {
     return(_FilterGetMessage(hPort, ref lpMessageBuffer, dwMessageBufferSize, lpOverlapped));
 }
示例#2
0
        /// <summary>Gets request from the queue.</summary>
        public virtual ACCESS_REQUEST GetRequest()
        {
            if (!IsRunning)
            {
                throw new InvalidOperationException("FileWall is stopped.");
            }

            var AccessRequest = new ACCESS_REQUEST();
            var hr            = fltLib.FilterGetMessage(portHandle, ref AccessRequest, Marshal.SizeOf(AccessRequest), IntPtr.Zero);

            Marshal.ThrowExceptionForHR(hr);

            return(AccessRequest);
        }
示例#3
0
        /// <summary>Replies to the request.</summary>
        public virtual void ReplyRequest(ACCESS_REQUEST AccessRequest, Boolean Allow)
        {
            if (!IsRunning)
            {
                throw new InvalidOperationException("FileWall is stopped.");
            }

            var Permission = new PERMISSION
            {
                Status    = 0,                              // STATUS_SUCCESS
                MessageId = AccessRequest.MessageId,
                Allow     = (Allow ? 1 : 0)
            };

            var hr = fltLib.FilterReplyMessage(portHandle, ref Permission, Marshal.SizeOf(Permission));

            Marshal.ThrowExceptionForHR(hr);
        }
示例#4
0
文件: FltLib.cs 项目: y11en/FileWall
 private static extern int _FilterGetMessage(IntPtr hPort,
                                             ref ACCESS_REQUEST lpMessageBuffer,
                                             int dwMessageBufferSize,
                                             IntPtr lpOverlapped);