EaseFilter Demo Project
FileMonitorService/FilterWorker.cs
Go to the documentation of this file.
1 //
3 // (C) Copyright 2012 EaseFilter Technologies Inc.
4 // All Rights Reserved
5 //
6 // This software is part of a licensed software product and may
7 // only be used or copied in accordance with the terms of that license.
8 //
10 
11 using System;
12 using System.Collections.Generic;
13 using System.Text;
14 using System.IO;
15 using Microsoft.Win32.SafeHandles;
16 using System.Runtime.InteropServices;
17 using System.Security.Principal;
18 using System.Threading;
19 using System.Diagnostics;
20 using System.ServiceProcess;
21 using System.Management;
22 
24 
25 
26 namespace FileMonitorService
27 {
28  public class FilterWorker
29  {
30  static FilterMessage filterMessage = new FilterMessage();
31 
32  public static bool StartService()
33  {
34  //Purchase a license key with the link: http://www.easefilter.com/Order.htm
35  //Email us to request a trial key: info@FilterAPI.com //free email is not accepted.
36  string registerKey = "**************************************";
37 
38  bool ret = false;
39 
40  try
41  {
42  string lastError = string.Empty;
43 
44  EventManager.WriteMessage(37, "StartFilter", EventLevel.Information, "Starting filter service.....");
45 
46  ret = FilterAPI.StartFilter((int)GlobalConfig.FilterConnectionThreads
47  , registerKey
48  , new FilterAPI.FilterDelegate(FilterCallback)
49  , new FilterAPI.DisconnectDelegate(DisconnectCallback)
50  , ref lastError);
51  if (!ret)
52  {
53  EventManager.WriteMessage(43, "StartFilter", EventLevel.Error, "Start filter service failed with error " + lastError);
54  return ret;
55  }
56 
57  GlobalConfig.filterType = FilterAPI.FilterType.FILE_SYSTEM_MONITOR;
58 
60  EventManager.WriteMessage(102, "StartFilter", EventLevel.Information, "Start filter service succeeded.");
61  }
62  catch (Exception ex)
63  {
64  EventManager.WriteMessage(104, "StartFilter", EventLevel.Error, "Start filter service failed with error " + ex.Message);
65  }
66 
67  return ret;
68  }
69 
70 
71 
72  public static bool StopService()
73  {
74  FilterAPI.StopFilter();
76 
77  return true;
78  }
79 
80 
81  public static Boolean FilterCallback(IntPtr sendDataPtr, IntPtr replyDataPtr)
82  {
83  Boolean ret = true;
84 
85  try
86  {
87  FilterAPI.MessageSendData messageSend = new FilterAPI.MessageSendData();
88  messageSend = (FilterAPI.MessageSendData)Marshal.PtrToStructure(sendDataPtr, typeof(FilterAPI.MessageSendData));
89 
90  if (FilterAPI.MESSAGE_SEND_VERIFICATION_NUMBER != messageSend.VerificationNumber)
91  {
92  EventManager.WriteMessage(139, "FilterCallback", EventLevel.Error, "Received message corrupted.Please check if the MessageSendData structure is correct.");
93  return false;
94  }
95 
96  EventManager.WriteMessage(99, "FilterCallback", EventLevel.Verbose, "#" + messageSend.MessageId + (FilterAPI.FilterCommand)messageSend.MessageType
97  + " Name:" + messageSend.FileName + " eventType:" + ((FilterAPI.EVENTTYPE)messageSend.InfoClass).ToString());
98 
99  if (messageSend.MessageType == (uint)FilterAPI.FilterCommand.FILTER_SEND_FILE_CHANGED_EVENT)
100  {
101  filterMessage.AddMessage(messageSend);
102  }
103 
104  return ret;
105  }
106  catch (Exception ex)
107  {
108  EventManager.WriteMessage(134, "FilterCallback", EventLevel.Error, "filter callback exception." + ex.Message);
109  return false;
110  }
111 
112  }
113 
114  static void DisconnectCallback()
115  {
116  EventManager.WriteMessage(697, "DisconnectCallback", EventLevel.Information, "Filter Disconnected." + FilterAPI.GetLastErrorMessage());
117  }
118 
119 
120  }
121 
122 }
void AddMessage(FilterAPI.MessageSendData messageSend)
static Boolean FilterCallback(IntPtr sendDataPtr, IntPtr replyDataPtr)
static FilterAPI.FilterType filterType
Definition: GlobalConfig.cs:79
#define registerKey

Social Network


Services Overview

Architect, implement and test file system filter drivers for a wide range of functionality. We can offer several levels of assistance to meet your specific.

Contact Us

You are welcome to contact us for salse or partnership.

Sales: sales@easefilter.com
Support: support@easefilter.com
Info: info@easefilter.com