|
无论是FSD HOOK,还是SFILTER、MINIFILTER,很多时候都要细致处理IRP_MJ_CREATE。其中有个特别复杂的参数结构体叫做Parameters.Create。下面我来详细一说。 Parameters.Create结构体:- struct
- {
- PIO_SECURITY_CONTEXT SecurityContext;
- ULONG Options;
- USHORT POINTER_ALIGNMENT FileAttributes;
- USHORT ShareAccess;
- ULONG POINTER_ALIGNMENT EaLength;
- } Create;
复制代码 其中SecurityContext如下:- typedef struct _IO_SECURITY_CONTEXT
- {
- PSECURITY_QUALITY_OF_SERVICE SecurityQos;
- PACCESS_STATE AccessState;
- ACCESS_MASK DesiredAccess; //ULONG
- ULONG FullCreateOptions;
- } IO_SECURITY_CONTEXT, *PIO_SECURITY_CONTEXT;
复制代码 就这个简单的结构体里,就包含了CreationDisposition、CreateOptions、DesiredAccess、ShareAccess、FileAttributes等东西。它们分别这么获得:它们的常量分别如下:- //DesiredAccess:
- DELETE
- FILE_ANY_ACCESS
- FILE_READ_ACCESS
- FILE_READ_DATA
- FILE_LIST_DIRECTORY
- FILE_WRITE_ACCESS
- FILE_WRITE_DATA
- FILE_ADD_FILE
- FILE_APPEND_DATA
- FILE_ADD_SUBDIRECTORY
- FILE_CREATE_PIPE_INSTANCE
- FILE_READ_EA
- FILE_WRITE_EA
- FILE_EXECUTE
- FILE_TRAVERSE
- FILE_DELETE_CHILD
- FILE_READ_ATTRIBUTES
- FILE_WRITE_ATTRIBUTES
- FILE_ALL_ACCESS
- STANDARD_RIGHTS_ALL
- //FileAttributes:
- FILE_ATTRIBUTE_READONLY
- FILE_ATTRIBUTE_HIDDEN
- FILE_ATTRIBUTE_SYSTEM
- FILE_ATTRIBUTE_DIRECTORY
- FILE_ATTRIBUTE_ARCHIVE
- FILE_ATTRIBUTE_NORMAL
- FILE_ATTRIBUTE_TEMPORARY
- FILE_ATTRIBUTE_SPARSE_FILE
- FILE_ATTRIBUTE_REPARSE_POINT
- FILE_ATTRIBUTE_COMPRESSED
- FILE_ATTRIBUTE_OFFLINE
- FILE_ATTRIBUTE_NOT_CONTENT_INDEXED
- FILE_ATTRIBUTE_ENCRYPTED
- //ShareAccess:
- FILE_SHARE_READ
- FILE_SHARE_WRITE
- FILE_SHARE_DELETE
- //CreateDisposition:
- FILE_SUPERSEDE
- FILE_OPEN
- FILE_CREATE
- FILE_OPEN_IF
- FILE_OVERWRITE
- FILE_OVERWRITE_IF
- //CreateOptions:
- FILE_DIRECTORY_FILE
- FILE_WRITE_THROUGH
- FILE_SEQUENTIAL_ONLY
- FILE_NO_INTERMEDIATE_BUFFERING
- FILE_SYNCHRONOUS_IO_ALERT
- FILE_SYNCHRONOUS_IO_NONALERT
- FILE_NON_DIRECTORY_FILE
- FILE_CREATE_TREE_CONNECTION
- FILE_COMPLETE_IF_OPLOCKED
- FILE_NO_EA_KNOWLEDGE
- FILE_OPEN_FOR_RECOVERY
- FILE_RANDOM_ACCESS
- FILE_DELETE_ON_CLOSE
- FILE_OPEN_BY_FILE_ID
- FILE_OPEN_FOR_BACKUP_INTENT
- FILE_NO_COMPRESSION
- FILE_RESERVE_OPFILTER
- FILE_OPEN_REPARSE_POINT
- FILE_OPEN_NO_RECALL
- FILE_OPEN_FOR_FREE_SPACE_QUERY
复制代码 |
|