How to create a custom file classification mechanism
The File Classification Infrastructure (FCI) provides a set of classification mechanisms by default. When mroe custom logic is required to classify files, a classification plug-in can be created. These plug-ins represent a primary developer extensibility points for file classification.
The Microsoft Windows SDK for Windows 7 and .NET Framework 4 contains the following samples.
- Customization through FCI plug-in based samples
- Sample for enumerating classification properties using the FCI API
Customization through FCI plug-in based samples
Each of these SDK samples results in a DLL and comes with a registration script for registering the plug-in through COM+, setting up an execution environment for the COM server. COM servers can also be hosted in more custom ways. This registration script registers the plug-in for FCI by using its GUID.
Any FCI classification rule specifies one classification plug-in. For more information, see Module Design in How to develop a custom FCI Classifier in Managed Code. To allow for behavior variation for a single plug-in between rules, each rule may include zero or more name-value pairs that are passed to the plug-in. These pairs are configured in the rule through COM, WMI, or PowerShell.
PowerShell host classifier sample
This sample consists of a plugin that allows an administrator to specify a PowerShell script to provide a property value through FCI.
Windows Server 2008 R2: This functionality is not available in the operating system; therefore, this sample shows how this was done before it was integrated into the operating system.
This sample is installed by default at C:\Program Files\Microsoft SDKs\Windows\v7.1\Samples\winbase\FSRM\PowerShellHostClassifier.
IFilter based classifier sample
This sample plugin processes the content of files. However plug-ins are provided with a binary stream of the file contents. The sample invokes an IFilter that translates the binary stream of a file into text by file type. IFilters are what the search indexer uses to extract text from a file. The search for the keyword is a simple string search.
This sample is installed by default at C:\Program Files\Microsoft SDKs\Windows\v7.1\Samples\winbase\FSRM\SampleIFilterBasedClassifier.
Text based classifier sample
Similar to the IFilter based classification sample, this sample plug-in searches a specified file for a specified string. If given a binary file, it searches it as it would a text file.
This sample is installed by default at C:\Program Files\Microsoft SDKs\Windows\v7.1\Samples\winbase\FSRM\SampleTextBasedClassifier.
Managed content classifier sample
This sample is the same as the text based classifier sample but it is built using C# instead of C++.
This sample is installed by default at C:\Program Files\Microsoft SDKs\Windows\v7.1\Samples\winbase\FSRM\ManagedContentClassifier.
Sample for enumerating classification properties using the FCI API
For application developers who want to access the classification properties of a file, there are FSRM Classes for working with the properties of a given set of files.
Enumerate classification properties sample
This sample is installed by default at C:\Program Files\Microsoft SDKs\Windows\v7.1\Samples\winbase\FSRM\EnumClassificationProperties.
Managed get enumerated properties sample
This sample is installed by default at C:\Program Files\Microsoft SDKs\Windows\v7.1\Samples\winbase\FSRM\ManagedGetEnumProperties.