1 #pragma once
2 
3 #define IOCTL_FILTER_LOAD           CTL_CODE(FILE_DEVICE_DISK_FILE_SYSTEM, 0x01, METHOD_BUFFERED, FILE_WRITE_DATA) //88004
4 #define IOCTL_FILTER_UNLOAD         CTL_CODE(FILE_DEVICE_DISK_FILE_SYSTEM, 0x02, METHOD_BUFFERED, FILE_WRITE_DATA) //88008
5 #define IOCTL_FILTER_CREATE         CTL_CODE(FILE_DEVICE_DISK_FILE_SYSTEM, 0x03, METHOD_BUFFERED, FILE_READ_DATA)  //8400C
6 #define IOCTL_FILTER_ATTATCH        CTL_CODE(FILE_DEVICE_DISK_FILE_SYSTEM, 0x04, METHOD_BUFFERED, FILE_WRITE_DATA) //88010
7 #define IOCTL_FILTER_DETATCH        CTL_CODE(FILE_DEVICE_DISK_FILE_SYSTEM, 0x05, METHOD_BUFFERED, FILE_WRITE_DATA) //88014
8 #define IOCTL_FILTER_SEND_MESSAGE   CTL_CODE(FILE_DEVICE_DISK_FILE_SYSTEM, 0x06, METHOD_NEITHER,  FILE_WRITE_DATA) //8801B
9 #define IOCTL_FILTER_GET_MESSAGE    CTL_CODE(FILE_DEVICE_DISK_FILE_SYSTEM, 0x07, METHOD_NEITHER,  FILE_READ_DATA)  //8401F
10 #define IOCTL_FILTER_REPLY_MESSAGE  CTL_CODE(FILE_DEVICE_DISK_FILE_SYSTEM, 0x08, METHOD_NEITHER,  FILE_WRITE_DATA) //88023
11 #define IOCTL_FILTER_FIND_FIRST     CTL_CODE(FILE_DEVICE_DISK_FILE_SYSTEM, 0x09, METHOD_BUFFERED, FILE_READ_DATA)  //84024
12 #define IOCTL_FILTER_FIND_NEXT      CTL_CODE(FILE_DEVICE_DISK_FILE_SYSTEM, 0x0A, METHOD_BUFFERED, FILE_READ_DATA)  //84028
13 #define IOCTL_FILTER_GET_INFO       CTL_CODE(FILE_DEVICE_DISK_FILE_SYSTEM, 0x0B, METHOD_BUFFERED, FILE_READ_DATA)  //8402C
14 
15 
16 typedef struct _FILTER_NAME
17 {
18     USHORT Length;
19     WCHAR FilterName[1];
20 
21 } FILTER_NAME, *PFILTER_NAME;
22 
23 
24 
25 typedef struct _FILTER_PORT_DATA
26 {
27     ULONG Size;
28     UNICODE_STRING PortName;
29     ULONG Options;
30     PVOID Context;
31     ULONG ContextSize;
32 
33 } FILTER_PORT_DATA, *PFILTER_PORT_DATA;
34