This is the first part of my mini-series on how to create a custom file classification module that can be run by the File Server Resource Manager which ships with Windows Server 2008 R2. (If you missed the other parts, you can return to the index by clicking here)
What is the File Resource Manager?
Most applications manage files based on the directory they are contained in. This leads to complicated file layouts that require much attention from administrators and lead to frustration for users.
To reduce the cost and risk associated with this type of data management, the File Classification Infrastructure uses a platform that allows administrators to classify files and apply policies based on that classification. The storage layout is unaffected by data management requirements and the organization can adapt more easily to a changing business and regulatory environment.
To get a better overview on how FSRM works, I recommend having a look at the following PowerPoint presentation: http://ecn.channel9.msdn.com/o9/pdc09/ppt/SVR02.pptx
Here is the information important for us:
Windows Server 2008 R2 already comes with two FCI extensions:
They allow assigning static values only. This is a problem e.g. if you want to use the name of the file that you are classifying as the value of a property. Luckily, there is the possibility to implement your own extension.
For that, first of all we have to implement the module itself. Classification modules are COM servers, so I created a class library in .NET using C#. (Windows Server 2008 R2 comes with .NET 3.5, but if you installed the .NET 4.0 Framework you can use that as well.)
Once done, we need to register the library as a COM server and additionally tell the File Server Resource Manager about its existence.
To create a custom classification module you need to implement the IFsrmClassifierModuleImplementation interface. (See here for a description of the interface's members: http://msdn.microsoft.com/en-us/library/dd878721(VS.85).aspx)
The call flow of the interface during the classification process is the following:
In the next chapter I will show you a simple implementation of this interface.