summaryrefslogtreecommitdiff
path: root/filesys/miniFilter/nullFilter
diff options
context:
space:
mode:
authorDave Wilson <[email protected]>2015-03-17 19:50:07 -0700
committerDave Wilson <[email protected]>2015-03-17 19:50:07 -0700
commit97cf5197cf5b882b2c689d8dc2b555f2edf8f418 (patch)
tree46f3701832d70b420eb0fc0eb93261f9da45db3f /filesys/miniFilter/nullFilter
parentef1905bf1e8825bb31120dfb27e0daf3154d859a (diff)
Initial publish
Diffstat (limited to 'filesys/miniFilter/nullFilter')
-rw-r--r--filesys/miniFilter/nullFilter/ReadMe.md15
-rw-r--r--filesys/miniFilter/nullFilter/nullFilter.c240
-rw-r--r--filesys/miniFilter/nullFilter/nullFilter.inf95
-rw-r--r--filesys/miniFilter/nullFilter/nullFilter.rc10
-rw-r--r--filesys/miniFilter/nullFilter/nullFilter.sln28
-rw-r--r--filesys/miniFilter/nullFilter/nullFilter.vcxproj152
-rw-r--r--filesys/miniFilter/nullFilter/nullFilter.vcxproj.Filters31
7 files changed, 571 insertions, 0 deletions
diff --git a/filesys/miniFilter/nullFilter/ReadMe.md b/filesys/miniFilter/nullFilter/ReadMe.md
new file mode 100644
index 00000000..376618e7
--- /dev/null
+++ b/filesys/miniFilter/nullFilter/ReadMe.md
@@ -0,0 +1,15 @@
+NullFilter File System Minifilter Driver
+========================================
+
+The NullFilter minifilter is a sample minifilter that shows how to register a minifilter with the filter manager.
+
+## Universal Compliant
+This sample builds a Windows Universal driver. It uses only APIs and DDIs that are included in Windows Core.
+
+Design and Operation
+--------------------
+
+The *NullFilter* minifilter is a simple minifilter that registers itself with the filter manager for no callback operations.
+
+For more information on file system minifilter design, start with the [File System Minifilter Drivers](http://msdn.microsoft.com/en-us/library/windows/hardware/ff540402) section in the Installable File Systems Design Guide.
+
diff --git a/filesys/miniFilter/nullFilter/nullFilter.c b/filesys/miniFilter/nullFilter/nullFilter.c
new file mode 100644
index 00000000..9944db13
--- /dev/null
+++ b/filesys/miniFilter/nullFilter/nullFilter.c
@@ -0,0 +1,240 @@
+/*++
+
+Copyright (c) 1999 - 2002 Microsoft Corporation
+
+Module Name:
+
+ nullFilter.c
+
+Abstract:
+
+ This is the main module of the nullFilter mini filter driver.
+ It is a simple minifilter that registers itself with the main filter
+ for no callback operations.
+
+Environment:
+
+ Kernel mode
+
+--*/
+
+#include <fltKernel.h>
+#include <dontuse.h>
+#include <suppress.h>
+
+#pragma prefast(disable:__WARNING_ENCODE_MEMBER_FUNCTION_POINTER, "Not valid for kernel mode drivers")
+
+//---------------------------------------------------------------------------
+// Global variables
+//---------------------------------------------------------------------------
+
+#define NULL_FILTER_FILTER_NAME L"NullFilter"
+
+typedef struct _NULL_FILTER_DATA {
+
+ //
+ // The filter handle that results from a call to
+ // FltRegisterFilter.
+ //
+
+ PFLT_FILTER FilterHandle;
+
+} NULL_FILTER_DATA, *PNULL_FILTER_DATA;
+
+
+/*************************************************************************
+ Prototypes for the startup and unload routines used for
+ this Filter.
+
+ Implementation in nullFilter.c
+*************************************************************************/
+
+DRIVER_INITIALIZE DriverEntry;
+NTSTATUS
+DriverEntry (
+ _In_ PDRIVER_OBJECT DriverObject,
+ _In_ PUNICODE_STRING RegistryPath
+ );
+
+NTSTATUS
+NullUnload (
+ _In_ FLT_FILTER_UNLOAD_FLAGS Flags
+ );
+
+NTSTATUS
+NullQueryTeardown (
+ _In_ PCFLT_RELATED_OBJECTS FltObjects,
+ _In_ FLT_INSTANCE_QUERY_TEARDOWN_FLAGS Flags
+ );
+
+//
+// Structure that contains all the global data structures
+// used throughout NullFilter.
+//
+
+NULL_FILTER_DATA NullFilterData;
+
+//
+// Assign text sections for each routine.
+//
+
+#ifdef ALLOC_PRAGMA
+#pragma alloc_text(INIT, DriverEntry)
+#pragma alloc_text(PAGE, NullUnload)
+#pragma alloc_text(PAGE, NullQueryTeardown)
+#endif
+
+
+//
+// This defines what we want to filter with FltMgr
+//
+
+CONST FLT_REGISTRATION FilterRegistration = {
+
+ sizeof( FLT_REGISTRATION ), // Size
+ FLT_REGISTRATION_VERSION, // Version
+ 0, // Flags
+
+ NULL, // Context
+ NULL, // Operation callbacks
+
+ NullUnload, // FilterUnload
+
+ NULL, // InstanceSetup
+ NullQueryTeardown, // InstanceQueryTeardown
+ NULL, // InstanceTeardownStart
+ NULL, // InstanceTeardownComplete
+
+ NULL, // GenerateFileName
+ NULL, // GenerateDestinationFileName
+ NULL // NormalizeNameComponent
+
+};
+
+
+/*************************************************************************
+ Filter initialization and unload routines.
+*************************************************************************/
+
+NTSTATUS
+DriverEntry (
+ _In_ PDRIVER_OBJECT DriverObject,
+ _In_ PUNICODE_STRING RegistryPath
+ )
+/*++
+
+Routine Description:
+
+ This is the initialization routine for this miniFilter driver. This
+ registers the miniFilter with FltMgr and initializes all
+ its global data structures.
+
+Arguments:
+
+ DriverObject - Pointer to driver object created by the system to
+ represent this driver.
+ RegistryPath - Unicode string identifying where the parameters for this
+ driver are located in the registry.
+
+Return Value:
+
+ Returns STATUS_SUCCESS.
+
+--*/
+{
+ NTSTATUS status;
+
+ UNREFERENCED_PARAMETER( RegistryPath );
+
+ //
+ // Register with FltMgr
+ //
+
+ status = FltRegisterFilter( DriverObject,
+ &FilterRegistration,
+ &NullFilterData.FilterHandle );
+
+ FLT_ASSERT( NT_SUCCESS( status ) );
+
+ if (NT_SUCCESS( status )) {
+
+ //
+ // Start filtering i/o
+ //
+
+ status = FltStartFiltering( NullFilterData.FilterHandle );
+
+ if (!NT_SUCCESS( status )) {
+ FltUnregisterFilter( NullFilterData.FilterHandle );
+ }
+ }
+ return status;
+}
+
+NTSTATUS
+NullUnload (
+ _In_ FLT_FILTER_UNLOAD_FLAGS Flags
+ )
+/*++
+
+Routine Description:
+
+ This is the unload routine for this miniFilter driver. This is called
+ when the minifilter is about to be unloaded. We can fail this unload
+ request if this is not a mandatory unloaded indicated by the Flags
+ parameter.
+
+Arguments:
+
+ Flags - Indicating if this is a mandatory unload.
+
+Return Value:
+
+ Returns the final status of this operation.
+
+--*/
+{
+ UNREFERENCED_PARAMETER( Flags );
+
+ PAGED_CODE();
+
+ FltUnregisterFilter( NullFilterData.FilterHandle );
+
+ return STATUS_SUCCESS;
+}
+
+NTSTATUS
+NullQueryTeardown (
+ _In_ PCFLT_RELATED_OBJECTS FltObjects,
+ _In_ FLT_INSTANCE_QUERY_TEARDOWN_FLAGS Flags
+ )
+/*++
+
+Routine Description:
+
+ This is the instance detach routine for this miniFilter driver.
+ This is called when an instance is being manually deleted by a
+ call to FltDetachVolume or FilterDetach thereby giving us a
+ chance to fail that detach request.
+
+Arguments:
+
+ FltObjects - Pointer to the FLT_RELATED_OBJECTS data structure containing
+ opaque handles to this filter, instance and its associated volume.
+
+ Flags - Indicating where this detach request came from.
+
+Return Value:
+
+ Returns the status of this operation.
+
+--*/
+{
+ UNREFERENCED_PARAMETER( FltObjects );
+ UNREFERENCED_PARAMETER( Flags );
+
+ PAGED_CODE();
+
+ return STATUS_SUCCESS;
+}
+
diff --git a/filesys/miniFilter/nullFilter/nullFilter.inf b/filesys/miniFilter/nullFilter/nullFilter.inf
new file mode 100644
index 00000000..e1cb7db1
--- /dev/null
+++ b/filesys/miniFilter/nullFilter/nullFilter.inf
@@ -0,0 +1,95 @@
+;;;
+;;; NullFilter
+;;;
+;;;
+;;; Copyright (c) 1999 - 2002, Microsoft Corporation
+;;;
+
+[Version]
+Signature = "$Windows NT$"
+Class = "ActivityMonitor" ;This is determined by the work this filter driver does
+ClassGuid = {b86dff51-a31e-4bac-b3cf-e8cfe75c9fc2} ;This value is determined by the Class
+Provider = %Msft%
+DriverVer = 06/16/2007,1.0.0.0
+CatalogFile = nullfilter.cat
+
+
+[DestinationDirs]
+DefaultDestDir = 12
+NullFilter.DriverFiles = 12 ;%windir%\system32\drivers
+
+;;
+;; Default install sections
+;;
+
+[DefaultInstall]
+OptionDesc = %ServiceDescription%
+CopyFiles = NullFilter.DriverFiles
+
+[DefaultInstall.Services]
+AddService = %ServiceName%,,NullFilter.Service
+
+;;
+;; Default uninstall sections
+;;
+
+[DefaultUninstall]
+DelFiles = NullFilter.DriverFiles
+
+[DefaultUninstall.Services]
+DelService = %ServiceName%,0x200 ;Ensure service is stopped before deleting
+
+;
+; Services Section
+;
+
+[NullFilter.Service]
+DisplayName = %ServiceName%
+Description = %ServiceDescription%
+ServiceBinary = %12%\%DriverName%.sys ;%windir%\system32\drivers\
+Dependencies = "FltMgr"
+ServiceType = 2 ;SERVICE_FILE_SYSTEM_DRIVER
+StartType = 3 ;SERVICE_DEMAND_START
+ErrorControl = 1 ;SERVICE_ERROR_NORMAL
+LoadOrderGroup = "FSFilter Activity Monitor"
+AddReg = NullFilter.AddRegistry
+
+;
+; Registry Modifications
+;
+
+[NullFilter.AddRegistry]
+HKR,,"SupportedFeatures",0x00010001,0x3
+HKR,"Instances","DefaultInstance",0x00000000,%DefaultInstance%
+HKR,"Instances\"%Instance1.Name%,"Altitude",0x00000000,%Instance1.Altitude%
+HKR,"Instances\"%Instance1.Name%,"Flags",0x00010001,%Instance1.Flags%
+
+;
+; Copy Files
+;
+
+[NullFilter.DriverFiles]
+%DriverName%.sys
+
+[SourceDisksFiles]
+nullfilter.sys = 1,,
+
+[SourceDisksNames]
+1 = %DiskId1%,,,
+
+;;
+;; String Section
+;;
+
+[Strings]
+Msft = "Microsoft Corporation"
+ServiceDescription = "NullFilter mini-filter driver"
+ServiceName = "NullFilter"
+DriverName = "NullFilter"
+DiskId1 = "NullFilter Device Installation Disk"
+
+;Instances specific information.
+DefaultInstance = "Null Instance"
+Instance1.Name = "Null Instance"
+Instance1.Altitude = "370020"
+Instance1.Flags = 0x1 ; Suppress automatic attachments
diff --git a/filesys/miniFilter/nullFilter/nullFilter.rc b/filesys/miniFilter/nullFilter/nullFilter.rc
new file mode 100644
index 00000000..79355bf3
--- /dev/null
+++ b/filesys/miniFilter/nullFilter/nullFilter.rc
@@ -0,0 +1,10 @@
+#include <windows.h>
+
+#include <ntverp.h>
+
+#define VER_FILETYPE VFT_DRV
+#define VER_FILESUBTYPE VFT2_DRV_SYSTEM
+#define VER_FILEDESCRIPTION_STR "Null filter"
+#define VER_INTERNALNAME_STR "nullFilter.sys"
+
+#include "common.ver"
diff --git a/filesys/miniFilter/nullFilter/nullFilter.sln b/filesys/miniFilter/nullFilter/nullFilter.sln
new file mode 100644
index 00000000..9af52d43
--- /dev/null
+++ b/filesys/miniFilter/nullFilter/nullFilter.sln
@@ -0,0 +1,28 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 2013
+VisualStudioVersion = 12.0
+MinimumVisualStudioVersion = 12.0
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "nullFilter", "nullFilter.vcxproj", "{83F8E913-4ED0-4CB2-ACF2-5411AC436CC5}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Win32 = Debug|Win32
+ Release|Win32 = Release|Win32
+ Debug|x64 = Debug|x64
+ Release|x64 = Release|x64
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {83F8E913-4ED0-4CB2-ACF2-5411AC436CC5}.Debug|Win32.ActiveCfg = Debug|Win32
+ {83F8E913-4ED0-4CB2-ACF2-5411AC436CC5}.Debug|Win32.Build.0 = Debug|Win32
+ {83F8E913-4ED0-4CB2-ACF2-5411AC436CC5}.Release|Win32.ActiveCfg = Release|Win32
+ {83F8E913-4ED0-4CB2-ACF2-5411AC436CC5}.Release|Win32.Build.0 = Release|Win32
+ {83F8E913-4ED0-4CB2-ACF2-5411AC436CC5}.Debug|x64.ActiveCfg = Debug|x64
+ {83F8E913-4ED0-4CB2-ACF2-5411AC436CC5}.Debug|x64.Build.0 = Debug|x64
+ {83F8E913-4ED0-4CB2-ACF2-5411AC436CC5}.Release|x64.ActiveCfg = Release|x64
+ {83F8E913-4ED0-4CB2-ACF2-5411AC436CC5}.Release|x64.Build.0 = Release|x64
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/filesys/miniFilter/nullFilter/nullFilter.vcxproj b/filesys/miniFilter/nullFilter/nullFilter.vcxproj
new file mode 100644
index 00000000..7e24749f
--- /dev/null
+++ b/filesys/miniFilter/nullFilter/nullFilter.vcxproj
@@ -0,0 +1,152 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{83F8E913-4ED0-4CB2-ACF2-5411AC436CC5}</ProjectGuid>
+ <RootNamespace>$(MSBuildProjectName)</RootNamespace>
+ <Configuration Condition="'$(Configuration)' == ''">Debug</Configuration>
+ <Platform Condition="'$(Platform)' == ''">Win32</Platform>
+ <SampleGuid>{6431C66E-F38F-45F1-BE1E-D06503CE7799}</SampleGuid>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <TargetVersion>Windows10</TargetVersion>
+ <UseDebugLibraries>False</UseDebugLibraries>
+ <DriverTargetPlatform>Universal</DriverTargetPlatform>
+ <DriverType>WDM</DriverType>
+ <PlatformToolset>WindowsKernelModeDriver10.0</PlatformToolset>
+ <ConfigurationType>Driver</ConfigurationType>
+ </PropertyGroup>
+ <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <TargetVersion>Windows10</TargetVersion>
+ <UseDebugLibraries>True</UseDebugLibraries>
+ <DriverTargetPlatform>Universal</DriverTargetPlatform>
+ <DriverType>WDM</DriverType>
+ <PlatformToolset>WindowsKernelModeDriver10.0</PlatformToolset>
+ <ConfigurationType>Driver</ConfigurationType>
+ </PropertyGroup>
+ <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <TargetVersion>Windows10</TargetVersion>
+ <UseDebugLibraries>False</UseDebugLibraries>
+ <DriverTargetPlatform>Universal</DriverTargetPlatform>
+ <DriverType>WDM</DriverType>
+ <PlatformToolset>WindowsKernelModeDriver10.0</PlatformToolset>
+ <ConfigurationType>Driver</ConfigurationType>
+ </PropertyGroup>
+ <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <TargetVersion>Windows10</TargetVersion>
+ <UseDebugLibraries>True</UseDebugLibraries>
+ <DriverTargetPlatform>Universal</DriverTargetPlatform>
+ <DriverType>WDM</DriverType>
+ <PlatformToolset>WindowsKernelModeDriver10.0</PlatformToolset>
+ <ConfigurationType>Driver</ConfigurationType>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <PropertyGroup>
+ <OutDir>$(IntDir)</OutDir>
+ </PropertyGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
+ </ImportGroup>
+ <ItemGroup Label="WrappedTaskItems" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <TargetName>nullFilter</TargetName>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <TargetName>nullFilter</TargetName>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <TargetName>nullFilter</TargetName>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <TargetName>nullFilter</TargetName>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <TreatWarningAsError>true</TreatWarningAsError>
+ <WarningLevel>Level4</WarningLevel>
+ <ExceptionHandling>
+ </ExceptionHandling>
+ </ClCompile>
+ <Link>
+ <AdditionalDependencies>%(AdditionalDependencies);$(DDK_LIB_PATH)\fltMgr.lib</AdditionalDependencies>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <TreatWarningAsError>true</TreatWarningAsError>
+ <WarningLevel>Level4</WarningLevel>
+ <ExceptionHandling>
+ </ExceptionHandling>
+ </ClCompile>
+ <Link>
+ <AdditionalDependencies>%(AdditionalDependencies);$(DDK_LIB_PATH)\fltMgr.lib</AdditionalDependencies>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <TreatWarningAsError>true</TreatWarningAsError>
+ <WarningLevel>Level4</WarningLevel>
+ <ExceptionHandling>
+ </ExceptionHandling>
+ </ClCompile>
+ <Link>
+ <AdditionalDependencies>%(AdditionalDependencies);$(DDK_LIB_PATH)\fltMgr.lib</AdditionalDependencies>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <TreatWarningAsError>true</TreatWarningAsError>
+ <WarningLevel>Level4</WarningLevel>
+ <ExceptionHandling>
+ </ExceptionHandling>
+ </ClCompile>
+ <Link>
+ <AdditionalDependencies>%(AdditionalDependencies);$(DDK_LIB_PATH)\fltMgr.lib</AdditionalDependencies>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="nullFilter.c" />
+ <ResourceCompile Include="nullFilter.rc" />
+ </ItemGroup>
+ <ItemGroup>
+ <Inf Exclude="@(Inf)" Include="*.inf" />
+ <FilesToPackage Include="$(TargetPath)" Condition="'$(ConfigurationType)'=='Driver' or '$(ConfigurationType)'=='DynamicLibrary'" />
+ <FilesToPackage Include="@(Inf->'%(CopyOutput)')" Condition="'@(Inf)'!=''" />
+ </ItemGroup>
+ <ItemGroup>
+ <None Exclude="@(None)" Include="*.txt;*.htm;*.html" />
+ <None Exclude="@(None)" Include="*.ico;*.cur;*.bmp;*.dlg;*.rct;*.gif;*.jpg;*.jpeg;*.wav;*.jpe;*.tiff;*.tif;*.png;*.rc2" />
+ <None Exclude="@(None)" Include="*.def;*.bat;*.hpj;*.asmx" />
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Exclude="@(ClInclude)" Include="*.h;*.hpp;*.hxx;*.hm;*.inl;*.xsd" />
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+</Project> \ No newline at end of file
diff --git a/filesys/miniFilter/nullFilter/nullFilter.vcxproj.Filters b/filesys/miniFilter/nullFilter/nullFilter.vcxproj.Filters
new file mode 100644
index 00000000..a199c829
--- /dev/null
+++ b/filesys/miniFilter/nullFilter/nullFilter.vcxproj.Filters
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx;*</Extensions>
+ <UniqueIdentifier>{AC14DB33-6BC1-44EC-AAB1-816BA496A388}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Header Files">
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ <UniqueIdentifier>{F9EA13FF-7409-4FCD-B877-4F877D4E24BF}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Resource Files">
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms;man;xml</Extensions>
+ <UniqueIdentifier>{365A22DE-D53C-4640-8237-5E79E158A537}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Driver Files">
+ <Extensions>inf;inv;inx;mof;mc;</Extensions>
+ <UniqueIdentifier>{8F416348-B401-4C11-9DD0-4D79812667AD}</UniqueIdentifier>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="nullFilter.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ResourceCompile Include="nullFilter.rc">
+ <Filter>Resource Files</Filter>
+ </ResourceCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file