ReactOS  r74406
fltkernel.h
Go to the documentation of this file.
1 /*
2  * fltkernel.h
3  *
4  * This file is part of the ReactOS DDK package.
5  *
6  * Contributors:
7  * Amine Khaldi (amine.khaldi@reactos.org)
8  *
9  * THIS SOFTWARE IS NOT COPYRIGHTED
10  *
11  * This source code is offered for use in the public domain. You may
12  * use, modify or distribute it freely.
13  *
14  * This code is distributed in the hope that it will be useful but
15  * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
16  * DISCLAIMED. This includes but is not limited to warranties of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18  *
19  */
20 #pragma once
21 
22 #ifndef __FLTKERNEL__
23 #define __FLTKERNEL__
24 
25 #ifdef __cplusplus
26 extern "C" {
27 #endif
28 
29 #define FLT_MGR_BASELINE (((OSVER(NTDDI_VERSION) == NTDDI_WIN2K) && (SPVER(NTDDI_VERSION) >= SPVER(NTDDI_WIN2KSP4))) || \
30  ((OSVER(NTDDI_VERSION) == NTDDI_WINXP) && (SPVER(NTDDI_VERSION) >= SPVER(NTDDI_WINXPSP2))) || \
31  ((OSVER(NTDDI_VERSION) == NTDDI_WS03) && (SPVER(NTDDI_VERSION) >= SPVER(NTDDI_WS03SP1))) || \
32  (NTDDI_VERSION >= NTDDI_VISTA))
33 
34 #define FLT_MGR_AFTER_XPSP2 (((OSVER(NTDDI_VERSION) == NTDDI_WIN2K) && (SPVER(NTDDI_VERSION) >= SPVER(NTDDI_WIN2KSP4))) || \
35  ((OSVER(NTDDI_VERSION) == NTDDI_WINXP) && (SPVER(NTDDI_VERSION) > SPVER(NTDDI_WINXPSP2))) || \
36  ((OSVER(NTDDI_VERSION) == NTDDI_WS03) && (SPVER(NTDDI_VERSION) >= SPVER(NTDDI_WS03SP1))) || \
37  (NTDDI_VERSION >= NTDDI_VISTA))
38 
39 #define FLT_MGR_LONGHORN (NTDDI_VERSION >= NTDDI_VISTA)
40 #define FLT_MGR_WIN7 (NTDDI_VERSION >= NTDDI_WIN7)
41 
42 #include <ntifs.h>
43 #include <fltuserstructures.h>
44 #include <initguid.h>
45 
46 #if FLT_MGR_BASELINE
47 
48 #if FLT_MGR_LONGHORN
49 #define FLT_ASSERT(_e) NT_ASSERT(_e)
50 #define FLT_ASSERTMSG(_m, _e) NT_ASSERTMSG(_m, _e)
51 #else
52 #define FLT_ASSERT(_e) ASSERT(_e)
53 #define FLT_ASSERTMSG(_m, _e) ASSERTMSG(_m, _e)
54 #endif /* FLT_MGR_LONGHORN */
55 
56 #define Add2Ptr(P,I) ((PVOID)((PUCHAR)(P) + (I)))
57 #define PtrOffset(B,O) ((ULONG)((ULONG_PTR)(O) - (ULONG_PTR)(B)))
58 
59 #define ROUND_TO_SIZE(_length, _alignment) \
60  ((((ULONG_PTR)(_length)) + ((_alignment)-1)) & ~(ULONG_PTR) ((_alignment) - 1))
61 
62 #define IS_ALIGNED(_pointer, _alignment) \
63  ((((ULONG_PTR) (_pointer)) & ((_alignment) - 1)) == 0)
64 
65 #define IRP_MJ_ACQUIRE_FOR_SECTION_SYNCHRONIZATION ((UCHAR)-1)
66 #define IRP_MJ_RELEASE_FOR_SECTION_SYNCHRONIZATION ((UCHAR)-2)
67 #define IRP_MJ_ACQUIRE_FOR_MOD_WRITE ((UCHAR)-3)
68 #define IRP_MJ_RELEASE_FOR_MOD_WRITE ((UCHAR)-4)
69 #define IRP_MJ_ACQUIRE_FOR_CC_FLUSH ((UCHAR)-5)
70 #define IRP_MJ_RELEASE_FOR_CC_FLUSH ((UCHAR)-6)
71 #define IRP_MJ_FAST_IO_CHECK_IF_POSSIBLE ((UCHAR)-13)
72 #define IRP_MJ_NETWORK_QUERY_OPEN ((UCHAR)-14)
73 #define IRP_MJ_MDL_READ ((UCHAR)-15)
74 #define IRP_MJ_MDL_READ_COMPLETE ((UCHAR)-16)
75 #define IRP_MJ_PREPARE_MDL_WRITE ((UCHAR)-17)
76 #define IRP_MJ_MDL_WRITE_COMPLETE ((UCHAR)-18)
77 #define IRP_MJ_VOLUME_MOUNT ((UCHAR)-19)
78 #define IRP_MJ_VOLUME_DISMOUNT ((UCHAR)-20)
79 #define IRP_MJ_OPERATION_END ((UCHAR)0x80)
80 #define FLT_INTERNAL_OPERATION_COUNT 22
81 
82 #define NULL_CONTEXT ((PFLT_CONTEXT)NULL)
83 
84 typedef struct _FLT_FILTER *PFLT_FILTER;
85 typedef struct _FLT_VOLUME *PFLT_VOLUME;
86 typedef struct _FLT_INSTANCE *PFLT_INSTANCE;
87 typedef struct _FLT_PORT *PFLT_PORT;
88 
90 
91 #if !FLT_MGR_LONGHORN
92 typedef struct _KTRANSACTION *PKTRANSACTION;
93 #endif
94 
95 #if !defined(_AMD64_) && !defined(_IA64_) && !defined(_ARM_)
96 #include "pshpack4.h"
97 #endif
98 
99 typedef union _FLT_PARAMETERS {
100  struct {
108  } Create;
109  struct {
111  ULONG Options;
115  } CreatePipe;
116  struct {
118  ULONG Options;
122  } CreateMailslot;
123  struct {
129  } Read;
130  struct {
131  ULONG Length;
136  } Write;
137  struct {
138  ULONG Length;
142  struct {
143  ULONG Length;
146  _ANONYMOUS_UNION union {
147  _ANONYMOUS_STRUCT struct {
150  } DUMMYSTRUCTNAME;
153  } DUMMYUNIONNAME;
156  struct {
157  ULONG Length;
161  PVOID EaBuffer;
163  } QueryEa;
164  struct {
165  ULONG Length;
166  PVOID EaBuffer;
168  } SetEa;
169  struct {
170  ULONG Length;
174  struct {
175  ULONG Length;
179  union {
180  struct {
181  ULONG Length;
187  } QueryDirectory;
188  struct {
189  ULONG Length;
195  } NotifyDirectory;
197  union {
198  struct {
201  } VerifyVolume;
202  struct {
206  } Common;
207  struct {
214  } Neither;
215  struct {
220  } Buffered;
221  struct {
228  } Direct;
230  union {
231  struct {
235  } Common;
236  struct {
243  } Neither;
244  struct {
249  } Buffered;
250  struct {
257  } Direct;
258  struct {
264  } FastIo;
265  } DeviceIoControl;
266  struct {
273  } LockControl;
274  struct {
279  } QuerySecurity;
280  struct {
283  } SetSecurity;
284  struct {
289  } WMI;
290  struct {
291  ULONG Length;
297  } QueryQuota;
298  struct {
299  ULONG Length;
302  } SetQuota;
303  union {
304  struct {
307  } StartDevice;
308  struct {
311  struct {
317  } QueryInterface;
318  struct {
321  struct {
324  struct {
326  PVOID Buffer;
329  } ReadWriteConfig;
330  struct {
332  } SetLock;
333  struct {
335  } QueryId;
336  struct {
339  } QueryDeviceText;
340  struct {
345  } Pnp;
346  struct {
350  struct {
354  struct {
357  struct {
359  ULONG Length;
363  struct {
367  struct {
372  } MdlRead;
373  struct {
375  } MdlReadComplete;
376  struct {
380  PMDL *MdlChain;
381  } PrepareMdlWrite;
382  struct {
384  PMDL MdlChain;
386  struct {
388  } MountVolume;
389  struct {
396  } Others;
398 
399 #if !defined(_AMD64_) && !defined(_IA64_) && !defined(_ARM_)
400 #include "poppack.h"
401 #endif
402 
403 typedef struct _FLT_IO_PARAMETER_BLOCK {
410  PFLT_INSTANCE TargetInstance;
413 
414 #define FLTFL_CALLBACK_DATA_REISSUE_MASK 0x0000FFFF
415 #define FLTFL_CALLBACK_DATA_IRP_OPERATION 0x00000001
416 #define FLTFL_CALLBACK_DATA_FAST_IO_OPERATION 0x00000002
417 #define FLTFL_CALLBACK_DATA_FS_FILTER_OPERATION 0x00000004
418 #define FLTFL_CALLBACK_DATA_SYSTEM_BUFFER 0x00000008
419 #define FLTFL_CALLBACK_DATA_GENERATED_IO 0x00010000
420 #define FLTFL_CALLBACK_DATA_REISSUED_IO 0x00020000
421 #define FLTFL_CALLBACK_DATA_DRAINING_IO 0x00040000
422 #define FLTFL_CALLBACK_DATA_POST_OPERATION 0x00080000
423 #define FLTFL_CALLBACK_DATA_NEW_SYSTEM_BUFFER 0x00100000
424 #define FLTFL_CALLBACK_DATA_DIRTY 0x80000000
425 
426 #define FLT_SET_CALLBACK_DATA_DIRTY(Data) FltSetCallbackDataDirty(Data)
427 #define FLT_CLEAR_CALLBACK_DATA_DIRTY(Data) FltClearCallbackDataDirty(Data)
428 #define FLT_IS_CALLBACK_DATA_DIRTY(Data) FltIsCallbackDataDirty(Data)
429 
430 #define FLT_IS_IRP_OPERATION(Data) (FlagOn((Data)->Flags, FLTFL_CALLBACK_DATA_IRP_OPERATION))
431 #define FLT_IS_FASTIO_OPERATION(Data) (FlagOn((Data)->Flags, FLTFL_CALLBACK_DATA_FAST_IO_OPERATION))
432 #define FLT_IS_FS_FILTER_OPERATION(Data) (FlagOn((Data)->Flags, FLTFL_CALLBACK_DATA_FS_FILTER_OPERATION))
433 #define FLT_IS_REISSUED_IO(Data) (FlagOn((Data)->Flags, FLTFL_CALLBACK_DATA_REISSUED_IO))
434 #define FLT_IS_SYSTEM_BUFFER(Data) (FlagOn((Data)->Flags, FLTFL_CALLBACK_DATA_SYSTEM_BUFFER))
435 
437 
438 #define FLT_VOLUME_CONTEXT 0x0001
439 #define FLT_INSTANCE_CONTEXT 0x0002
440 #define FLT_FILE_CONTEXT 0x0004
441 #define FLT_STREAM_CONTEXT 0x0008
442 #define FLT_STREAMHANDLE_CONTEXT 0x0010
443 #define FLT_TRANSACTION_CONTEXT 0x0020
444 #define FLT_CONTEXT_END 0xffff
445 
446 #define FLT_ALL_CONTEXTS (FLT_VOLUME_CONTEXT | FLT_INSTANCE_CONTEXT | \
447  FLT_FILE_CONTEXT | FLT_STREAM_CONTEXT | \
448  FLT_STREAMHANDLE_CONTEXT | FLT_TRANSACTION_CONTEXT)
449 
451 
452 #if FLT_MGR_WIN7
454 #define FLT_ALLOCATE_CALLBACK_DATA_PREALLOCATE_ALL_MEMORY 0x00000001
455 #endif /* FLT_MGR_WIN7 */
456 
457 typedef struct _FLT_CALLBACK_DATA {
458  FLT_CALLBACK_DATA_FLAGS Flags;
460  PFLT_IO_PARAMETER_BLOCK CONST Iopb;
463  _ANONYMOUS_UNION union {
464  _ANONYMOUS_STRUCT struct {
467  } DUMMYSTRUCTNAME;
469  } DUMMYUNIONNAME;
472 
473 typedef struct _FLT_RELATED_OBJECTS {
476  PFLT_FILTER CONST Filter;
477  PFLT_VOLUME CONST Volume;
478  PFLT_INSTANCE CONST Instance;
480  PKTRANSACTION CONST Transaction;
483 
484 typedef struct _FLT_RELATED_CONTEXTS {
485  PFLT_CONTEXT VolumeContext;
486  PFLT_CONTEXT InstanceContext;
487  PFLT_CONTEXT FileContext;
488  PFLT_CONTEXT StreamContext;
489  PFLT_CONTEXT StreamHandleContext;
490  PFLT_CONTEXT TransactionContext;
492 
493 typedef VOID
495  _In_ PFLT_CONTEXT Context,
496  _In_ FLT_CONTEXT_TYPE ContextType);
497 
498 typedef PVOID
501  _In_ SIZE_T Size,
502  _In_ FLT_CONTEXT_TYPE ContextType);
503 
504 typedef VOID
506  _In_ PVOID Pool,
507  _In_ FLT_CONTEXT_TYPE ContextType);
508 
510 
511 #define FLTFL_CONTEXT_REGISTRATION_NO_EXACT_SIZE_MATCH 0x0001
512 
513 #define FLT_VARIABLE_SIZED_CONTEXTS ((SIZE_T)-1)
514 
516  FLT_CONTEXT_TYPE ContextType;
517  FLT_CONTEXT_REGISTRATION_FLAGS Flags;
518  PFLT_CONTEXT_CLEANUP_CALLBACK ContextCleanupCallback;
521  PFLT_CONTEXT_ALLOCATE_CALLBACK ContextAllocateCallback;
522  PFLT_CONTEXT_FREE_CALLBACK ContextFreeCallback;
526 
528 
529 #define FLTFL_INSTANCE_SETUP_AUTOMATIC_ATTACHMENT 0x00000001
530 #define FLTFL_INSTANCE_SETUP_MANUAL_ATTACHMENT 0x00000002
531 #define FLTFL_INSTANCE_SETUP_NEWLY_MOUNTED_VOLUME 0x00000004
532 
533 #if FLT_MGR_LONGHORN
534 
535 #define FLTFL_INSTANCE_SETUP_DETACHED_VOLUME 0x00000008
536 
537 #define FLT_MAX_TRANSACTION_NOTIFICATIONS (TRANSACTION_NOTIFY_PREPREPARE | \
538  TRANSACTION_NOTIFY_PREPARE | \
539  TRANSACTION_NOTIFY_COMMIT | \
540  TRANSACTION_NOTIFY_ROLLBACK | \
541  TRANSACTION_NOTIFY_COMMIT_FINALIZE)
542 
543 #endif /* FLT_MGR_LONGHORN */
544 
545 typedef NTSTATUS
547  _In_ PCFLT_RELATED_OBJECTS FltObjects,
548  _In_ FLT_INSTANCE_SETUP_FLAGS Flags,
549  _In_ DEVICE_TYPE VolumeDeviceType,
550  _In_ FLT_FILESYSTEM_TYPE VolumeFilesystemType);
551 
553 
554 typedef NTSTATUS
556  _In_ PCFLT_RELATED_OBJECTS FltObjects,
557  _In_ FLT_INSTANCE_QUERY_TEARDOWN_FLAGS Flags);
558 
560 
561 #define FLTFL_INSTANCE_TEARDOWN_MANUAL 0x00000001
562 #define FLTFL_INSTANCE_TEARDOWN_FILTER_UNLOAD 0x00000002
563 #define FLTFL_INSTANCE_TEARDOWN_MANDATORY_FILTER_UNLOAD 0x00000004
564 #define FLTFL_INSTANCE_TEARDOWN_VOLUME_DISMOUNT 0x00000008
565 #define FLTFL_INSTANCE_TEARDOWN_INTERNAL_ERROR 0x00000010
566 
567 typedef VOID
569  _In_ PCFLT_RELATED_OBJECTS FltObjects,
570  _In_ FLT_INSTANCE_TEARDOWN_FLAGS Reason);
571 
580 
583  _Inout_ PFLT_CALLBACK_DATA Data,
584  _In_ PCFLT_RELATED_OBJECTS FltObjects,
586 
591 
593 
594 #define FLTFL_POST_OPERATION_DRAINING 0x00000001
595 
598  _Inout_ PFLT_CALLBACK_DATA Data,
599  _In_ PCFLT_RELATED_OBJECTS FltObjects,
601  _In_ FLT_POST_OPERATION_FLAGS Flags);
602 
604 
605 #define FLTFL_OPERATION_REGISTRATION_SKIP_PAGING_IO 0x00000001
606 #define FLTFL_OPERATION_REGISTRATION_SKIP_CACHED_IO 0x00000002
607 #define FLTFL_OPERATION_REGISTRATION_SKIP_NON_DASD_IO 0x00000004
608 
611  FLT_OPERATION_REGISTRATION_FLAGS Flags;
612  PFLT_PRE_OPERATION_CALLBACK PreOperation;
613  PFLT_POST_OPERATION_CALLBACK PostOperation;
616 
617 typedef struct _FLT_TAG_DATA_BUFFER {
621  _ANONYMOUS_UNION union {
622  struct {
630  struct {
635  WCHAR PathBuffer[1];
637  struct {
640  struct {
642  UCHAR DataBuffer[1];
644  } DUMMYUNIONNAME;
646 
647 #define FLT_TAG_DATA_BUFFER_HEADER_SIZE FIELD_OFFSET(FLT_TAG_DATA_BUFFER, GenericReparseBuffer)
648 
650 
651 #define FLTFL_FILTER_UNLOAD_MANDATORY 0x00000001
652 
653 typedef NTSTATUS
655  FLT_FILTER_UNLOAD_FLAGS Flags);
656 
657 typedef struct _FLT_NAME_CONTROL {
660 
662 
663 typedef NTSTATUS
665  _In_ PFLT_INSTANCE Instance,
667  _In_opt_ PFLT_CALLBACK_DATA CallbackData,
668  _In_ FLT_FILE_NAME_OPTIONS NameOptions,
669  _Out_ PBOOLEAN CacheFileNameInformation,
670  _Out_ PFLT_NAME_CONTROL FileName);
671 
673 
674 #define FLTFL_NORMALIZE_NAME_CASE_SENSITIVE 0x01
675 #define FLTFL_NORMALIZE_NAME_DESTINATION_FILE_NAME 0x02
676 
677 typedef NTSTATUS
679  _In_ PFLT_INSTANCE Instance,
680  _In_ PCUNICODE_STRING ParentDirectory,
681  _In_ USHORT VolumeNameLength,
682  _In_ PCUNICODE_STRING Component,
683  _Out_writes_bytes_(ExpandComponentNameLength) PFILE_NAMES_INFORMATION ExpandComponentName,
684  _In_ ULONG ExpandComponentNameLength,
685  _In_ FLT_NORMALIZE_NAME_FLAGS Flags,
686  _Inout_ PVOID *NormalizationContext);
687 
688 typedef NTSTATUS
690  _In_ PFLT_INSTANCE Instance,
691  _In_ PFILE_OBJECT FileObject,
692  _In_ PCUNICODE_STRING ParentDirectory,
693  _In_ USHORT VolumeNameLength,
694  _In_ PCUNICODE_STRING Component,
695  _Out_writes_bytes_(ExpandComponentNameLength) PFILE_NAMES_INFORMATION ExpandComponentName,
696  _In_ ULONG ExpandComponentNameLength,
697  _In_ FLT_NORMALIZE_NAME_FLAGS Flags,
698  _Inout_ PVOID *NormalizationContext);
699 
700 typedef VOID
702  _In_opt_ PVOID *NormalizationContext);
703 
704 #if FLT_MGR_LONGHORN
705 typedef NTSTATUS
707  _In_ PCFLT_RELATED_OBJECTS FltObjects,
708  _In_ PFLT_CONTEXT TransactionContext,
710 #endif /* FLT_MGR_LONGHORN */
711 
712 #define FLT_REGISTRATION_VERSION_0200 0x0200
713 #define FLT_REGISTRATION_VERSION_0201 0x0201
714 #define FLT_REGISTRATION_VERSION_0202 0x0202
715 #define FLT_REGISTRATION_VERSION_0203 0x0203
716 
717 #if FLT_MGR_LONGHORN
718 #define FLT_REGISTRATION_VERSION FLT_REGISTRATION_VERSION_0202
719 #else
720 #define FLT_REGISTRATION_VERSION FLT_REGISTRATION_VERSION_0200
721 #endif
722 
724 
725 #define FLTFL_REGISTRATION_DO_NOT_SUPPORT_SERVICE_STOP 0x00000001
726 #define FLTFL_REGISTRATION_SUPPORT_NPFS_MSFS 0x00000002
727 
728 typedef struct _FLT_REGISTRATION {
731  FLT_REGISTRATION_FLAGS Flags;
734  PFLT_FILTER_UNLOAD_CALLBACK FilterUnloadCallback;
735  PFLT_INSTANCE_SETUP_CALLBACK InstanceSetupCallback;
736  PFLT_INSTANCE_QUERY_TEARDOWN_CALLBACK InstanceQueryTeardownCallback;
737  PFLT_INSTANCE_TEARDOWN_CALLBACK InstanceTeardownStartCallback;
738  PFLT_INSTANCE_TEARDOWN_CALLBACK InstanceTeardownCompleteCallback;
739  PFLT_GENERATE_FILE_NAME GenerateFileNameCallback;
740  PFLT_NORMALIZE_NAME_COMPONENT NormalizeNameComponentCallback;
742 #if FLT_MGR_LONGHORN
743  PFLT_TRANSACTION_NOTIFICATION_CALLBACK TransactionNotificationCallback;
745 #endif /* FLT_MGR_LONGHORN */
747 
748 typedef VOID
750  _In_ PFLT_CALLBACK_DATA CallbackData,
751  _In_ PFLT_CONTEXT Context);
752 
754 
755 #define FLTFL_IO_OPERATION_NON_CACHED 0x00000001
756 #define FLTFL_IO_OPERATION_PAGING 0x00000002
757 #define FLTFL_IO_OPERATION_DO_NOT_UPDATE_BYTE_OFFSET 0x00000004
758 
759 #if FLT_MGR_LONGHORN
760 #define FLTFL_IO_OPERATION_SYNCHRONOUS_PAGING 0x00000008
761 #endif
762 
763 typedef VOID
765  _In_ PCFLT_RELATED_OBJECTS FltObjects,
766  _In_ PFLT_IO_PARAMETER_BLOCK IopbSnapshot,
769 
771 
772 #define FLT_VALID_FILE_NAME_FORMATS 0x000000ff
773 
774 #define FLT_FILE_NAME_NORMALIZED 0x01
775 #define FLT_FILE_NAME_OPENED 0x02
776 #define FLT_FILE_NAME_SHORT 0x03
777 
778 #define FltGetFileNameFormat( _NameOptions ) ((_NameOptions) & FLT_VALID_FILE_NAME_FORMATS)
779 
780 #define FLT_VALID_FILE_NAME_QUERY_METHODS 0x0000ff00
781 
782 #define FLT_FILE_NAME_QUERY_DEFAULT 0x0100
783 #define FLT_FILE_NAME_QUERY_CACHE_ONLY 0x0200
784 #define FLT_FILE_NAME_QUERY_FILESYSTEM_ONLY 0x0300
785 #define FLT_FILE_NAME_QUERY_ALWAYS_ALLOW_CACHE_LOOKUP 0x0400
786 
787 #define FltGetFileNameQueryMethod( _NameOptions ) ((_NameOptions) & FLT_VALID_FILE_NAME_QUERY_METHODS)
788 
789 #define FLT_VALID_FILE_NAME_FLAGS 0xff000000
790 
791 #define FLT_FILE_NAME_REQUEST_FROM_CURRENT_PROVIDER 0x01000000
792 #define FLT_FILE_NAME_DO_NOT_CACHE 0x02000000
793 
794 #if FLT_MGR_AFTER_XPSP2
795 #define FLT_FILE_NAME_ALLOW_QUERY_ON_REPARSE 0x04000000
796 #endif
797 
799 
800 #define FLTFL_FILE_NAME_PARSED_FINAL_COMPONENT 0x0001
801 #define FLTFL_FILE_NAME_PARSED_EXTENSION 0x0002
802 #define FLTFL_FILE_NAME_PARSED_STREAM 0x0004
803 #define FLTFL_FILE_NAME_PARSED_PARENT_DIR 0x0008
804 
807  FLT_FILE_NAME_PARSED_FLAGS NamesParsed;
808  FLT_FILE_NAME_OPTIONS Format;
817 
822 
823 typedef struct _FLT_VOLUME_PROPERTIES {
834 
835 #define FLT_PORT_CONNECT 0x0001
836 #define FLT_PORT_ALL_ACCESS (FLT_PORT_CONNECT | STANDARD_RIGHTS_ALL)
837 
838 typedef NTSTATUS
840  _In_opt_ PVOID PortCookie,
844  _In_ ULONG OutputBufferLength,
845  _Out_ PULONG ReturnOutputBufferLength);
846 
847 typedef NTSTATUS
849  _In_ PFLT_PORT ClientPort,
851  _In_reads_bytes_opt_(SizeOfContext) PVOID ConnectionContext,
853  _Outptr_result_maybenull_ PVOID *ConnectionPortCookie);
854 
855 typedef VOID
857  _In_opt_ PVOID ConnectionCookie);
858 
859 typedef VOID
861  _In_ PFLT_CALLBACK_DATA CallbackData);
862 
863 typedef struct _FLT_DEFERRED_IO_WORKITEM *PFLT_DEFERRED_IO_WORKITEM;
864 typedef struct _FLT_GENERIC_WORKITEM *PFLT_GENERIC_WORKITEM;
865 
866 typedef VOID
868  _In_ PFLT_DEFERRED_IO_WORKITEM FltWorkItem,
869  _In_ PFLT_CALLBACK_DATA CallbackData,
870  _In_opt_ PVOID Context);
871 
872 typedef VOID
874  _In_ PFLT_GENERIC_WORKITEM FltWorkItem,
876  _In_opt_ PVOID Context);
877 
879 
881 
882 typedef NTSTATUS
884  _Inout_ PFLT_CALLBACK_DATA_QUEUE Cbdq,
885  _In_ PFLT_CALLBACK_DATA Cbd,
887 
888 typedef VOID
890  _Inout_ PFLT_CALLBACK_DATA_QUEUE Cbdq,
891  _In_ PFLT_CALLBACK_DATA Cbd);
892 
893 typedef PFLT_CALLBACK_DATA
895  _In_ PFLT_CALLBACK_DATA_QUEUE Cbdq,
896  _In_opt_ PFLT_CALLBACK_DATA Cbd,
898 
899 typedef VOID
901  _Inout_ PFLT_CALLBACK_DATA_QUEUE Cbdq,
903 
904 typedef VOID
906  _Inout_ PFLT_CALLBACK_DATA_QUEUE Cbdq,
907  _In_opt_ KIRQL Irql);
908 
909 typedef VOID
911  _Inout_ PFLT_CALLBACK_DATA_QUEUE Cbdq,
912  _Inout_ PFLT_CALLBACK_DATA Cbd);
913 
915 
918  FLT_CALLBACK_DATA_QUEUE_FLAGS Flags;
919  PFLT_INSTANCE Instance;
927 
928 typedef NTSTATUS
931  _In_ PFLT_CALLBACK_DATA CallbackData);
932 
933 typedef VOID
935  _In_ PFLT_CALLBACK_DATA CallbackData,
937 
938 typedef VOID
940  _In_ PFLT_CALLBACK_DATA CallbackData,
942 
943 VOID
944 FLTAPI
946  _Inout_ PFLT_CALLBACK_DATA Data);
947 
948 VOID
949 FLTAPI
951  _Inout_ PFLT_CALLBACK_DATA Data);
952 
953 BOOLEAN
954 FLTAPI
956  _In_ PFLT_CALLBACK_DATA Data);
957 
959 BOOLEAN
960 FLTAPI
962  _In_ PFLT_CALLBACK_DATA Data,
963  _In_ PCFLT_RELATED_OBJECTS FltObjects,
964  _In_opt_ PVOID CompletionContext,
965  _In_ FLT_POST_OPERATION_FLAGS Flags,
966  _In_ PFLT_POST_OPERATION_CALLBACK SafePostCallback,
967  _Out_ PFLT_POSTOP_CALLBACK_STATUS RetPostOperationStatus);
968 
971 NTSTATUS
972 FLTAPI
973 FltCheckAndGrowNameControl(
974  _Inout_ PFLT_NAME_CONTROL NameCtrl,
976 
979 NTSTATUS
980 FLTAPI
981 FltPurgeFileNameInformationCache(
982  _In_ PFLT_INSTANCE Instance,
983  _In_opt_ PFILE_OBJECT FileObject);
984 
987 NTSTATUS
988 FLTAPI
992  _Outptr_ PFLT_FILTER *RetFilter);
993 
995 VOID
996 FLTAPI
998  _In_ PFLT_FILTER Filter);
999 
1002 NTSTATUS
1003 FLTAPI
1005  _In_ PFLT_FILTER Filter);
1006 
1009 PVOID
1010 FLTAPI
1011 FltGetRoutineAddress(
1012  _In_ PCSTR FltMgrRoutineName);
1013 
1015 _When_(CallbackStatus!=FLT_PREOP_COMPLETE, _IRQL_requires_max_(APC_LEVEL))
1016 VOID
1017 FLTAPI
1018 FltCompletePendedPreOperation(
1019  _In_ PFLT_CALLBACK_DATA CallbackData,
1021  _In_opt_ PVOID Context);
1022 
1024 VOID
1025 FLTAPI
1026 FltCompletePendedPostOperation(
1027  _In_ PFLT_CALLBACK_DATA CallbackData);
1028 
1031 NTSTATUS
1032 FLTAPI
1033 FltRequestOperationStatusCallback(
1034  _In_ PFLT_CALLBACK_DATA Data,
1035  _In_ PFLT_GET_OPERATION_STATUS_CALLBACK CallbackRoutine,
1037 
1038 _When_((PoolType==NonPagedPoolNx), _IRQL_requires_max_(DISPATCH_LEVEL))
1039 _When_((PoolType!=NonPagedPoolNx), _IRQL_requires_max_(APC_LEVEL))
1040 PVOID
1041 FLTAPI
1042 FltAllocatePoolAlignedWithTag(
1043  _In_ PFLT_INSTANCE Instance,
1044  _In_ POOL_TYPE PoolType,
1046  _In_ ULONG Tag);
1047 
1049 VOID
1050 FLTAPI
1051 FltFreePoolAlignedWithTag(
1052  _In_ PFLT_INSTANCE Instance,
1054  _In_ ULONG Tag);
1055 
1058 NTSTATUS
1059 FLTAPI
1060 FltGetFileNameInformation(
1061  _In_ PFLT_CALLBACK_DATA CallbackData,
1062  _In_ FLT_FILE_NAME_OPTIONS NameOptions,
1063  _Outptr_ PFLT_FILE_NAME_INFORMATION *FileNameInformation);
1064 
1067 NTSTATUS
1068 FLTAPI
1069 FltGetFileNameInformationUnsafe(
1070  _In_ PFILE_OBJECT FileObject,
1071  _In_opt_ PFLT_INSTANCE Instance,
1072  _In_ FLT_FILE_NAME_OPTIONS NameOptions,
1073  _Outptr_ PFLT_FILE_NAME_INFORMATION *FileNameInformation);
1074 
1076 VOID
1077 FLTAPI
1078 FltReleaseFileNameInformation(
1079  _In_ PFLT_FILE_NAME_INFORMATION FileNameInformation);
1080 
1082 VOID
1083 FLTAPI
1084 FltReferenceFileNameInformation(
1085  _In_ PFLT_FILE_NAME_INFORMATION FileNameInformation);
1086 
1088 NTSTATUS
1089 FLTAPI
1090 FltParseFileName(
1095 
1097 NTSTATUS
1098 FLTAPI
1099 FltParseFileNameInformation(
1100  _Inout_ PFLT_FILE_NAME_INFORMATION FileNameInformation);
1101 
1104 NTSTATUS
1105 FLTAPI
1106 FltGetTunneledName(
1107  _In_ PFLT_CALLBACK_DATA CallbackData,
1108  _In_ PFLT_FILE_NAME_INFORMATION FileNameInformation,
1109  _Outptr_result_maybenull_ PFLT_FILE_NAME_INFORMATION *RetTunneledFileNameInformation);
1110 
1113 NTSTATUS
1114 FLTAPI
1115 FltGetVolumeName(
1116  _In_ PFLT_VOLUME Volume,
1119 
1122 NTSTATUS
1123 FLTAPI
1124 FltGetDestinationFileNameInformation(
1125  _In_ PFLT_INSTANCE Instance,
1126  _In_ PFILE_OBJECT FileObject,
1130  _In_ FLT_FILE_NAME_OPTIONS NameOptions,
1131  _Outptr_ PFLT_FILE_NAME_INFORMATION *RetFileNameInformation);
1132 
1135 NTSTATUS
1136 FLTAPI
1137 FltIsDirectory(
1138  _In_ PFILE_OBJECT FileObject,
1139  _In_ PFLT_INSTANCE Instance,
1141 
1144 NTSTATUS
1145 FLTAPI
1147  _In_ PCUNICODE_STRING FilterName);
1148 
1151 NTSTATUS
1152 FLTAPI
1154  _In_ PCUNICODE_STRING FilterName);
1155 
1158 NTSTATUS
1159 FLTAPI
1160 FltAttachVolume(
1161  _Inout_ PFLT_FILTER Filter,
1162  _Inout_ PFLT_VOLUME Volume,
1165 
1168 NTSTATUS
1169 FLTAPI
1170 FltAttachVolumeAtAltitude(
1171  _Inout_ PFLT_FILTER Filter,
1172  _Inout_ PFLT_VOLUME Volume,
1174  _In_opt_ PCUNICODE_STRING InstanceName,
1175  _Outptr_opt_result_maybenull_ PFLT_INSTANCE *RetInstance);
1176 
1179 NTSTATUS
1180 FLTAPI
1181 FltDetachVolume(
1182  _Inout_ PFLT_FILTER Filter,
1183  _Inout_ PFLT_VOLUME Volume,
1184  _In_opt_ PCUNICODE_STRING InstanceName);
1185 
1188 NTSTATUS
1189 FLTAPI
1190 FltAllocateCallbackData(
1191  _In_ PFLT_INSTANCE Instance,
1193  _Outptr_ PFLT_CALLBACK_DATA *RetNewCallbackData);
1194 
1196 VOID
1197 FLTAPI
1198 FltFreeCallbackData(
1199  _In_ PFLT_CALLBACK_DATA CallbackData);
1200 
1202 VOID
1203 FLTAPI
1204 FltReuseCallbackData(
1205  _Inout_ PFLT_CALLBACK_DATA CallbackData);
1206 
1207 _When_(FlagOn(CallbackData->Iopb->IrpFlags, IRP_PAGING_IO), _IRQL_requires_max_(APC_LEVEL))
1208 _When_(!FlagOn(CallbackData->Iopb->IrpFlags, IRP_PAGING_IO), _IRQL_requires_max_(PASSIVE_LEVEL))
1209 VOID
1210 FLTAPI
1211 FltPerformSynchronousIo(
1212  _Inout_ PFLT_CALLBACK_DATA CallbackData);
1213 
1215 _When_( FlagOn(CallbackData->Iopb->IrpFlags, IRP_PAGING_IO), _IRQL_requires_max_(APC_LEVEL))
1216 _When_( !FlagOn(CallbackData->Iopb->IrpFlags, IRP_PAGING_IO), _IRQL_requires_max_(PASSIVE_LEVEL))
1217 NTSTATUS
1218 FLTAPI
1219 FltPerformAsynchronousIo(
1220  _Inout_ PFLT_CALLBACK_DATA CallbackData,
1221  _In_ PFLT_COMPLETED_ASYNC_IO_CALLBACK CallbackRoutine,
1223 
1226 NTSTATUS
1227 FLTAPI
1228 FltCreateFile(
1229  _In_ PFLT_FILTER Filter,
1230  _In_opt_ PFLT_INSTANCE Instance,
1242  _In_ ULONG Flags);
1243 
1247 NTSTATUS
1248 FLTAPI
1249 FltReadFile(
1250  _In_ PFLT_INSTANCE InitiatingInstance,
1251  _In_ PFILE_OBJECT FileObject,
1253  _In_ ULONG Length,
1254  _Out_writes_bytes_to_(Length,*BytesRead) PVOID Buffer,
1255  _In_ FLT_IO_OPERATION_FLAGS Flags,
1257  _In_opt_ PFLT_COMPLETED_ASYNC_IO_CALLBACK CallbackRoutine,
1258  _In_opt_ PVOID CallbackContext);
1259 
1262 NTSTATUS
1263 FLTAPI
1264 FltTagFile(
1265  _In_ PFLT_INSTANCE InitiatingInstance,
1266  _In_ PFILE_OBJECT FileObject,
1267  _In_ ULONG FileTag,
1268  _In_opt_ GUID *Guid,
1271 
1274 NTSTATUS
1275 FLTAPI
1276 FltUntagFile(
1277  _In_ PFLT_INSTANCE InitiatingInstance,
1278  _In_ PFILE_OBJECT FileObject,
1279  _In_ ULONG FileTag,
1280  _In_opt_ GUID *Guid);
1281 
1284 _When_((Flags|FLTFL_IO_OPERATION_PAGING|FLTFL_IO_OPERATION_SYNCHRONOUS_PAGING),_IRQL_requires_max_(APC_LEVEL))
1285 NTSTATUS
1286 FLTAPI
1287 FltWriteFile(
1288  _In_ PFLT_INSTANCE InitiatingInstance,
1289  _In_ PFILE_OBJECT FileObject,
1290  _In_opt_ PLARGE_INTEGER ByteOffset,
1291  _In_ ULONG Length,
1292  _In_reads_bytes_(Length) PVOID Buffer,
1293  _In_ FLT_IO_OPERATION_FLAGS Flags,
1295  _In_opt_ PFLT_COMPLETED_ASYNC_IO_CALLBACK CallbackRoutine,
1296  _In_opt_ PVOID CallbackContext);
1297 
1300 NTSTATUS
1301 FLTAPI
1302 FltQueryInformationFile(
1303  _In_ PFLT_INSTANCE Instance,
1304  _In_ PFILE_OBJECT FileObject,
1306  _In_ ULONG Length,
1309 
1312 NTSTATUS
1313 FLTAPI
1314 FltSetInformationFile(
1315  _In_ PFLT_INSTANCE Instance,
1316  _In_ PFILE_OBJECT FileObject,
1317  _In_reads_bytes_(Length) PVOID FileInformation,
1318  _In_ ULONG Length,
1319  _In_ FILE_INFORMATION_CLASS FileInformationClass);
1320 
1323 NTSTATUS
1324 FLTAPI
1325 FltQueryVolumeInformationFile(
1326  _In_ PFLT_INSTANCE Instance,
1327  _In_ PFILE_OBJECT FileObject,
1328  _Out_writes_bytes_to_(Length,*LengthReturned) PVOID FsInformation,
1329  _In_ ULONG Length,
1331  _Out_opt_ PULONG LengthReturned);
1332 
1335 NTSTATUS
1336 FLTAPI
1337 FltQuerySecurityObject(
1338  _In_ PFLT_INSTANCE Instance,
1339  _In_ PFILE_OBJECT FileObject,
1342  _In_ ULONG Length,
1344 
1347 NTSTATUS
1348 FLTAPI
1349 FltSetSecurityObject(
1350  _In_ PFLT_INSTANCE Instance,
1351  _In_ PFILE_OBJECT FileObject,
1352  _In_ SECURITY_INFORMATION SecurityInformation,
1353  _In_ PSECURITY_DESCRIPTOR SecurityDescriptor);
1354 
1357 NTSTATUS
1358 FLTAPI
1359 FltFlushBuffers(
1360  _In_ PFLT_INSTANCE Instance,
1361  _In_ PFILE_OBJECT FileObject);
1362 
1365 NTSTATUS
1366 FLTAPI
1367 FltFsControlFile(
1368  _In_ PFLT_INSTANCE Instance,
1369  _In_ PFILE_OBJECT FileObject,
1374  _In_ ULONG OutputBufferLength,
1375  _Out_opt_ PULONG LengthReturned);
1376 
1379 NTSTATUS
1380 FLTAPI
1381 FltDeviceIoControlFile(
1382  _In_ PFLT_INSTANCE Instance,
1383  _In_ PFILE_OBJECT FileObject,
1385  _In_reads_bytes_opt_(InputBufferLength) PVOID InputBuffer,
1386  _In_ ULONG InputBufferLength,
1387  _Out_writes_bytes_to_opt_(OutputBufferLength,*LengthReturned) PVOID OutputBuffer,
1388  _In_ ULONG OutputBufferLength,
1389  _Out_opt_ PULONG LengthReturned);
1390 
1392 _When_(FlagOn(CallbackData->Iopb->IrpFlags, IRP_PAGING_IO), _IRQL_requires_max_(APC_LEVEL))
1393 _When_(!FlagOn(CallbackData->Iopb->IrpFlags, IRP_PAGING_IO), _IRQL_requires_max_(PASSIVE_LEVEL))
1394 VOID
1395 FLTAPI
1396 FltReissueSynchronousIo(
1397  _In_ PFLT_INSTANCE InitiatingInstance,
1398  _In_ PFLT_CALLBACK_DATA CallbackData);
1399 
1401 NTSTATUS
1402 FLTAPI
1403 FltClose(
1404  _In_ HANDLE FileHandle);
1405 
1407 VOID
1408 FLTAPI
1409 FltCancelFileOpen(
1410  _In_ PFLT_INSTANCE Instance,
1411  _In_ PFILE_OBJECT FileObject);
1412 
1415 NTSTATUS
1416 FLTAPI
1417 FltCreateSystemVolumeInformationFolder(
1418  _In_ PFLT_INSTANCE Instance);
1419 
1421 BOOLEAN
1422 FLTAPI
1423 FltSupportsFileContexts(
1424  _In_ PFILE_OBJECT FileObject);
1425 
1427 BOOLEAN
1428 FLTAPI
1429 FltSupportsStreamContexts(
1430  _In_ PFILE_OBJECT FileObject);
1431 
1433 BOOLEAN
1434 FLTAPI
1435 FltSupportsStreamHandleContexts(
1436  _In_ PFILE_OBJECT FileObject);
1437 
1440 NTSTATUS
1441 FLTAPI
1442 FltAllocateContext(
1443  _In_ PFLT_FILTER Filter,
1444  _In_ FLT_CONTEXT_TYPE ContextType,
1446  _In_ POOL_TYPE PoolType,
1447  _Outptr_result_bytebuffer_(ContextSize) PFLT_CONTEXT *ReturnedContext);
1448 
1450 VOID
1451 FLTAPI
1452 FltGetContexts(
1453  _In_ PCFLT_RELATED_OBJECTS FltObjects,
1454  _In_ FLT_CONTEXT_TYPE DesiredContexts,
1455  _Out_ PFLT_RELATED_CONTEXTS Contexts);
1456 
1458 VOID
1459 FLTAPI
1460 FltReleaseContexts(
1461  _In_ PFLT_RELATED_CONTEXTS Contexts);
1462 
1464 NTSTATUS
1465 FLTAPI
1466 FltSetVolumeContext(
1467  _In_ PFLT_VOLUME Volume,
1469  _In_ PFLT_CONTEXT NewContext,
1471 
1473 NTSTATUS
1474 FLTAPI
1475 FltSetInstanceContext(
1476  _In_ PFLT_INSTANCE Instance,
1477  _In_ FLT_SET_CONTEXT_OPERATION Operation,
1478  _In_ PFLT_CONTEXT NewContext,
1479  _Outptr_opt_result_maybenull_ PFLT_CONTEXT *OldContext);
1480 
1482 NTSTATUS
1483 FLTAPI
1484 FltSetFileContext(
1485  _In_ PFLT_INSTANCE Instance,
1486  _In_ PFILE_OBJECT FileObject,
1487  _In_ FLT_SET_CONTEXT_OPERATION Operation,
1488  _In_ PFLT_CONTEXT NewContext,
1489  _Outptr_opt_result_maybenull_ PFLT_CONTEXT *OldContext);
1490 
1492 NTSTATUS
1493 FLTAPI
1494 FltSetStreamContext(
1495  _In_ PFLT_INSTANCE Instance,
1496  _In_ PFILE_OBJECT FileObject,
1497  _In_ FLT_SET_CONTEXT_OPERATION Operation,
1498  _In_ PFLT_CONTEXT NewContext,
1499  _Outptr_opt_result_maybenull_ PFLT_CONTEXT *OldContext);
1500 
1502 NTSTATUS
1503 FLTAPI
1504 FltSetStreamHandleContext(
1505  _In_ PFLT_INSTANCE Instance,
1506  _In_ PFILE_OBJECT FileObject,
1507  _In_ FLT_SET_CONTEXT_OPERATION Operation,
1508  _In_ PFLT_CONTEXT NewContext,
1509  _Outptr_opt_result_maybenull_ PFLT_CONTEXT *OldContext);
1510 
1512 VOID
1513 FLTAPI
1514 FltDeleteContext(
1515  _In_ PFLT_CONTEXT Context);
1516 
1518 NTSTATUS
1519 FLTAPI
1520 FltDeleteVolumeContext(
1521  _In_ PFLT_FILTER Filter,
1522  _In_ PFLT_VOLUME Volume,
1523  _Outptr_opt_result_maybenull_ PFLT_CONTEXT *OldContext);
1524 
1526 NTSTATUS
1527 FLTAPI
1528 FltDeleteInstanceContext(
1529  _In_ PFLT_INSTANCE Instance,
1530  _Outptr_opt_result_maybenull_ PFLT_CONTEXT *OldContext);
1531 
1533 NTSTATUS
1534 FLTAPI
1535 FltDeleteFileContext(
1536  _In_ PFLT_INSTANCE Instance,
1537  _In_ PFILE_OBJECT FileObject,
1538  _Outptr_opt_result_maybenull_ PFLT_CONTEXT *OldContext);
1539 
1541 NTSTATUS
1542 FLTAPI
1543 FltDeleteStreamContext(
1544  _In_ PFLT_INSTANCE Instance,
1545  _In_ PFILE_OBJECT FileObject,
1546  _Outptr_opt_result_maybenull_ PFLT_CONTEXT *OldContext);
1547 
1549 NTSTATUS
1550 FLTAPI
1551 FltDeleteStreamHandleContext(
1552  _In_ PFLT_INSTANCE Instance,
1553  _In_ PFILE_OBJECT FileObject,
1554  _Outptr_opt_result_maybenull_ PFLT_CONTEXT *OldContext);
1555 
1557 NTSTATUS
1558 FLTAPI
1559 FltGetVolumeContext(
1560  _In_ PFLT_FILTER Filter,
1561  _In_ PFLT_VOLUME Volume,
1562  _Outptr_ PFLT_CONTEXT *Context);
1563 
1565 NTSTATUS
1566 FLTAPI
1567 FltGetInstanceContext(
1568  _In_ PFLT_INSTANCE Instance,
1569  _Outptr_ PFLT_CONTEXT *Context);
1570 
1572 NTSTATUS
1573 FLTAPI
1574 FltGetFileContext(
1575  _In_ PFLT_INSTANCE Instance,
1576  _In_ PFILE_OBJECT FileObject,
1577  _Outptr_ PFLT_CONTEXT *Context);
1578 
1580 NTSTATUS
1581 FLTAPI
1582 FltGetStreamContext(
1583  _In_ PFLT_INSTANCE Instance,
1584  _In_ PFILE_OBJECT FileObject,
1585  _Outptr_ PFLT_CONTEXT *Context);
1586 
1588 NTSTATUS
1589 FLTAPI
1590 FltGetStreamHandleContext(
1591  _In_ PFLT_INSTANCE Instance,
1592  _In_ PFILE_OBJECT FileObject,
1593  _Outptr_ PFLT_CONTEXT *Context);
1594 
1596 VOID
1597 FLTAPI
1598 FltReferenceContext(
1599  _In_ PFLT_CONTEXT Context);
1600 
1602 VOID
1603 FLTAPI
1604 FltReleaseContext(
1605  _In_ PFLT_CONTEXT Context);
1606 
1608 NTSTATUS
1609 FLTAPI
1610 FltGetFilterFromName(
1611  _In_ PCUNICODE_STRING FilterName,
1612  _Outptr_ PFLT_FILTER *RetFilter);
1613 
1615 NTSTATUS
1616 FLTAPI
1617 FltGetVolumeFromName(
1618  _In_ PFLT_FILTER Filter,
1620  _Outptr_ PFLT_VOLUME *RetVolume);
1621 
1623 NTSTATUS
1624 FLTAPI
1625 FltGetVolumeInstanceFromName(
1626  _In_opt_ PFLT_FILTER Filter,
1627  _In_ PFLT_VOLUME Volume,
1628  _In_opt_ PCUNICODE_STRING InstanceName,
1629  _Outptr_ PFLT_INSTANCE *RetInstance);
1630 
1632 NTSTATUS
1633 FLTAPI
1634 FltGetVolumeFromInstance(
1635  _In_ PFLT_INSTANCE Instance,
1636  _Outptr_ PFLT_VOLUME *RetVolume);
1637 
1639 NTSTATUS
1640 FLTAPI
1641 FltGetFilterFromInstance(
1642  _In_ PFLT_INSTANCE Instance,
1643  _Outptr_ PFLT_FILTER *RetFilter);
1644 
1646 NTSTATUS
1647 FLTAPI
1648 FltGetVolumeFromFileObject(
1649  _In_ PFLT_FILTER Filter,
1650  _In_ PFILE_OBJECT FileObject,
1651  _Outptr_ PFLT_VOLUME *RetVolume);
1652 
1654 NTSTATUS
1655 FLTAPI
1656 FltGetVolumeFromDeviceObject(
1657  _In_ PFLT_FILTER Filter,
1659  _Outptr_ PFLT_VOLUME *RetVolume);
1660 
1662 NTSTATUS
1663 FLTAPI
1664 FltGetDeviceObject(
1665  _In_ PFLT_VOLUME Volume,
1666  _Outptr_ PDEVICE_OBJECT *DeviceObject);
1667 
1669 NTSTATUS
1670 FLTAPI
1671 FltGetDiskDeviceObject(
1672  _In_ PFLT_VOLUME Volume,
1674 
1676 NTSTATUS
1677 FLTAPI
1678 FltGetLowerInstance(
1679  _In_ PFLT_INSTANCE CurrentInstance,
1680  _Outptr_ PFLT_INSTANCE *LowerInstance);
1681 
1683 NTSTATUS
1684 FLTAPI
1685 FltGetUpperInstance(
1686  _In_ PFLT_INSTANCE CurrentInstance,
1687  _Outptr_ PFLT_INSTANCE *UpperInstance);
1688 
1690 NTSTATUS
1691 FLTAPI
1692 FltGetTopInstance(
1693  _In_ PFLT_VOLUME Volume,
1694  _Outptr_ PFLT_INSTANCE *Instance);
1695 
1697 NTSTATUS
1698 FLTAPI
1699 FltGetBottomInstance(
1700  _In_ PFLT_VOLUME Volume,
1701  _Outptr_ PFLT_INSTANCE *Instance);
1702 
1703 LONG
1704 FLTAPI
1706  _In_ PFLT_INSTANCE Instance1,
1707  _In_ PFLT_INSTANCE Instance2);
1708 
1710 NTSTATUS
1711 FLTAPI
1712 FltGetFilterInformation(
1713  _In_ PFLT_FILTER Filter,
1714  _In_ FILTER_INFORMATION_CLASS InformationClass,
1716  _In_ ULONG BufferSize,
1718 
1720 NTSTATUS
1721 FLTAPI
1722 FltGetInstanceInformation(
1723  _In_ PFLT_INSTANCE Instance,
1724  _In_ INSTANCE_INFORMATION_CLASS InformationClass,
1725  _Out_writes_bytes_to_opt_(BufferSize,*BytesReturned) PVOID Buffer,
1726  _In_ ULONG BufferSize,
1727  _Out_ PULONG BytesReturned);
1728 
1730 NTSTATUS
1731 FLTAPI
1732 FltGetVolumeProperties(
1733  _In_ PFLT_VOLUME Volume,
1734  _Out_writes_bytes_to_opt_(VolumePropertiesLength,*LengthReturned) PFLT_VOLUME_PROPERTIES VolumeProperties,
1735  _In_ ULONG VolumePropertiesLength,
1736  _Out_ PULONG LengthReturned);
1737 
1740 NTSTATUS
1741 FLTAPI
1742 FltIsVolumeWritable(
1745 
1748 NTSTATUS
1749 FLTAPI
1750 FltGetVolumeGuidName(
1751  _In_ PFLT_VOLUME Volume,
1753  _Out_opt_ PULONG BufferSizeNeeded);
1754 
1757 NTSTATUS
1758 FLTAPI
1759 FltQueryVolumeInformation(
1760  _In_ PFLT_INSTANCE Instance,
1762  _Out_writes_bytes_(Length) PVOID FsInformation,
1763  _In_ ULONG Length,
1764  _In_ FS_INFORMATION_CLASS FsInformationClass);
1765 
1768 NTSTATUS
1769 FLTAPI
1770 FltSetVolumeInformation(
1771  _In_ PFLT_INSTANCE Instance,
1772  _Out_ PIO_STATUS_BLOCK Iosb,
1773  _Out_writes_bytes_(Length) PVOID FsInformation,
1774  _In_ ULONG Length,
1775  _In_ FS_INFORMATION_CLASS FsInformationClass);
1776 
1779 NTSTATUS
1780 FLTAPI
1781 FltEnumerateFilters(
1783  _In_ ULONG FilterListSize,
1785 
1788 NTSTATUS
1789 FLTAPI
1790 FltEnumerateVolumes(
1791  _In_ PFLT_FILTER Filter,
1792  _Out_writes_to_opt_(VolumeListSize,*NumberVolumesReturned) PFLT_VOLUME *VolumeList,
1793  _In_ ULONG VolumeListSize,
1795 
1798 NTSTATUS
1799 FLTAPI
1800 FltEnumerateInstances(
1801  _In_opt_ PFLT_VOLUME Volume,
1802  _In_opt_ PFLT_FILTER Filter,
1803  _Out_writes_to_opt_(InstanceListSize,*NumberInstancesReturned) PFLT_INSTANCE *InstanceList,
1804  _In_ ULONG InstanceListSize,
1806 
1809 NTSTATUS
1810 FLTAPI
1811 FltEnumerateFilterInformation(
1812  _In_ ULONG Index,
1813  _In_ FILTER_INFORMATION_CLASS InformationClass,
1814  _Out_writes_bytes_to_opt_(BufferSize,*BytesReturned) PVOID Buffer,
1815  _In_ ULONG BufferSize,
1816  _Out_ PULONG BytesReturned);
1817 
1820 NTSTATUS
1821 FLTAPI
1822 FltEnumerateInstanceInformationByFilter(
1823  _In_ PFLT_FILTER Filter,
1824  _In_ ULONG Index,
1825  _In_ INSTANCE_INFORMATION_CLASS InformationClass,
1826  _Out_writes_bytes_to_opt_(BufferSize,*BytesReturned) PVOID Buffer,
1827  _In_ ULONG BufferSize,
1828  _Out_ PULONG BytesReturned);
1829 
1832 NTSTATUS
1833 FLTAPI
1834 FltEnumerateInstanceInformationByVolume(
1835  _In_ PFLT_VOLUME Volume,
1836  _In_ ULONG Index,
1837  _In_ INSTANCE_INFORMATION_CLASS InformationClass,
1838  _Out_writes_bytes_to_opt_(BufferSize,*BytesReturned) PVOID Buffer,
1839  _In_ ULONG BufferSize,
1840  _Out_ PULONG BytesReturned);
1841 
1844 NTSTATUS
1845 FLTAPI
1846 FltEnumerateVolumeInformation(
1847  _In_ PFLT_FILTER Filter,
1848  _In_ ULONG Index,
1849  _In_ FILTER_VOLUME_INFORMATION_CLASS InformationClass,
1850  _Out_writes_bytes_to_opt_(BufferSize,*BytesReturned) PVOID Buffer,
1851  _In_ ULONG BufferSize,
1852  _Out_ PULONG BytesReturned);
1853 
1856 NTSTATUS
1857 FLTAPI
1859  _Inout_ PVOID FltObject);
1860 
1862 VOID
1863 FLTAPI
1865  _Inout_ PVOID FltObject);
1866 
1869 NTSTATUS
1870 FLTAPI
1871 FltCreateCommunicationPort(
1872  _In_ PFLT_FILTER Filter,
1873  _Outptr_ PFLT_PORT *ServerPort,
1874  _In_ POBJECT_ATTRIBUTES ObjectAttributes,
1878  _In_opt_ PFLT_MESSAGE_NOTIFY MessageNotifyCallback,
1880 
1882 VOID
1883 FLTAPI
1884 FltCloseCommunicationPort(
1885  _In_ PFLT_PORT ServerPort);
1886 
1888 VOID
1889 FLTAPI
1890 FltCloseClientPort(
1891  _In_ PFLT_FILTER Filter,
1892  _Outptr_ PFLT_PORT *ClientPort);
1893 
1896 NTSTATUS
1897 FLTAPI
1898 FltSendMessage(
1899  _In_ PFLT_FILTER Filter,
1900  _In_ PFLT_PORT *ClientPort,
1906 
1909 NTSTATUS
1910 FLTAPI
1911 FltBuildDefaultSecurityDescriptor(
1912  _Outptr_ PSECURITY_DESCRIPTOR *SecurityDescriptor,
1913  _In_ ACCESS_MASK DesiredAccess);
1914 
1916 VOID
1917 FLTAPI
1918 FltFreeSecurityDescriptor(
1919  _In_ PSECURITY_DESCRIPTOR SecurityDescriptor);
1920 
1923 BOOLEAN
1924 FLTAPI
1925 FltCancelIo(
1926  _In_ PFLT_CALLBACK_DATA CallbackData);
1927 
1929 NTSTATUS
1930 FLTAPI
1931 FltSetCancelCompletion(
1932  _In_ PFLT_CALLBACK_DATA CallbackData,
1934 
1937 NTSTATUS
1938 FLTAPI
1939 FltClearCancelCompletion(
1940  _In_ PFLT_CALLBACK_DATA CallbackData);
1941 
1942 BOOLEAN
1943 FLTAPI
1945  _In_ PFLT_CALLBACK_DATA CallbackData);
1946 
1950 FLTAPI
1951 FltAllocateDeferredIoWorkItem(VOID);
1952 
1954 VOID
1955 FLTAPI
1956 FltFreeDeferredIoWorkItem(
1957  _In_ PFLT_DEFERRED_IO_WORKITEM FltWorkItem);
1958 
1962 FLTAPI
1963 FltAllocateGenericWorkItem(VOID);
1964 
1966 VOID
1967 FLTAPI
1968 FltFreeGenericWorkItem(
1969  _In_ PFLT_GENERIC_WORKITEM FltWorkItem);
1970 
1973 NTSTATUS
1974 FLTAPI
1975 FltQueueDeferredIoWorkItem(
1976  _In_ PFLT_DEFERRED_IO_WORKITEM FltWorkItem,
1977  _In_ PFLT_CALLBACK_DATA Data,
1980  _In_ PVOID Context);
1981 
1984 NTSTATUS
1985 FLTAPI
1986 FltQueueGenericWorkItem(
1987  _In_ PFLT_GENERIC_WORKITEM FltWorkItem,
1988  _In_ PVOID FltObject,
1989  _In_ PFLT_GENERIC_WORKITEM_ROUTINE WorkerRoutine,
1990  _In_ WORK_QUEUE_TYPE QueueType,
1991  _In_opt_ PVOID Context);
1992 
1995 NTSTATUS
1996 FLTAPI
1997 FltLockUserBuffer(
1998  _In_ PFLT_CALLBACK_DATA CallbackData);
1999 
2000 NTSTATUS
2001 FLTAPI
2003  _In_ PFLT_CALLBACK_DATA CallbackData,
2004  _Outptr_opt_ PMDL **MdlAddressPointer,
2005  _Outptr_opt_result_bytebuffer_(**Length) PVOID **Buffer,
2006  _Outptr_opt_ PULONG *Length,
2007  _Out_opt_ LOCK_OPERATION *DesiredAccess);
2008 
2009 PMDL
2010 FASTCALL
2012  _In_ PFLT_CALLBACK_DATA CallbackData);
2013 
2014 VOID
2015 FASTCALL
2017  _In_ PFLT_CALLBACK_DATA CallbackData);
2018 
2019 NTSTATUS
2020 FLTAPI
2022  _In_ PFLT_INSTANCE Instance,
2023  _Inout_ PFLT_CALLBACK_DATA_QUEUE Cbdq,
2029  _In_ PFLT_CALLBACK_DATA_QUEUE_COMPLETE_CANCELED_IO CbdqCompleteCanceledIo);
2030 
2031 VOID
2032 FLTAPI
2034  _Inout_ PFLT_CALLBACK_DATA_QUEUE Cbdq);
2035 
2036 VOID
2037 FLTAPI
2039  _Inout_ PFLT_CALLBACK_DATA_QUEUE Cbdq);
2040 
2042 NTSTATUS
2043 FLTAPI
2045  _Inout_ PFLT_CALLBACK_DATA_QUEUE Cbdq,
2046  _In_ PFLT_CALLBACK_DATA Cbd,
2049 
2051 PFLT_CALLBACK_DATA
2052 FLTAPI
2054  _Inout_ PFLT_CALLBACK_DATA_QUEUE Cbdq,
2056 
2058 PFLT_CALLBACK_DATA
2059 FLTAPI
2061  _Inout_ PFLT_CALLBACK_DATA_QUEUE Cbdq,
2063 
2065 VOID
2066 FLTAPI
2067 FltInitializeOplock(
2068  _Out_ POPLOCK Oplock);
2069 
2071 VOID
2072 FLTAPI
2073 FltUninitializeOplock(
2074  _In_ POPLOCK Oplock);
2075 
2079 FLTAPI
2080 FltOplockFsctrl(
2081  _In_ POPLOCK Oplock,
2082  _In_ PFLT_CALLBACK_DATA CallbackData,
2083  _In_ ULONG OpenCount);
2084 
2088 FLTAPI
2089 FltCheckOplock(
2090  _In_ POPLOCK Oplock,
2091  _In_ PFLT_CALLBACK_DATA CallbackData,
2092  _In_opt_ PVOID Context,
2093  _In_opt_ PFLTOPLOCK_WAIT_COMPLETE_ROUTINE WaitCompletionRoutine,
2094  _In_opt_ PFLTOPLOCK_PREPOST_CALLBACKDATA_ROUTINE PrePostCallbackDataRoutine);
2095 
2097 BOOLEAN
2098 FLTAPI
2099 FltOplockIsFastIoPossible(
2100  _In_ POPLOCK Oplock);
2101 
2103 BOOLEAN
2104 FLTAPI
2105 FltCurrentBatchOplock(
2106  _In_ POPLOCK Oplock);
2107 
2108 VOID
2109 FLTAPI
2111  _Out_ PFILE_LOCK FileLock);
2112 
2113 VOID
2114 FLTAPI
2116  _In_ PFILE_LOCK FileLock);
2117 
2120 PFILE_LOCK
2121 FLTAPI
2122 FltAllocateFileLock(
2123  _In_opt_ PFLT_COMPLETE_LOCK_CALLBACK_DATA_ROUTINE CompleteLockCallbackDataRoutine,
2124  _In_opt_ PUNLOCK_ROUTINE UnlockRoutine);
2125 
2127 VOID
2128 FLTAPI
2129 FltFreeFileLock(
2130  _In_ PFILE_LOCK FileLock);
2131 
2135 FLTAPI
2136 FltProcessFileLock(
2137  _In_ PFILE_LOCK FileLock,
2138  _In_ PFLT_CALLBACK_DATA CallbackData,
2139  _In_opt_ PVOID Context);
2140 
2143 BOOLEAN
2144 FLTAPI
2145 FltCheckLockForReadAccess(
2146  _In_ PFILE_LOCK FileLock,
2147  _In_ PFLT_CALLBACK_DATA CallbackData);
2148 
2151 BOOLEAN
2152 FLTAPI
2153 FltCheckLockForWriteAccess(
2154  _In_ PFILE_LOCK FileLock,
2155  _In_ PFLT_CALLBACK_DATA CallbackData);
2156 
2157 _Acquires_lock_(_Global_critical_region_)
2159 VOID
2160 FLTAPI
2161 FltAcquireResourceExclusive(
2163 
2164 _Acquires_lock_(_Global_critical_region_)
2166 VOID
2167 FLTAPI
2168 FltAcquireResourceShared(
2169  _Inout_ _Requires_lock_not_held_(*_Curr_) _Acquires_lock_(*_Curr_) PERESOURCE Resource);
2170 
2171 _Releases_lock_(_Global_critical_region_)
2173 VOID
2174 FLTAPI
2175 FltReleaseResource(
2176  _Inout_ _Requires_lock_held_(*_Curr_) _Releases_lock_(*_Curr_) PERESOURCE Resource);
2177 
2179 VOID
2180 FLTAPI
2181 FltInitializePushLock(
2182  _Out_ PEX_PUSH_LOCK PushLock);
2183 
2185 VOID
2186 FLTAPI
2187 FltDeletePushLock(
2188  _In_ PEX_PUSH_LOCK PushLock);
2189 
2190 _Acquires_lock_(_Global_critical_region_)
2192 VOID
2193 FLTAPI
2194 FltAcquirePushLockExclusive(
2195  _Inout_ _Requires_lock_not_held_(*_Curr_) _Acquires_lock_(*_Curr_) PEX_PUSH_LOCK PushLock);
2196 
2197 _Acquires_lock_(_Global_critical_region_)
2199 VOID
2200 FLTAPI
2201 FltAcquirePushLockShared(
2202  _Inout_ _Requires_lock_not_held_(*_Curr_) _Acquires_lock_(*_Curr_) PEX_PUSH_LOCK PushLock);
2203 
2204 _Releases_lock_(_Global_critical_region_)
2206 VOID
2207 FLTAPI
2208 FltReleasePushLock(
2209  _Inout_ _Requires_lock_held_(*_Curr_) _Releases_lock_(*_Curr_) PEX_PUSH_LOCK PushLock);
2210 
2211 BOOLEAN
2212 FLTAPI
2214  _In_ PFLT_CALLBACK_DATA CallbackData);
2215 
2217 BOOLEAN
2218 FLTAPI
2219 FltIs32bitProcess(
2220  _In_opt_ PFLT_CALLBACK_DATA CallbackData);
2221 
2223 PEPROCESS
2224 FLTAPI
2225 FltGetRequestorProcess(
2226  _In_ PFLT_CALLBACK_DATA CallbackData);
2227 
2229 ULONG
2230 FLTAPI
2231 FltGetRequestorProcessId(
2232  _In_ PFLT_CALLBACK_DATA CallbackData);
2233 
2235 VOID
2236 FLTAPI
2237 FltNotifyFilterChangeDirectory(
2238  _Inout_ PNOTIFY_SYNC NotifySync,
2245  _In_ PFLT_CALLBACK_DATA NotifyCallbackData,
2246  _In_opt_ PCHECK_FOR_TRAVERSE_ACCESS TraverseCallback,
2248  _In_opt_ PFILTER_REPORT_CHANGE FilterCallback);
2249 
2250 PCHAR
2251 FLTAPI
2253  _In_ UCHAR IrpMajorCode);
2254 
2255 #if FLT_MGR_AFTER_XPSP2
2256 
2259 NTSTATUS
2260 FLTAPI
2261 FltCreateFileEx(
2262  _In_ PFLT_FILTER Filter,
2263  _In_opt_ PFLT_INSTANCE Instance,
2264  _Out_ PHANDLE FileHandle,
2265  _Outptr_opt_ PFILE_OBJECT *FileObject,
2266  _In_ ACCESS_MASK DesiredAccess,
2267  _In_ POBJECT_ATTRIBUTES ObjectAttributes,
2268  _Out_ PIO_STATUS_BLOCK IoStatusBlock,
2269  _In_opt_ PLARGE_INTEGER AllocationSize,
2270  _In_ ULONG FileAttributes,
2271  _In_ ULONG ShareAccess,
2272  _In_ ULONG CreateDisposition,
2273  _In_ ULONG CreateOptions,
2274  _In_reads_bytes_opt_(EaLength) PVOID EaBuffer,
2275  _In_ ULONG EaLength,
2276  _In_ ULONG Flags);
2277 
2280 NTSTATUS
2281 FLTAPI
2282 FltOpenVolume(
2283  _In_ PFLT_INSTANCE Instance,
2286 
2289 NTSTATUS
2290 FLTAPI
2291 FltQueryEaFile(
2292  _In_ PFLT_INSTANCE Instance,
2293  _In_ PFILE_OBJECT FileObject,
2294  _Out_writes_bytes_to_(Length,*LengthReturned) PVOID ReturnedEaData,
2295  _In_ ULONG Length,
2301  _Out_opt_ PULONG LengthReturned);
2302 
2305 NTSTATUS
2306 FLTAPI
2307 FltSetEaFile(
2308  _In_ PFLT_INSTANCE Instance,
2309  _In_ PFILE_OBJECT FileObject,
2310  _In_reads_bytes_(Length) PVOID EaBuffer,
2311  _In_ ULONG Length);
2312 
2313 #endif /* FLT_MGR_AFTER_XPSP2 */
2314 
2315 #if FLT_MGR_LONGHORN
2316 
2319 NTSTATUS
2320 FLTAPI
2321 FltCreateFileEx2(
2322  _In_ PFLT_FILTER Filter,
2323  _In_opt_ PFLT_INSTANCE Instance,
2324  _Out_ PHANDLE FileHandle,
2325  _Outptr_opt_ PFILE_OBJECT *FileObject,
2326  _In_ ACCESS_MASK DesiredAccess,
2327  _In_ POBJECT_ATTRIBUTES ObjectAttributes,
2328  _Out_ PIO_STATUS_BLOCK IoStatusBlock,
2329  _In_opt_ PLARGE_INTEGER AllocationSize,
2330  _In_ ULONG FileAttributes,
2331  _In_ ULONG ShareAccess,
2332  _In_ ULONG CreateDisposition,
2333  _In_ ULONG CreateOptions,
2334  _In_reads_bytes_opt_(EaLength) PVOID EaBuffer,
2335  _In_ ULONG EaLength,
2336  _In_ ULONG Flags,
2338 
2341 NTSTATUS
2342 FLTAPI
2343 FltQueryDirectoryFile(
2344  _In_ PFLT_INSTANCE Instance,
2345  _In_ PFILE_OBJECT FileObject,
2346  _Out_writes_bytes_(Length) PVOID FileInformation,
2347  _In_ ULONG Length,
2348  _In_ FILE_INFORMATION_CLASS FileInformationClass,
2349  _In_ BOOLEAN ReturnSingleEntry,
2350  _In_opt_ PUNICODE_STRING FileName,
2351  _In_ BOOLEAN RestartScan,
2352  _Out_opt_ PULONG LengthReturned);
2353 
2355 BOOLEAN
2356 FLTAPI
2357 FltSupportsFileContextsEx(
2358  _In_ PFILE_OBJECT FileObject,
2359  _In_opt_ PFLT_INSTANCE Instance);
2360 
2362 NTSTATUS
2363 FLTAPI
2364 FltSetTransactionContext(
2365  _In_ PFLT_INSTANCE Instance,
2366  _In_ PKTRANSACTION Transaction,
2367  _In_ FLT_SET_CONTEXT_OPERATION Operation,
2368  _In_ PFLT_CONTEXT NewContext,
2369  _Outptr_opt_ PFLT_CONTEXT *OldContext);
2370 
2372 NTSTATUS
2373 FLTAPI
2374 FltDeleteTransactionContext(
2375  _In_ PFLT_INSTANCE Instance,
2376  _In_ PKTRANSACTION Transaction,
2377  _Outptr_opt_ PFLT_CONTEXT *OldContext);
2378 
2380 NTSTATUS
2381 FLTAPI
2382 FltGetTransactionContext(
2383  _In_ PFLT_INSTANCE Instance,
2384  _In_ PKTRANSACTION Transaction,
2385  _Outptr_ PFLT_CONTEXT *Context);
2386 
2388 BOOLEAN
2389 FLTAPI
2390 FltIsFltMgrVolumeDeviceObject(
2391  _In_ PDEVICE_OBJECT DeviceObject);
2392 
2394 NTSTATUS
2395 FLTAPI
2396 FltGetVolumeInformation(
2397  _In_ PFLT_VOLUME Volume,
2398  _In_ FILTER_VOLUME_INFORMATION_CLASS InformationClass,
2399  _Out_writes_bytes_to_opt_(BufferSize,*BytesReturned) PVOID Buffer,
2400  _In_ ULONG BufferSize,
2401  _Out_ PULONG BytesReturned);
2402 
2404 NTSTATUS
2405 FLTAPI
2406 FltGetFileSystemType(
2407  _In_ PVOID FltObject,
2408  _Out_ PFLT_FILESYSTEM_TYPE FileSystemType);
2409 
2412 NTSTATUS
2413 FLTAPI
2414 FltIsVolumeSnapshot(
2415  _In_ PVOID FltObject,
2417 
2419 _When_(((CallbackData!=NULL) && FLT_IS_IRP_OPERATION(CallbackData)), _IRQL_requires_max_(PASSIVE_LEVEL))
2420 _When_((!((CallbackData!=NULL) && FLT_IS_IRP_OPERATION(CallbackData))), _IRQL_requires_max_(APC_LEVEL))
2421 NTSTATUS
2422 FLTAPI
2423 FltCancellableWaitForSingleObject(
2424  _In_ PVOID Object,
2425  _In_opt_ PLARGE_INTEGER Timeout,
2426  _In_opt_ PFLT_CALLBACK_DATA CallbackData);
2427 
2429 _When_(((CallbackData!=NULL) && FLT_IS_IRP_OPERATION(CallbackData)), _IRQL_requires_max_(PASSIVE_LEVEL))
2430 _When_((!((CallbackData!=NULL) && FLT_IS_IRP_OPERATION(CallbackData))), _IRQL_requires_max_(APC_LEVEL))
2431 NTSTATUS
2432 FLTAPI
2433 FltCancellableWaitForMultipleObjects(
2434  _In_ ULONG Count,
2435  _In_reads_(Count) PVOID ObjectArray[],
2437  _In_opt_ PLARGE_INTEGER Timeout,
2439  _In_ PFLT_CALLBACK_DATA CallbackData);
2440 
2442 HANDLE
2443 FLTAPI
2444 FltGetRequestorProcessIdEx(
2445  _In_ PFLT_CALLBACK_DATA CallbackData);
2446 
2449 NTSTATUS
2450 FLTAPI
2451 FltEnlistInTransaction(
2452  _In_ PFLT_INSTANCE Instance,
2453  _In_ PKTRANSACTION Transaction,
2454  _In_ PFLT_CONTEXT TransactionContext,
2456 
2458 NTSTATUS
2459 FLTAPI
2460 FltRollbackEnlistment(
2461  _In_ PFLT_INSTANCE Instance,
2462  _In_ PKTRANSACTION Transaction,
2463  _In_opt_ PFLT_CONTEXT TransactionContext);
2464 
2466 NTSTATUS
2467 FLTAPI
2468 FltPrePrepareComplete(
2469  _In_ PFLT_INSTANCE Instance,
2470  _In_ PKTRANSACTION Transaction,
2471  _In_opt_ PFLT_CONTEXT TransactionContext);
2472 
2474 NTSTATUS
2475 FLTAPI
2476 FltPrepareComplete(
2477  _In_ PFLT_INSTANCE Instance,
2478  _In_ PKTRANSACTION Transaction,
2479  _In_opt_ PFLT_CONTEXT TransactionContext);
2480 
2482 NTSTATUS
2483 FLTAPI
2484 FltCommitComplete(
2485  _In_ PFLT_INSTANCE Instance,
2486  _In_ PKTRANSACTION Transaction,
2487  _In_opt_ PFLT_CONTEXT TransactionContext);
2488 
2490 NTSTATUS
2491 FLTAPI
2492 FltCommitFinalizeComplete(
2493  _In_ PFLT_INSTANCE Instance,
2494  _In_ PKTRANSACTION Transaction,
2495  _In_opt_ PFLT_CONTEXT TransactionContext);
2496 
2498 NTSTATUS
2499 FLTAPI
2500 FltRollbackComplete(
2501  _In_ PFLT_INSTANCE Instance,
2502  _In_ PKTRANSACTION Transaction,
2503  _In_opt_ PFLT_CONTEXT TransactionContext);
2504 
2507 NTSTATUS
2508 FLTAPI
2509 FltAllocateExtraCreateParameterList(
2510  _In_ PFLT_FILTER Filter,
2513 
2516 NTSTATUS
2517 FLTAPI
2518 FltAllocateExtraCreateParameter(
2519  _In_ PFLT_FILTER Filter,
2524  _In_ ULONG PoolTag,
2526 
2528 VOID
2529 FLTAPI
2530 FltInitExtraCreateParameterLookasideList(
2531  _In_ PFLT_FILTER Filter,
2534  _In_ SIZE_T Size,
2535  _In_ ULONG Tag);
2536 
2538 VOID
2539 FLTAPI
2540 FltDeleteExtraCreateParameterLookasideList(
2541  _In_ PFLT_FILTER Filter,
2542  _Inout_ PVOID Lookaside,
2544 
2547 NTSTATUS
2548 FLTAPI
2549 FltAllocateExtraCreateParameterFromLookasideList(
2550  _In_ PFLT_FILTER Filter,
2551  _In_ LPCGUID EcpType,
2552  _In_ ULONG SizeOfContext,
2556  _Outptr_ PVOID *EcpContext);
2557 
2559 NTSTATUS
2560 FLTAPI
2561 FltInsertExtraCreateParameter(
2562  _In_ PFLT_FILTER Filter,
2563  _Inout_ PECP_LIST EcpList,
2564  _Inout_ PVOID EcpContext);
2565 
2567 NTSTATUS
2568 FLTAPI
2569 FltFindExtraCreateParameter(
2570  _In_ PFLT_FILTER Filter,
2571  _In_ PECP_LIST EcpList,
2572  _In_ LPCGUID EcpType,
2573  _Outptr_opt_ PVOID *EcpContext,
2575 
2577 NTSTATUS
2578 FLTAPI
2579 FltRemoveExtraCreateParameter(
2580  _In_ PFLT_FILTER Filter,
2581  _Inout_ PECP_LIST EcpList,
2582  _In_ LPCGUID EcpType,
2583  _Outptr_ PVOID *EcpContext,
2584  _Out_opt_ ULONG *EcpContextSize);
2585 
2587 VOID
2588 FLTAPI
2589 FltFreeExtraCreateParameterList(
2590  _In_ PFLT_FILTER Filter,
2591  _In_ PECP_LIST EcpList);
2592 
2594 VOID
2595 FLTAPI
2596 FltFreeExtraCreateParameter(
2597  _In_ PFLT_FILTER Filter,
2598  _In_ PVOID EcpContext);
2599 
2601 NTSTATUS
2602 FLTAPI
2603 FltGetEcpListFromCallbackData(
2604  _In_ PFLT_FILTER Filter,
2605  _In_ PFLT_CALLBACK_DATA CallbackData,
2607 
2609 NTSTATUS
2610 FLTAPI
2611 FltSetEcpListIntoCallbackData(
2612  _In_ PFLT_FILTER Filter,
2613  _In_ PFLT_CALLBACK_DATA CallbackData,
2614  _In_ PECP_LIST EcpList);
2615 
2617 NTSTATUS
2618 FLTAPI
2619 FltGetNextExtraCreateParameter(
2620  _In_ PFLT_FILTER Filter,
2621  _In_ PECP_LIST EcpList,
2626 
2628 VOID
2629 FLTAPI
2630 FltAcknowledgeEcp(
2631  _In_ PFLT_FILTER Filter,
2632  _In_ PVOID EcpContext);
2633 
2635 BOOLEAN
2636 FLTAPI
2637 FltIsEcpAcknowledged(
2638  _In_ PFLT_FILTER Filter,
2639  _In_ PVOID EcpContext);
2640 
2642 BOOLEAN
2643 FLTAPI
2644 FltIsEcpFromUserMode(
2645  _In_ PFLT_FILTER Filter,
2646  _In_ PVOID EcpContext);
2647 
2649 NTSTATUS
2650 FLTAPI
2651 FltRetrieveIoPriorityInfo(
2652  _In_opt_ PFLT_CALLBACK_DATA Data,
2656 
2658 NTSTATUS
2659 FLTAPI
2660 FltApplyPriorityInfoThread(
2661  _In_ PIO_PRIORITY_INFO InputPriorityInfo,
2663  _In_ PETHREAD Thread);
2664 
2667 FLTAPI
2668 FltGetIoPriorityHint(
2669  _In_ PFLT_CALLBACK_DATA Data);
2670 
2673 FLTAPI
2674 FltGetIoPriorityHintFromCallbackData(
2675  _In_ PFLT_CALLBACK_DATA Data);
2676 
2678 NTSTATUS
2679 FLTAPI
2680 FltSetIoPriorityHintIntoCallbackData(
2681  _In_ PFLT_CALLBACK_DATA Data,
2683 
2686 FLTAPI
2687 FltGetIoPriorityHintFromFileObject(
2688  _In_ PFILE_OBJECT FileObject);
2689 
2692 NTSTATUS
2693 FLTAPI
2694 FltSetIoPriorityHintIntoFileObject(
2695  _In_ PFILE_OBJECT FileObject,
2696  _In_ IO_PRIORITY_HINT PriorityHint);
2697 
2700 FLTAPI
2701 FltGetIoPriorityHintFromThread(
2702  _In_ PETHREAD Thread);
2703 
2705 NTSTATUS
2706 FLTAPI
2707 FltSetIoPriorityHintIntoThread(
2708  _In_ PETHREAD Thread,
2709  _In_ IO_PRIORITY_HINT PriorityHint);
2710 
2711 #endif /* FLT_MGR_LONGHORN */
2712 
2713 #if FLT_MGR_WIN7
2714 
2717 NTSTATUS
2718 FLTAPI
2719 FltAllocateCallbackDataEx(
2720  _In_ PFLT_INSTANCE Instance,
2721  _In_opt_ PFILE_OBJECT FileObject,
2722  _In_ FLT_ALLOCATE_CALLBACK_DATA_FLAGS Flags,
2723  _Outptr_ PFLT_CALLBACK_DATA *RetNewCallbackData);
2724 
2726 _IRQL_requires_max_(DPC_LEVEL)
2727 PVOID
2728 FLTAPI
2729 FltGetNewSystemBufferAddress(
2730  _In_ PFLT_CALLBACK_DATA CallbackData);
2731 
2735 FLTAPI
2736 FltCheckOplockEx(
2737  _In_ POPLOCK Oplock,
2738  _In_ PFLT_CALLBACK_DATA CallbackData,
2739  _In_ ULONG Flags,
2740  _In_opt_ PVOID Context,
2741  _In_opt_ PFLTOPLOCK_WAIT_COMPLETE_ROUTINE WaitCompletionRoutine,
2742  _In_opt_ PFLTOPLOCK_PREPOST_CALLBACKDATA_ROUTINE PrePostCallbackDataRoutine);
2743 
2745 BOOLEAN
2746 FLTAPI
2747 FltCurrentOplock(
2748  _In_ POPLOCK Oplock);
2749 
2751 BOOLEAN
2752 FLTAPI
2753 FltCurrentOplockH(
2754  _In_ POPLOCK Oplock);
2755 
2758 FLTAPI
2759 FltOplockBreakH(
2760  _In_ POPLOCK Oplock,
2761  _In_ PFLT_CALLBACK_DATA CallbackData,
2762  _In_ ULONG Flags,
2763  _In_opt_ PVOID Context,
2764  _In_opt_ PFLTOPLOCK_WAIT_COMPLETE_ROUTINE WaitCompletionRoutine,
2765  _In_opt_ PFLTOPLOCK_PREPOST_CALLBACKDATA_ROUTINE PrePostCallbackDataRoutine);
2766 
2769 FLTAPI
2770 FltOplockBreakToNone(
2771  _In_ POPLOCK Oplock,
2772  _In_ PFLT_CALLBACK_DATA CallbackData,
2773  _In_opt_ PVOID Context,
2774  _In_opt_ PFLTOPLOCK_WAIT_COMPLETE_ROUTINE WaitCompletionRoutine,
2775  _In_opt_ PFLTOPLOCK_PREPOST_CALLBACKDATA_ROUTINE PrePostCallbackDataRoutine);
2776 
2779 FLTAPI
2780 FltOplockBreakToNoneEx(
2781  _In_ POPLOCK Oplock,
2782  _In_ PFLT_CALLBACK_DATA CallbackData,
2783  _In_ ULONG Flags,
2784  _In_opt_ PVOID Context,
2785  _In_opt_ PFLTOPLOCK_WAIT_COMPLETE_ROUTINE WaitCompletionRoutine,
2786  _In_opt_ PFLTOPLOCK_PREPOST_CALLBACKDATA_ROUTINE PrePostCallbackDataRoutine);
2787 
2789 BOOLEAN
2790 FLTAPI
2791 FltOplockIsSharedRequest(
2792  _In_ PFLT_CALLBACK_DATA CallbackData);
2793 
2797 FLTAPI
2798 FltOplockFsctrlEx(
2799  _In_ POPLOCK Oplock,
2800  _In_ PFLT_CALLBACK_DATA CallbackData,
2801  _In_ ULONG OpenCount,
2802  _In_ ULONG Flags);
2803 
2804 BOOLEAN
2805 FLTAPI
2807  _In_opt_ PFILE_OBJECT Fo1,
2809 
2812 NTSTATUS
2813 FLTAPI
2814 FltGetRequestorSessionId(
2815  _In_ PFLT_CALLBACK_DATA CallbackData,
2817 
2819 NTSTATUS
2820 FLTAPI
2821 FltAdjustDeviceStackSizeForIoRedirection(
2822  _In_ PFLT_INSTANCE SourceInstance,
2823  _In_ PFLT_INSTANCE TargetInstance,
2825 
2827 NTSTATUS
2828 FLTAPI
2829 FltIsIoRedirectionAllowed(
2830  _In_ PFLT_INSTANCE SourceInstance,
2831  _In_ PFLT_INSTANCE TargetInstance,
2833 
2835 NTSTATUS
2836 FLTAPI
2837 FltIsIoRedirectionAllowedForOperation(
2838  _In_ PFLT_CALLBACK_DATA Data,
2839  _In_ PFLT_INSTANCE TargetInstance,
2842 
2843 #endif /* FLT_MGR_WIN7 */
2844 
2845 #endif /* FLT_MGR_BASELINE */
2846 
2847 #ifdef __cplusplus
2848 } /* extern "C" */
2849 #endif
2850 
2851 #endif /* __FLTKERNEL__ */
_Must_inspect_result_ *NumberFiltersReturned PFLT_FILTER * FilterList
Definition: fltkernel.h:1782
ULONG POINTER_ALIGNMENT Spare1
Definition: fltkernel.h:191
UNICODE_STRING Stream
Definition: fltkernel.h:813
#define FLTFL_IO_OPERATION_SYNCHRONOUS_PAGING
Definition: fltkernel.h:760
DWORD *typedef PVOID
Definition: winlogon.h:52
_Inout_ PLIST_ENTRY _In_ PVOID FsContext
Definition: fltkernel.h:2239
_Must_inspect_result_ *NumberFiltersReturned PFLT_FILTER _In_ ULONG FilterListSize
Definition: fltkernel.h:1782
ULONG FLT_IO_OPERATION_FLAGS
Definition: fltkernel.h:753
_Must_inspect_result_ _In_ FSRTL_ALLOCATE_ECPLIST_FLAGS _Outptr_ PECP_LIST * EcpList
Definition: fltkernel.h:2511
_Out_opt_ PIO_PRIORITY_INFO OutputPriorityInfo
Definition: fltkernel.h:2662
BOOLEAN POINTER_ALIGNMENT CheckForReadOperation
Definition: fltkernel.h:361
ULONG POINTER_ALIGNMENT Length
Definition: fltkernel.h:276
struct _FLT_PARAMETERS::@1627::@1651 VerifyVolume
_Must_inspect_result_ _Inout_ PFLT_VOLUME Volume
Definition: fltkernel.h:1162
PFLT_TRANSACTION_NOTIFICATION_CALLBACK TransactionNotificationCallback
Definition: fltkernel.h:743
PVOID SystemBuffer
Definition: fltkernel.h:219
VOID(FLTAPI * PFLT_CONTEXT_FREE_CALLBACK)(_In_ PVOID Pool, _In_ FLT_CONTEXT_TYPE ContextType)
Definition: fltkernel.h:505
struct _FLT_NAME_CONTROL * PFLT_NAME_CONTROL
_Must_inspect_result_ _In_ PFLT_PORT _In_ ULONG _Out_writes_bytes_opt_ ReplyLength PVOID _Inout_opt_ PULONG _In_opt_ PLARGE_INTEGER Timeout
Definition: fltkernel.h:1903
_Must_inspect_result_ _In_ PFILE_OBJECT _In_ ULONG _In_ FILE_INFORMATION_CLASS _In_ BOOLEAN _In_opt_ PUNICODE_STRING FileName
Definition: fltkernel.h:2347
PDEVICE_OBJECT DeviceObject
Definition: fltkernel.h:200
PFILE_NETWORK_OPEN_INFORMATION NetworkInformation
Definition: fltkernel.h:365
_Must_inspect_result_ _In_ PFILE_OBJECT _In_ ULONG _In_ ULONG _Out_writes_bytes_to_opt_(OutputBufferLength,*LengthReturned) PVOID OutputBuffer
struct _FLT_OPERATION_REGISTRATION FLT_OPERATION_REGISTRATION
struct _FLT_PARAMETERS::@1635::@1663 QueryInterface
ULONG FSRTL_ALLOCATE_ECPLIST_FLAGS
Definition: fsrtltypes.h:141
PVOID SecurityBuffer
Definition: fltkernel.h:277
#define _Must_inspect_result_
Definition: no_sal2.h:314
ULONG FLT_INSTANCE_QUERY_TEARDOWN_FLAGS
Definition: fltkernel.h:552
_Must_inspect_result_ _In_ PFILE_OBJECT _In_opt_ PLARGE_INTEGER _In_ ULONG _In_ FLT_IO_OPERATION_FLAGS _Out_opt_ PULONG BytesWritten
Definition: fltkernel.h:1293
#define _Requires_lock_not_held_(lock)
Definition: no_sal2.h:705
_Must_inspect_result_ _In_ PFILE_OBJECT _In_ ULONG _In_ FS_INFORMATION_CLASS FsInformationClass
Definition: fltkernel.h:1329
enum _BUS_QUERY_ID_TYPE BUS_QUERY_ID_TYPE
NTSTATUS(FLTAPI * PFLT_FILTER_UNLOAD_CALLBACK)(FLT_FILTER_UNLOAD_FLAGS Flags)
Definition: fltkernel.h:654
_Must_inspect_result_ _In_ PFLT_CALLBACK_DATA CallbackData
Definition: fltkernel.h:2082
_In_ IO_PRIORITY_HINT PriorityHint
Definition: fltkernel.h:2682
ULONG POINTER_ALIGNMENT EaIndex
Definition: fltkernel.h:160
#define DEVICE_TYPE
Definition: nt_native.h:578
_Must_inspect_result_ _In_ PFLT_CALLBACK_DATA _In_opt_ PVOID _In_opt_ PFLTOPLOCK_WAIT_COMPLETE_ROUTINE _In_opt_ PFLTOPLOCK_PREPOST_CALLBACKDATA_ROUTINE PrePostCallbackDataRoutine
Definition: fltkernel.h:2091
_Must_inspect_result_ _In_ PFILE_OBJECT _In_ ULONG IoControlCode
Definition: fltkernel.h:1383
PUNICODE_STRING FileName
Definition: fltkernel.h:182
_Must_inspect_result_ _In_ PFILE_OBJECT _In_ ULONG _In_ BOOLEAN _In_ ULONG _In_opt_ PULONG _In_ BOOLEAN RestartScan
Definition: fltkernel.h:2298
CONST FLT_OPERATION_REGISTRATION * OperationRegistration
Definition: fltkernel.h:733
UNICODE_STRING Name
Definition: fltkernel.h:658
ULONG POINTER_ALIGNMENT FileIndex
Definition: fltkernel.h:184
_Must_inspect_result_ _In_ PFLT_CALLBACK_DATA _In_opt_ PVOID _In_opt_ PFLTOPLOCK_WAIT_COMPLETE_ROUTINE WaitCompletionRoutine
Definition: fltkernel.h:2091
_Must_inspect_result_ _Inout_opt_ PUNICODE_STRING _Out_opt_ PULONG BufferSizeNeeded
Definition: fltkernel.h:1117
_Must_inspect_result_ _In_opt_ PUNLOCK_ROUTINE UnlockRoutine
Definition: fltkernel.h:2124
enum _FLT_POSTOP_CALLBACK_STATUS FLT_POSTOP_CALLBACK_STATUS
_FLT_SET_CONTEXT_OPERATION
Definition: fltkernel.h:818
struct _FLT_PARAMETERS::@1630 QuerySecurity
BUS_QUERY_ID_TYPE IdType
Definition: fltkernel.h:334
NTSTATUS NTAPI FltStartFiltering(_In_ PFLT_FILTER Filter)
Definition: Filter.c:280
PFLT_NORMALIZE_NAME_COMPONENT_EX NormalizeNameComponentExCallback
Definition: fltkernel.h:744
ULONG ClusterCount
Definition: fltkernel.h:151
struct _FLT_CONTEXT_REGISTRATION * PFLT_CONTEXT_REGISTRATION
FILE_INFORMATION_CLASS FileInformationClass
Definition: fltkernel.h:183
_Must_inspect_result_ _In_ PFLT_CALLBACK_DATA Data
Definition: fltkernel.h:1977
NTSTATUS FLTAPI FltDecodeParameters(_In_ PFLT_CALLBACK_DATA CallbackData, _Outptr_opt_ PMDL **MdlAddressPointer, _Outptr_opt_result_bytebuffer_(**Length) PVOID **Buffer, _Outptr_opt_ PULONG *Length, _Out_opt_ LOCK_OPERATION *DesiredAccess)
struct _FLT_FILTER * PFLT_FILTER
Definition: fltkernel.h:84
_In_ USHORT _In_ ULONG _In_ PSOCKADDR _In_ PSOCKADDR _Reserved_ ULONG _In_opt_ PVOID _In_opt_ const WSK_CLIENT_CONNECTION_DISPATCH _In_opt_ PEPROCESS _In_opt_ PETHREAD _In_opt_ PSECURITY_DESCRIPTOR SecurityDescriptor
Definition: wsk.h:182
PVOID(FLTAPI * PFLT_CONTEXT_ALLOCATE_CALLBACK)(_In_ POOL_TYPE PoolType, _In_ SIZE_T Size, _In_ FLT_CONTEXT_TYPE ContextType)
Definition: fltkernel.h:499
__wchar_t WCHAR
Definition: xmlstorage.h:180
_Must_inspect_result_ _In_ PFILE_OBJECT _In_ ULONG _In_ BOOLEAN _In_ ULONG _In_opt_ PULONG EaIndex
Definition: fltkernel.h:2298
_Must_inspect_result_ _In_ WAIT_TYPE WaitType
Definition: fsrtlfuncs.h:1151
#define _ANONYMOUS_UNION
Definition: ntbasedef.h:30
PSECURITY_DESCRIPTOR SecurityDescriptor
Definition: fltkernel.h:282
#define FLT_IS_IRP_OPERATION(Data)
Definition: fltkernel.h:430
_Must_inspect_result_ _Outptr_ PFLT_PORT * ServerPort
Definition: fltkernel.h:1873
const char * PCSTR
Definition: typedefs.h:52
ULONG FLT_OPERATION_REGISTRATION_FLAGS
Definition: fltkernel.h:603
PVOID ULONG ULONG PULONG ULONG_PTR PACPI_OP_REGION_CALLBACK PVOID CompletionContext
Definition: oprghdlr.h:14
_Inout_ PVOID _In_ FSRTL_ECP_LOOKASIDE_FLAGS _In_ SIZE_T Size
Definition: fltkernel.h:2532
_In_ PFLT_INSTANCE _Out_opt_ PBOOLEAN SourceDeviceStackSizeModified
Definition: fltkernel.h:2823
#define _In_reads_(size)
Definition: no_sal2.h:228
struct _FLT_VOLUME * PFLT_VOLUME
Definition: fltkernel.h:85
BOOLEAN FLTAPI FltOplockKeysEqual(_In_opt_ PFILE_OBJECT Fo1, _In_opt_ PFILE_OBJECT Fo2)
enum _FLT_PREOP_CALLBACK_STATUS * PFLT_PREOP_CALLBACK_STATUS
enum _DEVICE_USAGE_NOTIFICATION_TYPE DEVICE_USAGE_NOTIFICATION_TYPE
ULONG FSRTL_ECP_LOOKASIDE_FLAGS
Definition: fsrtltypes.h:143
VOID FLTAPI FltObjectDereference(_Inout_ PVOID Object)
Definition: Object.c:42
_Must_inspect_result_ NTSTATUS FLTAPI FltCbdqInsertIo(_Inout_ PFLT_CALLBACK_DATA_QUEUE Cbdq, _In_ PFLT_CALLBACK_DATA Cbd, _In_opt_ PFLT_CALLBACK_DATA_QUEUE_IO_CONTEXT Context, _In_opt_ PVOID InsertContext)
_Must_inspect_result_ _In_ PFLT_CALLBACK_DATA _In_ PFLT_DEFERRED_IO_WORKITEM_ROUTINE WorkerRoutine
Definition: fltkernel.h:1977
_In_ ACCESS_MASK _In_ POBJECT_ATTRIBUTES _Out_ PIO_STATUS_BLOCK _In_opt_ PLARGE_INTEGER _In_ ULONG _In_ ULONG _In_ ULONG _In_ ULONG _In_opt_ PVOID EaBuffer
Definition: iofuncs.h:835
UNICODE_STRING ParentDir
Definition: fltkernel.h:815
USHORT POINTER_ALIGNMENT Reserved
Definition: fltkernel.h:112
struct _FLT_CALLBACK_DATA_QUEUE * PFLT_CALLBACK_DATA_QUEUE
Definition: fltkernel.h:880
PLARGE_INTEGER EndingOffset
Definition: fltkernel.h:351
PVOID InterfaceSpecificData
Definition: fltkernel.h:316
#define _Outptr_
Definition: no_sal2.h:396
PVOID *typedef PWSTR
Definition: winlogon.h:57
_Must_inspect_result_ _In_ PFILE_OBJECT _In_ ULONG _In_ BOOLEAN ReturnSingleEntry
Definition: fltkernel.h:2295
struct _FLT_RELATED_OBJECTS * PFLT_RELATED_OBJECTS
PLARGE_INTEGER Length
Definition: fltkernel.h:267
_In_ PCUNICODE_STRING _Outptr_ PFLT_VOLUME * RetVolume
Definition: fltkernel.h:1619
USHORT FLT_CONTEXT_TYPE
Definition: fltkernel.h:436
NTSTATUS(FLTAPI * PFLT_GENERATE_FILE_NAME)(_In_ PFLT_INSTANCE Instance, _In_ PFILE_OBJECT FileObject, _In_opt_ PFLT_CALLBACK_DATA CallbackData, _In_ FLT_FILE_NAME_OPTIONS NameOptions, _Out_ PBOOLEAN CacheFileNameInformation, _Out_ PFLT_NAME_CONTROL FileName)
Definition: fltkernel.h:664
_Must_inspect_result_ _In_ FLT_CONTEXT_TYPE _In_ SIZE_T _In_ POOL_TYPE _Outptr_result_bytebuffer_(ContextSize) PFLT_CONTEXT *ReturnedContext)
LIST_ENTRY QueueLinks
Definition: fltkernel.h:465
_Must_inspect_result_ _In_ PFILE_OBJECT _In_ ULONG _In_ ULONG _In_ ULONG OutputBufferLength
Definition: fltkernel.h:1374
static OUT PIO_STATUS_BLOCK OUT PVOID FileInformation
Definition: pipe.c:75
_Must_inspect_result_ _In_ ULONG _Out_ PULONG NumberVolumesReturned
Definition: fltkernel.h:1793
PFLT_INSTANCE_TEARDOWN_CALLBACK InstanceTeardownStartCallback
Definition: fltkernel.h:737
PFLT_INSTANCE_SETUP_CALLBACK InstanceSetupCallback
Definition: fltkernel.h:735
_Inout_ __drv_aliasesMem PSLIST_ENTRY _Inout_ PSLIST_ENTRY _In_ ULONG Count
Definition: exfuncs.h:1015
ULONG FLT_INSTANCE_TEARDOWN_FLAGS
Definition: fltkernel.h:559
PVOID OutputBuffer
Definition: fltkernel.h:212
ULONG PageProtection
Definition: fltkernel.h:348
_Inout_ PLIST_ENTRY _In_ PVOID _In_ PSTRING _In_ BOOLEAN WatchTree
Definition: fltkernel.h:2239
_Must_inspect_result_ _Inout_ PFLT_VOLUME _In_opt_ PCUNICODE_STRING _Outptr_opt_result_maybenull_ PFLT_INSTANCE * RetInstance
Definition: fltkernel.h:1162
_Outptr_ PFLT_PORT * ClientPort
Definition: fltkernel.h:1892
PFLT_CALLBACK_DATA_QUEUE_REMOVE_IO RemoveIo
Definition: fltkernel.h:921
ULONG WhichSpace
Definition: fltkernel.h:325
_Must_inspect_result_ _In_ LPCGUID EcpType
Definition: fltkernel.h:2520
union _FLT_PARAMETERS::@1627 FileSystemControl
VOID(FLTAPI * PFLTOPLOCK_WAIT_COMPLETE_ROUTINE)(_In_ PFLT_CALLBACK_DATA CallbackData, _In_opt_ PVOID Context)
Definition: fltkernel.h:934
struct _FLT_PARAMETERS::@1635::@1661 StartDevice
_Must_inspect_result_ _In_ FLT_CONTEXT_TYPE _In_ SIZE_T ContextSize
Definition: fltkernel.h:1444
PFLT_NORMALIZE_NAME_COMPONENT NormalizeNameComponentCallback
Definition: fltkernel.h:740
_Must_inspect_result_ _Out_ PBOOLEAN IsSnapshotVolume
Definition: fltkernel.h:2416
LARGE_INTEGER AllocationSize
Definition: fltkernel.h:107
IN OUT PULONG IN OUT PUNICODE_STRING InstanceName
Definition: wmilib.h:28
UNICODE_STRING FileSystemDriverName
Definition: fltkernel.h:830
struct _FLT_CALLBACK_DATA FLT_CALLBACK_DATA
_Must_inspect_result_ _In_ ULONG Index
Definition: fltkernel.h:1824
LARGE_INTEGER FileOffset
Definition: fltkernel.h:358
DEVICE_TYPE DeviceType
Definition: fltkernel.h:824
struct _FLT_RELATED_CONTEXTS FLT_RELATED_CONTEXTS
enum _FILE_INFORMATION_CLASS FILE_INFORMATION_CLASS
Definition: file.c:104
VOID(* PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK)(_Inout_ PVOID EcpContext, _In_ LPCGUID EcpType)
Definition: fsrtltypes.h:135
struct _FLT_TAG_DATA_BUFFER * PFLT_TAG_DATA_BUFFER
struct _FLT_PARAMETERS::@1623 SetEa
PVOID PMDL
Definition: usb.h:39
enum _DEVICE_TEXT_TYPE DEVICE_TEXT_TYPE
#define FASTCALL
Definition: nt_native.h:50
_In_ PKTRANSACTION Transaction
Definition: fltkernel.h:2366
_Out_ PKIRQL Irql
Definition: csq.h:179
PVOID WriteBuffer
Definition: fltkernel.h:134
CONST GUID * InterfaceType
Definition: fltkernel.h:312
PFLT_INSTANCE TargetInstance
Definition: fltkernel.h:410
PVOID VolumeBuffer
Definition: fltkernel.h:172
NTSTATUS(FLTAPI * PFLT_CALLBACK_DATA_QUEUE_INSERT_IO)(_Inout_ PFLT_CALLBACK_DATA_QUEUE Cbdq, _In_ PFLT_CALLBACK_DATA Cbd, _In_opt_ PVOID InsertContext)
Definition: fltkernel.h:883
FLT_PARAMETERS Parameters
Definition: fltkernel.h:411
_In_ PFLT_INSTANCE _Out_ PBOOLEAN _Out_opt_ PBOOLEAN RedirectionAllowedAllIo
Definition: fltkernel.h:2839
_Inout_opt_ PUNICODE_STRING _Inout_opt_ PUNICODE_STRING _Inout_opt_ PUNICODE_STRING FinalComponent
Definition: fltkernel.h:1092
_Must_inspect_result_ _In_ PFILE_OBJECT _In_opt_ HANDLE RootDirectory
Definition: fltkernel.h:1126
FLT_OPERATION_REGISTRATION_FLAGS Flags
Definition: fltkernel.h:611
_Inout_ PLIST_ENTRY _In_ PVOID _In_ PSTRING _In_ BOOLEAN _In_ BOOLEAN _In_ ULONG _In_ PFLT_CALLBACK_DATA _In_opt_ PCHECK_FOR_TRAVERSE_ACCESS _In_opt_ PSECURITY_SUBJECT_CONTEXT _In_opt_ PFILTER_REPORT_CHANGE FilterCallback
Definition: fltkernel.h:2239
enum _FLT_SET_CONTEXT_OPERATION * PFLT_SET_CONTEXT_OPERATION
CHAR InputBuffer[80]
Definition: conmgr.c:33
#define _In_opt_
Definition: no_sal2.h:213
_Must_inspect_result_ _In_ PFILE_OBJECT _In_opt_ HANDLE _In_ ULONG _In_ FLT_FILE_NAME_OPTIONS _Outptr_ PFLT_FILE_NAME_INFORMATION * RetFileNameInformation
Definition: fltkernel.h:1129
_Must_inspect_result_ _In_ CONST FLT_REGISTRATION _Outptr_ PFLT_FILTER * RetFilter
Definition: fltkernel.h:991
VOID FLTAPI FltCbdqEnable(_Inout_ PFLT_CALLBACK_DATA_QUEUE Cbdq)
_In_ FLT_CONTEXT_TYPE DesiredContexts
Definition: fltkernel.h:1454
NTSTATUS FLTAPI FltCbdqInitialize(_In_ PFLT_INSTANCE Instance, _Inout_ PFLT_CALLBACK_DATA_QUEUE Cbdq, _In_ PFLT_CALLBACK_DATA_QUEUE_INSERT_IO CbdqInsertIo, _In_ PFLT_CALLBACK_DATA_QUEUE_REMOVE_IO CbdqRemoveIo, _In_ PFLT_CALLBACK_DATA_QUEUE_PEEK_NEXT_IO CbdqPeekNextIo, _In_ PFLT_CALLBACK_DATA_QUEUE_ACQUIRE CbdqAcquire, _In_ PFLT_CALLBACK_DATA_QUEUE_RELEASE CbdqRelease, _In_ PFLT_CALLBACK_DATA_QUEUE_COMPLETE_CANCELED_IO CbdqCompleteCanceledIo)
ULONG DeviceType
Definition: fltkernel.h:387
_Must_inspect_result_ _In_opt_ PFLT_INSTANCE _Out_ PHANDLE _In_ ACCESS_MASK _In_ POBJECT_ATTRIBUTES _Out_ PIO_STATUS_BLOCK _In_opt_ PLARGE_INTEGER _In_ ULONG _In_ ULONG _In_ ULONG CreateDisposition
Definition: fltkernel.h:1230
struct _FLT_PORT * PFLT_PORT
Definition: fltkernel.h:87
struct _FLT_NAME_CONTROL FLT_NAME_CONTROL
_Must_inspect_result_ _In_ PFILE_OBJECT _In_opt_ PLARGE_INTEGER ByteOffset
Definition: fltkernel.h:1251
uint32_t ULONG_PTR
Definition: typedefs.h:64
ULONG FLT_FILE_NAME_OPTIONS
Definition: fltkernel.h:661
ULONG BufferSize
Definition: fltkernel.h:287
FS_FILTER_SECTION_SYNC_TYPE SyncType
Definition: fltkernel.h:347
UNICODE_STRING Volume
Definition: fltkernel.h:810
struct _FLT_PARAMETERS::@1627::@1653 Neither
PIO_SECURITY_CONTEXT SecurityContext
Definition: fltkernel.h:101
PVOID InputBuffer
Definition: fltkernel.h:211
_Must_inspect_result_ _Out_ PIO_STATUS_BLOCK Iosb
Definition: fltkernel.h:1761
_Must_inspect_result_ _In_ PFLT_PORT _In_ ULONG _Out_writes_bytes_opt_ ReplyLength PVOID _Inout_opt_ PULONG ReplyLength
Definition: fltkernel.h:1903
_In_ ULONG VolumePropertiesLength
Definition: fltkernel.h:1735
PFLT_CALLBACK_DATA_QUEUE_RELEASE Release
Definition: fltkernel.h:924
struct _FLT_PARAMETERS::@1619 Write
UCHAR KIRQL
Definition: env_spec_w32.h:591
_Must_inspect_result_ _In_ PFLT_GET_OPERATION_STATUS_CALLBACK CallbackRoutine
Definition: fltkernel.h:1035
struct _FLT_PARAMETERS::@1635::@1668 QueryId
_Must_inspect_result_ _Out_ PHANDLE _Outptr_opt_ PFILE_OBJECT * VolumeFileObject
Definition: fltkernel.h:2284
_Outptr_ PFLT_INSTANCE * UpperInstance
Definition: fltkernel.h:1687
const struct _FLT_CONTEXT_REGISTRATION * PCFLT_CONTEXT_REGISTRATION
Definition: fltkernel.h:525
_In_ PVOID FilterContext
Definition: fsrtltypes.h:299
enum _FLT_PREOP_CALLBACK_STATUS FLT_PREOP_CALLBACK_STATUS
ULONG FLT_POST_OPERATION_FLAGS
Definition: fltkernel.h:592
LONG FLTAPI FltCompareInstanceAltitudes(_In_ PFLT_INSTANCE Instance1, _In_ PFLT_INSTANCE Instance2)
struct _FLT_FILE_NAME_INFORMATION * PFLT_FILE_NAME_INFORMATION
ERESOURCE * PERESOURCE
Definition: env_spec_w32.h:595
PFLT_NORMALIZE_CONTEXT_CLEANUP NormalizeContextCleanupCallback
Definition: fltkernel.h:741
struct _FLT_PARAMETERS::@1635::@1670 UsageNotification
PDEVICE_CAPABILITIES Capabilities
Definition: fltkernel.h:319
FLT_CONTEXT_REGISTRATION_FLAGS Flags
Definition: fltkernel.h:517
_Must_inspect_result_ _In_ FLT_CONTEXT_TYPE _In_ SIZE_T _In_ POOL_TYPE PoolType
Definition: fltkernel.h:1444
PFLT_POST_OPERATION_CALLBACK PostOperation
Definition: fltkernel.h:613
VOID FASTCALL FltRetainSwappedBufferMdlAddress(_In_ PFLT_CALLBACK_DATA CallbackData)
_Must_inspect_result_ _Out_ PULONG SessionId
Definition: fltkernel.h:2816
struct _FLT_PARAMETERS::@1635::@1666 ReadWriteConfig
VOID(FLTAPI * PFLT_GET_OPERATION_STATUS_CALLBACK)(_In_ PCFLT_RELATED_OBJECTS FltObjects, _In_ PFLT_IO_PARAMETER_BLOCK IopbSnapshot, _In_ NTSTATUS OperationStatus, _In_opt_ PVOID RequesterContext)
Definition: fltkernel.h:764
long LONG
Definition: pedump.c:60
struct _FLT_PARAMETERS::@1635::@1662 QueryDeviceRelations
DWORD SECURITY_INFORMATION
Definition: ms-dtyp.idl:311
VOID(FLTAPI * PFLT_CALLBACK_DATA_QUEUE_ACQUIRE)(_Inout_ PFLT_CALLBACK_DATA_QUEUE Cbdq, _Out_opt_ PKIRQL Irql)
Definition: fltkernel.h:900
NTSTATUS(FLTAPI * PFLT_NORMALIZE_NAME_COMPONENT)(_In_ PFLT_INSTANCE Instance, _In_ PCUNICODE_STRING ParentDirectory, _In_ USHORT VolumeNameLength, _In_ PCUNICODE_STRING Component, _Out_writes_bytes_(ExpandComponentNameLength) PFILE_NAMES_INFORMATION ExpandComponentName, _In_ ULONG ExpandComponentNameLength, _In_ FLT_NORMALIZE_NAME_FLAGS Flags, _Inout_ PVOID *NormalizationContext)
Definition: fltkernel.h:678
_In_ PDEVICE_OBJECT DeviceObject
Definition: fltkernel.h:1658
VOID FLTAPI FltClearCallbackDataDirty(_Inout_ PFLT_CALLBACK_DATA Data)
struct _FLT_PARAMETERS::@1626::@1650 NotifyDirectory
struct _FLT_VOLUME_PROPERTIES * PFLT_VOLUME_PROPERTIES
_Must_inspect_result_ _In_opt_ PFLT_FILTER Filter
Definition: fltkernel.h:1802
struct _FLT_PARAMETERS::@1645 MountVolume
_Must_inspect_result_ _In_ LPCGUID ULONG _In_ FSRTL_ALLOCATE_ECP_FLAGS _In_opt_ PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK _In_ ULONG _Outptr_ PVOID * EcpContext
Definition: fltkernel.h:2520
PFLT_INSTANCE_QUERY_TEARDOWN_CALLBACK InstanceQueryTeardownCallback
Definition: fltkernel.h:736
struct _FLT_PARAMETERS::@1631 SetSecurity
USHORT SubstituteNameOffset
Definition: fltkernel.h:623
LCID POINTER_ALIGNMENT LocaleId
Definition: fltkernel.h:338
_In_ PFLT_INSTANCE TargetInstance
Definition: fltkernel.h:2823
PFLT_INSTANCE Instance
Definition: fltkernel.h:919
_Acquires_shared_lock_ _Curr_ PERESOURCE Resource
Definition: exfuncs.h:440
UINTN * BufferSize
Definition: acefiex.h:370
_Inout_ PLIST_ENTRY _In_ PVOID _In_ PSTRING _In_ BOOLEAN _In_ BOOLEAN IgnoreBuffer
Definition: fltkernel.h:2239
BOOLEAN AdvanceOnly
Definition: fltkernel.h:149
_In_ PECP_LIST _In_ LPCGUID _Outptr_opt_ PVOID _Out_opt_ ULONG * EcpContextSize
Definition: fltkernel.h:2571
_Must_inspect_result_ _In_ LPCGUID ULONG _In_ FSRTL_ALLOCATE_ECP_FLAGS _In_opt_ PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK _In_ ULONG PoolTag
Definition: fltkernel.h:2520
BOOLEAN InPath
Definition: fltkernel.h:341
VOID FLTAPI FltUninitializeFileLock(_In_ PFILE_LOCK FileLock)
struct _FLT_PARAMETERS::@1616 CreatePipe
PVOID PFLT_CONTEXT
Definition: fltkernel.h:89
ULONG POINTER_ALIGNMENT LockKey
Definition: fltkernel.h:360
smooth NULL
Definition: ftsmooth.c:464
_Must_inspect_result_ _In_opt_ PFLT_FILTER _In_ ULONG _Out_ PULONG NumberInstancesReturned
Definition: fltkernel.h:1804
struct _FLT_TAG_DATA_BUFFER::@1673::@1677 GenericGUIDReparseBuffer
struct _FLT_TAG_DATA_BUFFER * TagData
Definition: fltkernel.h:462
struct _FLT_TAG_DATA_BUFFER::@1673::@1675 MountPointReparseBuffer
_Must_inspect_result_ _In_ PKTRANSACTION _In_ PFLT_CONTEXT _In_ NOTIFICATION_MASK NotificationMask
Definition: fltkernel.h:2453
_Must_inspect_result_ _In_ PFILE_OBJECT _In_ ULONG _In_ FILE_INFORMATION_CLASS _Out_opt_ PULONG LengthReturned
Definition: fltkernel.h:1306
VOID FLTAPI FltCbdqDisable(_Inout_ PFLT_CALLBACK_DATA_QUEUE Cbdq)
USHORT POINTER_ALIGNMENT FileAttributes
Definition: fltkernel.h:103
#define _Out_
Definition: no_sal2.h:323
struct _FLT_PARAMETERS::@1636 AcquireForSectionSynchronization
_Must_inspect_result_ _In_ PFILE_OBJECT _In_ ULONG FileTag
Definition: fltkernel.h:1266
_Inout_ PLIST_ENTRY _In_ PVOID _In_ PSTRING _In_ BOOLEAN _In_ BOOLEAN _In_ ULONG _In_ PFLT_CALLBACK_DATA NotifyCallbackData
Definition: fltkernel.h:2239
FLT_CONTEXT_TYPE ContextType
Definition: fltkernel.h:516
_Must_inspect_result_ _In_ PFILE_OBJECT _In_ SECURITY_INFORMATION SecurityInformation
Definition: fltkernel.h:1339
#define FLTFL_IO_OPERATION_PAGING
Definition: fltkernel.h:756
_ANONYMOUS_STRUCT struct _FLT_PARAMETERS::@1621::@1647::@1648 DUMMYSTRUCTNAME
Definition: bufpool.h:45
_Must_inspect_result_ _In_opt_ PFLT_INSTANCE _Out_ PHANDLE _In_ ACCESS_MASK _In_ POBJECT_ATTRIBUTES _Out_ PIO_STATUS_BLOCK _In_opt_ PLARGE_INTEGER _In_ ULONG _In_ ULONG ShareAccess
Definition: fltkernel.h:1230
FLT_PREOP_CALLBACK_STATUS(FLTAPI * PFLT_PRE_OPERATION_CALLBACK)(_Inout_ PFLT_CALLBACK_DATA Data, _In_ PCFLT_RELATED_OBJECTS FltObjects, _Outptr_result_maybenull_ PVOID *CompletionContext)
Definition: fltkernel.h:582
PFLT_CALLBACK_DATA_QUEUE_ACQUIRE Acquire
Definition: fltkernel.h:923
_Must_inspect_result_ _In_ PFLT_CALLBACK_DATA _In_ ULONG OpenCount
Definition: fltkernel.h:2082
UNICODE_STRING Share
Definition: fltkernel.h:811
_Must_inspect_result_ __drv_aliasesMem _In_ PDEVICE_OBJECT _In_opt_ PVOID _In_ ULONG _Out_opt_ PVOID OutputBuffer
Definition: iofuncs.h:713
VOID FLTAPI FltUnregisterFilter(_In_ PFLT_FILTER Filter)
Definition: Filter.c:222
union _FLT_PARAMETERS::@1626 DirectoryControl
_Must_inspect_result_ _In_opt_ PFLT_INSTANCE _Out_ PHANDLE _In_ ACCESS_MASK _In_ POBJECT_ATTRIBUTES _Out_ PIO_STATUS_BLOCK _In_opt_ PLARGE_INTEGER _In_ ULONG FileAttributes
Definition: fltkernel.h:1230
struct _FLT_PARAMETERS::@1615 Create
_In_ PCUNICODE_STRING _In_ PVOID Driver
Definition: cmfuncs.h:32
NTSTATUS(FLTAPI * PFLT_CONNECT_NOTIFY)(_In_ PFLT_PORT ClientPort, _In_opt_ PVOID ServerPortCookie, _In_reads_bytes_opt_(SizeOfContext) PVOID ConnectionContext, _In_ ULONG SizeOfContext, _Outptr_result_maybenull_ PVOID *ConnectionPortCookie)
Definition: fltkernel.h:848
PMDL OutputMdlAddress
Definition: fltkernel.h:213
#define CONST
Definition: compiler.h:170
_ANONYMOUS_STRUCT struct _FLT_CALLBACK_DATA::@1671::@1672 DUMMYSTRUCTNAME
NTSTATUS(FLTAPI * PFLT_NORMALIZE_NAME_COMPONENT_EX)(_In_ PFLT_INSTANCE Instance, _In_ PFILE_OBJECT FileObject, _In_ PCUNICODE_STRING ParentDirectory, _In_ USHORT VolumeNameLength, _In_ PCUNICODE_STRING Component, _Out_writes_bytes_(ExpandComponentNameLength) PFILE_NAMES_INFORMATION ExpandComponentName, _In_ ULONG ExpandComponentNameLength, _In_ FLT_NORMALIZE_NAME_FLAGS Flags, _Inout_ PVOID *NormalizationContext)
Definition: fltkernel.h:689
VOID(FLTAPI * PFLT_CALLBACK_DATA_QUEUE_COMPLETE_CANCELED_IO)(_Inout_ PFLT_CALLBACK_DATA_QUEUE Cbdq, _Inout_ PFLT_CALLBACK_DATA Cbd)
Definition: fltkernel.h:910
enum _DEVICE_RELATION_TYPE DEVICE_RELATION_TYPE
#define POINTER_ALIGNMENT
PVOID ReadBuffer
Definition: fltkernel.h:127
_In_ NTSTATUS OperationStatus
Definition: iotypes.h:7022
ULONG FLT_CALLBACK_DATA_QUEUE_FLAGS
Definition: fltkernel.h:914
_Must_inspect_result_ _Inout_ PFLT_VOLUME _In_ PCUNICODE_STRING Altitude
Definition: fltkernel.h:1172
USHORT FLT_CONTEXT_REGISTRATION_FLAGS
Definition: fltkernel.h:509
BOOLEAN FLTAPI FltIsOperationSynchronous(_In_ PFLT_CALLBACK_DATA CallbackData)
VOID(FLTAPI * PFLT_GENERIC_WORKITEM_ROUTINE)(_In_ PFLT_GENERIC_WORKITEM FltWorkItem, _In_ PVOID FltObject, _In_opt_ PVOID Context)
Definition: fltkernel.h:873
_ANONYMOUS_UNION union _FLT_TAG_DATA_BUFFER::@1673 DUMMYUNIONNAME
_In_ PIRP _In_ PVOID InsertContext
Definition: csq.h:257
PFLT_CONTEXT_ALLOCATE_CALLBACK ContextAllocateCallback
Definition: fltkernel.h:521
PMDL FASTCALL FltGetSwappedBufferMdlAddress(_In_ PFLT_CALLBACK_DATA CallbackData)
#define _Out_opt_
Definition: no_sal2.h:339
PIO_RESOURCE_REQUIREMENTS_LIST IoResourceRequirementList
Definition: fltkernel.h:322
PFLT_GENERATE_FILE_NAME GenerateFileNameCallback
Definition: fltkernel.h:739
_Must_inspect_result_ *NumberFiltersReturned PFLT_FILTER _In_ ULONG _Out_ PULONG NumberFiltersReturned
Definition: fltkernel.h:1782
unsigned char BOOLEAN
BOOLEAN ReplaceIfExists
Definition: fltkernel.h:148
struct _FLT_PARAMETERS::@1635::@1664 DeviceCapabilities
HANDLE DeleteHandle
Definition: fltkernel.h:152
PCHAR FLTAPI FltGetIrpName(_In_ UCHAR IrpMajorCode)
union _FLT_PARAMETERS * PFLT_PARAMETERS
PFLT_CALLBACK_DATA_QUEUE_PEEK_NEXT_IO PeekNextIo
Definition: fltkernel.h:922
_ANONYMOUS_UNION union _FLT_PARAMETERS::@1621::@1647 DUMMYUNIONNAME
VOID(FLTAPI * PFLT_NORMALIZE_CONTEXT_CLEANUP)(_In_opt_ PVOID *NormalizationContext)
Definition: fltkernel.h:701
DEVICE_USAGE_NOTIFICATION_TYPE POINTER_ALIGNMENT Type
Definition: fltkernel.h:343
VOID(FLTAPI * PFLT_CALLBACK_DATA_QUEUE_REMOVE_IO)(_Inout_ PFLT_CALLBACK_DATA_QUEUE Cbdq, _In_ PFLT_CALLBACK_DATA Cbd)
Definition: fltkernel.h:889
struct _FLT_PARAMETERS::@1617 CreateMailslot
_In_ PFLT_COMPLETE_CANCELED_CALLBACK CanceledCallback
Definition: fltkernel.h:1933
struct _FLT_PARAMETERS::@1629 LockControl
IO_STATUS_BLOCK IoStatus
Definition: fltkernel.h:461
_Inout_ PVOID Lookaside
Definition: fltkernel.h:2532
_Outptr_ PDEVICE_OBJECT * DiskDeviceObject
Definition: fltkernel.h:1673
enum _FSINFOCLASS FS_INFORMATION_CLASS
struct _FLT_TAG_DATA_BUFFER FLT_TAG_DATA_BUFFER
PFILE_OBJECT TargetFileObject
Definition: fltkernel.h:409
USHORT SubstituteNameLength
Definition: fltkernel.h:624
_In_ FLT_SET_CONTEXT_OPERATION _In_ PFLT_CONTEXT _Outptr_opt_result_maybenull_ PFLT_CONTEXT * OldContext
Definition: fltkernel.h:1468
_Must_inspect_result_ _In_opt_ PFLT_INSTANCE _Out_ PHANDLE _In_ ACCESS_MASK _In_ POBJECT_ATTRIBUTES _Out_ PIO_STATUS_BLOCK _In_opt_ PLARGE_INTEGER _In_ ULONG _In_ ULONG _In_ ULONG _In_ ULONG _In_ ULONG EaLength
Definition: fltkernel.h:1241
struct _FLT_PARAMETERS::@1642 MdlReadComplete
_Must_inspect_result_ _Outptr_ PFLT_PORT _In_ POBJECT_ATTRIBUTES _In_opt_ PVOID _In_ PFLT_CONNECT_NOTIFY _In_ PFLT_DISCONNECT_NOTIFY DisconnectNotifyCallback
Definition: fltkernel.h:1873
enum _FLT_SET_CONTEXT_OPERATION FLT_SET_CONTEXT_OPERATION
INT POOL_TYPE
Definition: typedefs.h:77
BOOLEAN FailImmediately
Definition: fltkernel.h:271
PERESOURCE ResourceToRelease
Definition: fltkernel.h:355
struct _FLT_OPERATION_REGISTRATION * PFLT_OPERATION_REGISTRATION
PVOID PNOTIFY_SYNC
Definition: fsrtltypes.h:284
PERESOURCE * ResourceToRelease
Definition: fltkernel.h:352
struct _FLT_PARAMETERS::@1644 MdlWriteComplete
ACPI_EFI_EVENT VOID ** Registration
Definition: acefiex.h:607
_Must_inspect_result_ _Out_ PIO_STATUS_BLOCK _Out_writes_bytes_(Length) PVOID FsInformation
PFLT_FILTER_UNLOAD_CALLBACK FilterUnloadCallback
Definition: fltkernel.h:734
union _FLT_PARAMETERS FLT_PARAMETERS
Definition: bufpool.h:50
#define _Outptr_result_maybenull_
Definition: no_sal2.h:426
PETHREAD CONST Thread
Definition: fltkernel.h:459
_Must_inspect_result_ _In_opt_ PFILE_OBJECT FileObject
Definition: fltkernel.h:983
enum _WAIT_TYPE WAIT_TYPE
_In_opt_ PFILE_OBJECT _In_opt_ PETHREAD Thread
Definition: fltkernel.h:2653
_Must_inspect_result_ _Out_ PHANDLE VolumeHandle
Definition: fltkernel.h:2284
_Must_inspect_result_ _In_opt_ PFLT_INSTANCE Instance
Definition: fltkernel.h:1071
_Must_inspect_result_ _In_opt_ PFLT_INSTANCE _Out_ PHANDLE _In_ ACCESS_MASK _In_ POBJECT_ATTRIBUTES _Out_ PIO_STATUS_BLOCK _In_opt_ PLARGE_INTEGER _In_ ULONG _In_ ULONG _In_ ULONG _In_ ULONG CreateOptions
Definition: fltkernel.h:1230
VOID FLTAPI FltSetCallbackDataDirty(_Inout_ PFLT_CALLBACK_DATA Data)
_Must_inspect_result_ _In_ PFILE_OBJECT _In_ ULONG _In_opt_ GUID _In_ USHORT DataBufferLength
Definition: fltkernel.h:1270
#define _Inout_
Definition: no_sal2.h:244
PFLT_CALLBACK_DATA_QUEUE_INSERT_IO InsertIo
Definition: fltkernel.h:920
BOOLEAN ExclusiveLock
Definition: fltkernel.h:272
DEVICE_TEXT_TYPE DeviceTextType
Definition: fltkernel.h:337
CCHAR KPROCESSOR_MODE
Definition: ketypes.h:7
_Acquires_lock_(_Global_critical_region_) _IRQL_requires_max_(APC_LEVEL) VOID FLTAPI FltAcquireResourceExclusive(_Inout_ _Requires_lock_not_held_(*_Curr_) _Acquires_lock_(*_Curr_) PERESOURCE Resource)
Definition: semaphor.c:84
* PFILE_OBJECT
Definition: iotypes.h:1949
FLT_CALLBACK_DATA_QUEUE_FLAGS Flags
Definition: fltkernel.h:918
LARGE_INTEGER ByteOffset
Definition: fltkernel.h:126
static IUnknown Object
Definition: main.c:512
_Must_inspect_result_ PFLT_CALLBACK_DATA FLTAPI FltCbdqRemoveIo(_Inout_ PFLT_CALLBACK_DATA_QUEUE Cbdq, _In_ PFLT_CALLBACK_DATA_QUEUE_IO_CONTEXT Context)
FLT_POSTOP_CALLBACK_STATUS(FLTAPI * PFLT_POST_OPERATION_CALLBACK)(_Inout_ PFLT_CALLBACK_DATA Data, _In_ PCFLT_RELATED_OBJECTS FltObjects, _In_opt_ PVOID CompletionContext, _In_ FLT_POST_OPERATION_FLAGS Flags)
Definition: fltkernel.h:597
_In_ PFLT_INSTANCE _Out_ PBOOLEAN RedirectionAllowed
Definition: fltkernel.h:2831
struct _FLT_PARAMETERS::@1620 QueryFileInformation
struct _FLT_PARAMETERS::@1635::@1669 QueryDeviceText
_Must_inspect_result_ _In_ LPCGUID ULONG _In_ FSRTL_ALLOCATE_ECP_FLAGS _In_opt_ PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK CleanupCallback
Definition: fltkernel.h:2520
NTSTATUS(* PFLT_COMPLETE_LOCK_CALLBACK_DATA_ROUTINE)(_In_opt_ PVOID Context, _In_ PFLT_CALLBACK_DATA CallbackData)
Definition: fltkernel.h:929
_Must_inspect_result_ _In_opt_ PFLT_INSTANCE _Out_ PHANDLE _In_ ACCESS_MASK _In_ POBJECT_ATTRIBUTES _Out_ PIO_STATUS_BLOCK _In_opt_ PLARGE_INTEGER _In_ ULONG _In_ ULONG _In_ ULONG _In_ ULONG _In_ ULONG _In_ ULONG Flags
Definition: fltkernel.h:1241
enum _WORK_QUEUE_TYPE WORK_QUEUE_TYPE
UNICODE_STRING RealDeviceName
Definition: fltkernel.h:832
unsigned char UCHAR
Definition: xmlstorage.h:181
_In_ FLT_PREOP_CALLBACK_STATUS CallbackStatus
Definition: fltkernel.h:1020
PFLT_CALLBACK_DATA_QUEUE_COMPLETE_CANCELED_IO CompleteCanceledIo
Definition: fltkernel.h:925
char * PBOOLEAN
Definition: retypes.h:11
struct _FLT_PARAMETERS::@1618 Read
_Must_inspect_result_ _In_ PFLT_PORT _In_ ULONG _Out_writes_bytes_opt_ ReplyLength PVOID ReplyBuffer
Definition: fltkernel.h:1903
_In_ PECP_LIST _In_opt_ PVOID CurrentEcpContext
Definition: fltkernel.h:2621
_Must_inspect_result_ _In_ PFILE_OBJECT _In_ ULONG _In_ BOOLEAN _In_ ULONG EaListLength
Definition: fltkernel.h:2298
ULONG POINTER_ALIGNMENT EaLength
Definition: fltkernel.h:105
USHORT Version
Definition: fltkernel.h:314
VOID UINTN Length
Definition: acefiex.h:718
struct _FLT_PARAMETERS::@1646 Others
_Must_inspect_result_ _In_ PFLT_INSTANCE _Out_ PBOOLEAN IsDirectory
Definition: fltkernel.h:1139
PFLT_CONTEXT_CLEANUP_CALLBACK ContextCleanupCallback
Definition: fltkernel.h:518
_Releases_lock_(_Global_critical_region_) _IRQL_requires_max_(DISPATCH_LEVEL) VOID FLTAPI FltReleaseResource(_Inout_ _Requires_lock_held_(*_Curr_) _Releases_lock_(*_Curr_) PERESOURCE Resource)
Definition: semaphor.c:63
IN SIZE_T NumberOfBytes
Definition: ndis.h:3914
_In_ FLT_PREOP_CALLBACK_STATUS _In_opt_ PVOID Context
Definition: fltkernel.h:1020
_In_opt_ PFILE_OBJECT Fo2
Definition: fsrtlfuncs.h:1477
BOOLEAN FLTAPI FltIsCallbackDataDirty(_In_ PFLT_CALLBACK_DATA Data)
union _FLT_PARAMETERS::@1635 Pnp
PVOID *typedef PHANDLE
Definition: ntsecpkg.h:411
_Must_inspect_result_ _In_ PFLT_FILE_NAME_INFORMATION _Outptr_result_maybenull_ PFLT_FILE_NAME_INFORMATION * RetTunneledFileNameInformation
Definition: fltkernel.h:1108
#define VOID
Definition: acefi.h:69
PFLT_CONTEXT_FREE_CALLBACK ContextFreeCallback
Definition: fltkernel.h:522
VOID(FLTAPI * PFLT_CONTEXT_CLEANUP_CALLBACK)(_In_ PFLT_CONTEXT Context, _In_ FLT_CONTEXT_TYPE ContextType)
Definition: fltkernel.h:494
_FLT_PREOP_CALLBACK_STATUS
Definition: fltkernel.h:572
VOID(FLTAPI * PFLT_COMPLETED_ASYNC_IO_CALLBACK)(_In_ PFLT_CALLBACK_DATA CallbackData, _In_ PFLT_CONTEXT Context)
Definition: fltkernel.h:749
_Must_inspect_result_ _In_opt_ PFLT_INSTANCE _Out_ PHANDLE _In_ ACCESS_MASK _In_ POBJECT_ATTRIBUTES _Out_ PIO_STATUS_BLOCK _In_opt_ PLARGE_INTEGER _In_ ULONG _In_ ULONG _In_ ULONG _In_ ULONG _In_reads_bytes_opt_(EaLength) PVOID EaBuffer
struct _FLT_CALLBACK_DATA * PFLT_CALLBACK_DATA
FLT_CALLBACK_DATA_FLAGS Flags
Definition: fltkernel.h:458
KIRQL * PKIRQL
Definition: env_spec_w32.h:592
enum _FLT_POSTOP_CALLBACK_STATUS * PFLT_POSTOP_CALLBACK_STATUS
struct _FLT_PARAMETERS::@1632 WMI
struct _FLT_INSTANCE * PFLT_INSTANCE
Definition: fltkernel.h:86
PVOID QuotaBuffer
Definition: fltkernel.h:295
ULONG POINTER_ALIGNMENT Spare2
Definition: fltkernel.h:192
FS_INFORMATION_CLASS POINTER_ALIGNMENT FsInformationClass
Definition: fltkernel.h:171
_Must_inspect_result_ _In_ USHORT NewSize
Definition: fltkernel.h:975
#define _Outptr_opt_
Definition: no_sal2.h:397
_In_ PECP_LIST _In_opt_ PVOID _Out_opt_ LPGUID _Outptr_opt_ PVOID _Out_opt_ ULONG * NextEcpContextSize
Definition: fltkernel.h:2621
Definition: typedefs.h:118
#define FlagOn(_F, _SF)
Definition: ext2fs.h:178
struct _FLT_PARAMETERS::@1625 SetVolumeInformation
struct _FLT_IO_PARAMETER_BLOCK * PFLT_IO_PARAMETER_BLOCK
_Must_inspect_result_ _In_opt_ PFILE_OBJECT _Outptr_ PFLT_CALLBACK_DATA * RetNewCallbackData
Definition: fltkernel.h:1192
PVOID * POPLOCK
Definition: fsrtltypes.h:250
PFLT_INSTANCE_TEARDOWN_CALLBACK InstanceTeardownCompleteCallback
Definition: fltkernel.h:738
#define PASSIVE_LEVEL
Definition: env_spec_w32.h:693
_Must_inspect_result_ _In_opt_ PFLT_INSTANCE _Out_ PHANDLE FileHandle
Definition: fltkernel.h:1230
PVOID Parameters
Definition: fltkernel.h:114
UNICODE_STRING FinalComponent
Definition: fltkernel.h:814
ULONG FLT_NORMALIZE_NAME_FLAGS
Definition: fltkernel.h:672
_Must_inspect_result_ _Outptr_ PFLT_PORT _In_ POBJECT_ATTRIBUTES _In_opt_ PVOID _In_ PFLT_CONNECT_NOTIFY ConnectNotifyCallback
Definition: fltkernel.h:1873
PCM_RESOURCE_LIST AllocatedResourcesTranslated
Definition: fltkernel.h:306
SECURITY_INFORMATION SecurityInformation
Definition: fltkernel.h:275
ULONG PVOID Reserved
Definition: ntimage.h:533
_Must_inspect_result_ _In_ PFILE_OBJECT _In_ ULONG _In_ ULONG InputBufferLength
Definition: fltkernel.h:1372
_ANONYMOUS_UNION union _FLT_CALLBACK_DATA::@1671 DUMMYUNIONNAME
enum _IO_PRIORITY_HINT IO_PRIORITY_HINT
_Must_inspect_result_ _In_ PFILE_OBJECT _In_opt_ HANDLE _In_ ULONG FileNameLength
Definition: fltkernel.h:1129
struct _FLT_TAG_DATA_BUFFER::@1673::@1674 SymbolicLinkReparseBuffer
struct _FLT_PARAMETERS::@1626::@1649 QueryDirectory
ULONG FLT_REGISTRATION_FLAGS
Definition: fltkernel.h:723
ULONG_PTR ProviderId
Definition: fltkernel.h:285
#define _ANONYMOUS_STRUCT
Definition: ntbasedef.h:56
* PDEVICE_CAPABILITIES
Definition: iotypes.h:927
VOID(FLTAPI * PFLT_INSTANCE_TEARDOWN_CALLBACK)(_In_ PCFLT_RELATED_OBJECTS FltObjects, _In_ FLT_INSTANCE_TEARDOWN_FLAGS Reason)
Definition: fltkernel.h:568
VOID(FLTAPI * PFLTOPLOCK_PREPOST_CALLBACKDATA_ROUTINE)(_In_ PFLT_CALLBACK_DATA CallbackData, _In_opt_ PVOID Context)
Definition: fltkernel.h:939
ULONG FLT_ALLOCATE_CALLBACK_DATA_FLAGS
Definition: fltkernel.h:453
PFILE_OBJECT ParentOfTarget
Definition: fltkernel.h:145
NTSTATUS(FLTAPI * PFLT_INSTANCE_QUERY_TEARDOWN_CALLBACK)(_In_ PCFLT_RELATED_OBJECTS FltObjects, _In_ FLT_INSTANCE_QUERY_TEARDOWN_FLAGS Flags)
Definition: fltkernel.h:555
struct _FLT_PARAMETERS::@1638 ReleaseForModifiedPageWriter
_Must_inspect_result_ _In_ PFILE_OBJECT _In_opt_ PLARGE_INTEGER _In_ ULONG _In_ FLT_IO_OPERATION_FLAGS _Out_opt_ PULONG _In_opt_ PFLT_COMPLETED_ASYNC_IO_CALLBACK _In_opt_ PVOID CallbackContext
Definition: fltkernel.h:1255
#define DISPATCH_LEVEL
Definition: env_spec_w32.h:696
#define _In_
Definition: no_sal2.h:204
struct _ECP_LIST * PECP_LIST
Definition: fsrtltypes.h:139
#define _Outptr_opt_result_bytebuffer_(size)
Definition: no_sal2.h:404
struct _FLT_PARAMETERS::@1628::@1660 FastIo
Definition: csq.h:222
const struct _FLT_RELATED_OBJECTS * PCFLT_RELATED_OBJECTS
Definition: fltkernel.h:482
_Must_inspect_result_ _In_ PFLT_GET_OPERATION_STATUS_CALLBACK _In_opt_ PVOID RequesterContext
Definition: fltkernel.h:1035
struct _FLT_TAG_DATA_BUFFER::@1673::@1676 GenericReparseBuffer
struct _FLT_CALLBACK_DATA_QUEUE FLT_CALLBACK_DATA_QUEUE
Definition: fltkernel.h:880
ULONG_PTR SIZE_T
Definition: typedefs.h:79
_Must_inspect_result_ _In_opt_ PFLT_INSTANCE _Out_ PHANDLE _In_ ACCESS_MASK DesiredAccess
Definition: fltkernel.h:1230
ULONG Reason
Definition: ntimage.h:533
BOOLEAN Lock
Definition: fltkernel.h:331
struct _FLT_PARAMETERS::@1641 MdlRead
FILE_INFORMATION_CLASS POINTER_ALIGNMENT FileInformationClass
Definition: fltkernel.h:139
#define _Requires_lock_held_(lock)
Definition: no_sal2.h:704
DWORD *typedef HANDLE
Definition: winlogon.h:52
PVOID InfoBuffer
Definition: fltkernel.h:140
LONG NTSTATUS
Definition: DriverTester.h:11
PINTERFACE Interface
Definition: fltkernel.h:315
_Must_inspect_result_ _In_ FLT_FILE_NAME_OPTIONS NameOptions
Definition: fltkernel.h:1062
LARGE_INTEGER Argument6
Definition: fltkernel.h:395
_Outptr_ PFLT_INSTANCE * LowerInstance
Definition: fltkernel.h:1680
ULONG FLT_INSTANCE_SETUP_FLAGS
Definition: fltkernel.h:527
enum _LOCK_OPERATION LOCK_OPERATION
FLT_FILE_NAME_PARSED_FLAGS NamesParsed
Definition: fltkernel.h:807
struct _FLT_PARAMETERS::@1621 SetFileInformation
ULONG POINTER_ALIGNMENT InputBufferLength
Definition: fltkernel.h:204
_In_ PFLT_INSTANCE _Out_ PBOOLEAN RedirectionAllowedThisIo
Definition: fltkernel.h:2839
unsigned short USHORT
Definition: pedump.c:61
USHORT UnparsedNameLength
Definition: fltkernel.h:620
PFILE_GET_QUOTA_INFORMATION SidList
Definition: fltkernel.h:293
struct _FLT_PARAMETERS::@1633 QueryQuota
NTSTATUS FLTAPI FltObjectReference(_Inout_ PVOID Object)
Definition: Object.c:30
_Must_inspect_result_ _In_opt_ PFLT_INSTANCE _Out_ PHANDLE _In_ ACCESS_MASK _In_ POBJECT_ATTRIBUTES _Out_ PIO_STATUS_BLOCK _In_opt_ PLARGE_INTEGER AllocationSize
Definition: fltkernel.h:1230
USHORT FLT_FILE_NAME_PARSED_FLAGS
Definition: fltkernel.h:798
_Must_inspect_result_ _In_ PKTRANSACTION _In_ PFLT_CONTEXT TransactionContext
Definition: fltkernel.h:2453
ULONG POINTER_ALIGNMENT Key
Definition: fltkernel.h:125
_Must_inspect_result_ _In_ PFLT_PORT _In_ ULONG SenderBufferLength
Definition: fltkernel.h:1902
_Inout_ PLIST_ENTRY NotifyList
Definition: fltkernel.h:2239
_Must_inspect_result_ _Outptr_ PFLT_PORT _In_ POBJECT_ATTRIBUTES _In_opt_ PVOID ServerPortCookie
Definition: fltkernel.h:1873
struct _FLT_PARAMETERS::@1640 NetworkQueryOpen
_In_ FILTER_INFORMATION_CLASS _In_ ULONG _Out_ PULONG BytesReturned
Definition: fltkernel.h:1716
_Must_inspect_result_ _In_ ULONG VolumeListSize
Definition: fltkernel.h:1793
#define _Outptr_opt_result_maybenull_
Definition: no_sal2.h:410
struct _FLT_PARAMETERS::@1627::@1655 Direct
struct _FLT_GENERIC_WORKITEM * PFLT_GENERIC_WORKITEM
Definition: fltkernel.h:864
struct _FLT_PARAMETERS::@1634 SetQuota
ULONG FLT_CALLBACK_DATA_FLAGS
Definition: fltkernel.h:450
_In_ FLT_CONTEXT_TYPE _Out_ PFLT_RELATED_CONTEXTS Contexts
Definition: fltkernel.h:1454
unsigned int * PULONG
Definition: retypes.h:1
struct _FLT_PARAMETERS::@1637 AcquireForModifiedPageWriter
struct _FLT_REGISTRATION * PFLT_REGISTRATION
struct _FLT_PARAMETERS::@1643 PrepareMdlWrite
FLT_REGISTRATION_FLAGS Flags
Definition: fltkernel.h:731
_Must_inspect_result_ _In_opt_ PFLT_INSTANCE _Out_ PHANDLE _In_ ACCESS_MASK _In_ POBJECT_ATTRIBUTES ObjectAttributes
Definition: fltkernel.h:1230
struct _FLT_REGISTRATION FLT_REGISTRATION
_Must_inspect_result_ _In_ PFILE_OBJECT _In_opt_ PLARGE_INTEGER _In_ ULONG _Out_writes_bytes_to_(Length,*BytesRead) PVOID Buffer
_Inout_ PLIST_ENTRY _In_ PVOID _In_ PSTRING _In_ BOOLEAN _In_ BOOLEAN _In_ ULONG CompletionFilter
Definition: fltkernel.h:2239
struct _FLT_FILE_NAME_INFORMATION FLT_FILE_NAME_INFORMATION
_Must_inspect_result_ _Out_ PBOOLEAN IsWritable
Definition: fltkernel.h:1744
PEPROCESS ProcessId
Definition: fltkernel.h:270
struct _FLT_RELATED_OBJECTS FLT_RELATED_OBJECTS
struct _FLT_PARAMETERS::@1624 QueryVolumeInformation
#define IRP_PAGING_IO
ULONG SidListLength
Definition: fltkernel.h:294
struct _FLT_IO_PARAMETER_BLOCK FLT_IO_PARAMETER_BLOCK
union _FLT_PARAMETERS::@1628 DeviceIoControl
_In_opt_ PIRP _In_opt_ PVOID PeekContext
Definition: csq.h:159
_Must_inspect_result_ _In_ PFILE_OBJECT _In_ ULONG FsControlCode
Definition: fltkernel.h:1369
USHORT ShareAccess
Definition: fltkernel.h:104
ULONG POINTER_ALIGNMENT IoControlCode
Definition: fltkernel.h:234
IN ULONG IN ULONG Tag
Definition: evtlib.h:153
CONST FLT_CONTEXT_REGISTRATION * ContextRegistration
Definition: fltkernel.h:732
enum _FS_FILTER_SECTION_SYNC_TYPE FS_FILTER_SECTION_SYNC_TYPE
_Inout_ PLIST_ENTRY _In_ PVOID _In_ PSTRING _In_ BOOLEAN _In_ BOOLEAN _In_ ULONG _In_ PFLT_CALLBACK_DATA _In_opt_ PCHECK_FOR_TRAVERSE_ACCESS TraverseCallback
Definition: fltkernel.h:2239
VOID(FLTAPI * PFLT_DISCONNECT_NOTIFY)(_In_opt_ PVOID ConnectionCookie)
Definition: fltkernel.h:856
struct _FLT_PARAMETERS::@1639 FastIoCheckIfPossible
_In_ FLT_SET_CONTEXT_OPERATION _In_ PFLT_CONTEXT NewContext
Definition: fltkernel.h:1468
PFLT_IO_PARAMETER_BLOCK CONST Iopb
Definition: fltkernel.h:460
PCM_RESOURCE_LIST AllocatedResources
Definition: fltkernel.h:305
_Must_inspect_result_ _Inout_opt_ PUNICODE_STRING VolumeName
Definition: fltkernel.h:1117
_Must_inspect_result_ _In_ PFILE_OBJECT _In_ SECURITY_INFORMATION _Inout_updates_bytes_opt_(Length) PSECURITY_DESCRIPTOR SecurityDescriptor
_Must_inspect_result_ _Out_writes_to_opt_(VolumeListSize,*NumberVolumesReturned) PFLT_VOLUME *VolumeList
signed char * PCHAR
Definition: retypes.h:7
_Must_inspect_result_ _In_ PFILE_OBJECT _In_ ULONG _In_ FILE_INFORMATION_CLASS FileInformationClass
Definition: fltkernel.h:1306
UNICODE_STRING FileSystemDeviceName
Definition: fltkernel.h:831
_Must_inspect_result_ _In_opt_ PFLT_FILTER _In_ ULONG InstanceListSize
Definition: fltkernel.h:1804
Definition: iotypes.h:166
NTSTATUS NTAPI FltRegisterFilter(_In_ PDRIVER_OBJECT DriverObject, _In_ const FLT_REGISTRATION *Registration, _Out_ PFLT_FILTER *RetFilter)
Definition: Filter.c:65
_Must_inspect_result_ PFLT_CALLBACK_DATA FLTAPI FltCbdqRemoveNextIo(_Inout_ PFLT_CALLBACK_DATA_QUEUE Cbdq, _In_opt_ PVOID PeekContext)
struct _FLT_PARAMETERS::@1635::@1667 SetLock
struct _FLT_DEFERRED_IO_WORKITEM * PFLT_DEFERRED_IO_WORKITEM
Definition: fltkernel.h:863
_Must_inspect_result_ _In_opt_ PFLT_INSTANCE _Out_ PHANDLE _In_ ACCESS_MASK _In_ POBJECT_ATTRIBUTES _Out_ PIO_STATUS_BLOCK IoStatusBlock
Definition: fltkernel.h:1230
ULONG POINTER_ALIGNMENT FsControlCode
Definition: fltkernel.h:205
NTSTATUS(FLTAPI * PFLT_INSTANCE_SETUP_CALLBACK)(_In_ PCFLT_RELATED_OBJECTS FltObjects, _In_ FLT_INSTANCE_SETUP_FLAGS Flags, _In_ DEVICE_TYPE VolumeDeviceType, _In_ FLT_FILESYSTEM_TYPE VolumeFilesystemType)
Definition: fltkernel.h:546
PVOID DirectoryBuffer
Definition: fltkernel.h:185
PVOID PIRP
Definition: usb.h:38
unsigned int ULONG
Definition: retypes.h:1
ULONG EaListLength
Definition: fltkernel.h:159
NTSTATUS(FLTAPI * PFLT_MESSAGE_NOTIFY)(_In_opt_ PVOID PortCookie, _In_reads_bytes_opt_(InputBufferLength) PVOID InputBuffer, _In_ ULONG InputBufferLength, _Out_writes_bytes_to_opt_(OutputBufferLength,*ReturnOutputBufferLength) PVOID OutputBuffer, _In_ ULONG OutputBufferLength, _Out_ PULONG ReturnOutputBufferLength)
Definition: fltkernel.h:839
UNICODE_STRING Extension
Definition: fltkernel.h:812
_Must_inspect_result_ _In_ FLT_CONTEXT_TYPE ContextType
Definition: fltkernel.h:1444
KPROCESSOR_MODE RequestorMode
Definition: fltkernel.h:470
_Must_inspect_result_ _In_ WAIT_TYPE _In_opt_ PLARGE_INTEGER _In_opt_ PKWAIT_BLOCK WaitBlockArray
Definition: fsrtlfuncs.h:1151
_In_ FLT_SET_CONTEXT_OPERATION Operation
Definition: fltkernel.h:1468
BOOLEAN FLTAPI FltIsIoCanceled(_In_ PFLT_CALLBACK_DATA CallbackData)
PMDL * MdlChain
Definition: fltkernel.h:371
_Must_inspect_result_ _Outptr_ PFLT_PORT _In_ POBJECT_ATTRIBUTES _In_opt_ PVOID _In_ PFLT_CONNECT_NOTIFY _In_ PFLT_DISCONNECT_NOTIFY _In_opt_ PFLT_MESSAGE_NOTIFY _In_ LONG MaxConnections
Definition: fltkernel.h:1873
_In_opt_ PVOID _In_ PSECURITY_SUBJECT_CONTEXT SubjectContext
Definition: fsrtltypes.h:293
_Must_inspect_result_ _In_ PFILE_OBJECT _In_ SECURITY_INFORMATION _In_ ULONG _Out_opt_ PULONG LengthNeeded
Definition: fltkernel.h:1342
struct _FLT_PARAMETERS::@1635::@1665 FilterResourceRequirements
_Must_inspect_result_ _In_ PVOID FltObject
Definition: fltkernel.h:1988
#define NTSTATUS
Definition: env_spec_w32.h:77
PVOID InputSystemBuffer
Definition: fltkernel.h:225
VOID(FLTAPI * PFLT_DEFERRED_IO_WORKITEM_ROUTINE)(_In_ PFLT_DEFERRED_IO_WORKITEM FltWorkItem, _In_ PFLT_CALLBACK_DATA CallbackData, _In_opt_ PVOID Context)
Definition: fltkernel.h:867
_In_opt_ PFILE_OBJECT _In_opt_ PETHREAD _Inout_ PIO_PRIORITY_INFO PriorityInfo
Definition: fltkernel.h:2653
PFLT_PRE_OPERATION_CALLBACK PreOperation
Definition: fltkernel.h:612
_Must_inspect_result_ _IRQL_requires_max_(APC_LEVEL) NTSTATUS FLTAPI FltCheckAndGrowNameControl(_Inout_ PFLT_NAME_CONTROL NameCtrl
struct _FLT_PARAMETERS::@1622 QueryEa
_When_(CallbackStatus==FLT_PREOP_COMPLETE, _IRQL_requires_max_(DISPATCH_LEVEL)) _When_(CallbackStatus!
_Must_inspect_result_ _In_ LPCGUID ULONG SizeOfContext
Definition: fltkernel.h:2520
_In_ FILTER_INFORMATION_CLASS InformationClass
Definition: fltkernel.h:1714
_In_ PECP_LIST _In_opt_ PVOID _Out_opt_ LPGUID NextEcpType
Definition: fltkernel.h:2621
ULONG POINTER_ALIGNMENT CompletionFilter
Definition: fltkernel.h:190
VOID FLTAPI FltInitializeFileLock(_Out_ PFILE_LOCK FileLock)
struct _FLT_RELATED_CONTEXTS * PFLT_RELATED_CONTEXTS
_Must_inspect_result_ _In_ FLT_FILE_NAME_OPTIONS _Outptr_ PFLT_FILE_NAME_INFORMATION * FileNameInformation
Definition: fltkernel.h:1062
PFLT_CALLBACK_DATA(FLTAPI * PFLT_CALLBACK_DATA_QUEUE_PEEK_NEXT_IO)(_In_ PFLT_CALLBACK_DATA_QUEUE Cbdq, _In_opt_ PFLT_CALLBACK_DATA Cbd, _In_opt_ PVOID PeekContext)
Definition: fltkernel.h:894
VOID(FLTAPI * PFLT_CALLBACK_DATA_QUEUE_RELEASE)(_Inout_ PFLT_CALLBACK_DATA_QUEUE Cbdq, _In_opt_ KIRQL Irql)
Definition: fltkernel.h:905
#define _Out_writes_bytes_opt_(size)
Definition: no_sal2.h:373
ULONG NOTIFICATION_MASK
Definition: ktmtypes.h:99
DWORD LCID
Definition: nls.h:14
FLT_FILE_NAME_OPTIONS Format
Definition: fltkernel.h:808
PVOID QueueContext[2]
Definition: fltkernel.h:466
#define APC_LEVEL
Definition: env_spec_w32.h:695
_Must_inspect_result_ _Outptr_ PFLT_PORT _In_ POBJECT_ATTRIBUTES _In_opt_ PVOID _In_ PFLT_CONNECT_NOTIFY _In_ PFLT_DISCONNECT_NOTIFY _In_opt_ PFLT_MESSAGE_NOTIFY MessageNotifyCallback
Definition: fltkernel.h:1873
ULONG FLT_FILTER_UNLOAD_FLAGS
Definition: fltkernel.h:649
_Inout_opt_ PUNICODE_STRING Extension
Definition: fltkernel.h:1092
_Inout_opt_ PUNICODE_STRING _Inout_opt_ PUNICODE_STRING Stream
Definition: fltkernel.h:1092
struct _FLT_VOLUME_PROPERTIES FLT_VOLUME_PROPERTIES
ULONG ACCESS_MASK
Definition: nt_native.h:40
_Must_inspect_result_ _Out_ PUNICODE_STRING VolumeGuidName
Definition: fltkernel.h:1752
_In_ PECP_LIST _In_opt_ PVOID _Out_opt_ LPGUID _Outptr_opt_ PVOID * NextEcpContext
Definition: fltkernel.h:2621
_Must_inspect_result_ _In_ PFILE_OBJECT _In_opt_ PLARGE_INTEGER _In_ ULONG _In_ FLT_IO_OPERATION_FLAGS _Out_opt_ PULONG BytesRead
Definition: fltkernel.h:1255
_Must_inspect_result_ _In_opt_ PFLT_INSTANCE _Out_ PHANDLE _Outptr_opt_ PFILE_OBJECT _In_ ACCESS_MASK _In_ POBJECT_ATTRIBUTES _Out_ PIO_STATUS_BLOCK _In_opt_ PLARGE_INTEGER _In_ ULONG _In_ ULONG _In_ ULONG _In_ ULONG _In_ ULONG _In_ ULONG _In_opt_ PIO_DRIVER_CREATE_CONTEXT DriverContext
Definition: fltkernel.h:2335
DEVICE_RELATION_TYPE Type
Definition: fltkernel.h:309
_Inout_ PLIST_ENTRY _In_ PVOID _In_ PSTRING FullDirectoryName
Definition: fltkernel.h:2239
_Must_inspect_result_ _In_ PFLT_CALLBACK_DATA _In_ PFLT_DEFERRED_IO_WORKITEM_ROUTINE _In_ WORK_QUEUE_TYPE QueueType
Definition: fltkernel.h:1977
VOID(FLTAPI * PFLT_COMPLETE_CANCELED_CALLBACK)(_In_ PFLT_CALLBACK_DATA CallbackData)
Definition: fltkernel.h:860
ULONG OutputBufferLength
Definition: fltkernel.h:203
struct _FLT_PARAMETERS::@1627::@1654 Buffered
NTSTATUS(FLTAPI * PFLT_TRANSACTION_NOTIFICATION_CALLBACK)(_In_ PCFLT_RELATED_OBJECTS FltObjects, _In_ PFLT_CONTEXT TransactionContext, _In_ ULONG NotificationMask)
Definition: fltkernel.h:706
_FLT_POSTOP_CALLBACK_STATUS
Definition: fltkernel.h:587
_Must_inspect_result_ BOOLEAN FLTAPI FltDoCompletionProcessingWhenSafe(_In_ PFLT_CALLBACK_DATA Data, _In_ PCFLT_RELATED_OBJECTS FltObjects, _In_opt_ PVOID CompletionContext, _In_ FLT_POST_OPERATION_FLAGS Flags, _In_ PFLT_POST_OPERATION_CALLBACK SafePostCallback, _Out_ PFLT_POSTOP_CALLBACK_STATUS RetPostOperationStatus)
ULONG FSRTL_ALLOCATE_ECP_FLAGS
Definition: fsrtltypes.h:142
NTSTATUS NTAPI FltUnloadFilter(_In_ PCUNICODE_STRING FilterName)
Definition: Filter.c:57
_Must_inspect_result_ _In_ PFILE_OBJECT _In_opt_ HANDLE _In_reads_bytes_(FileNameLength) PWSTR FileName
NTSTATUS NTAPI FltLoadFilter(_In_ PCUNICODE_STRING FilterName)
Definition: Filter.c:33
struct _FLT_CONTEXT_REGISTRATION FLT_CONTEXT_REGISTRATION
#define _Inout_opt_
Definition: no_sal2.h:258
_Must_inspect_result_ _In_ PFILE_OBJECT _In_ ULONG _In_opt_ GUID * Guid
Definition: fltkernel.h:1266
_Must_inspect_result_ _In_ LPCGUID _In_ ULONG _In_ FSRTL_ALLOCATE_ECP_FLAGS _In_opt_ PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK _Inout_ PVOID LookasideList
Definition: fltkernel.h:2551
_Out_ PFLT_FILESYSTEM_TYPE FileSystemType
Definition: fltkernel.h:2408
struct _FLT_PARAMETERS::@1627::@1652 Common