FLT_FILE_NAME_OPTIONS

The FLT_FILE_NAME_OPTIONS type is a ULONG value that specifies the name format, query method, and flags for a file name information query.

typedef ULONG FLT_FILE_NAME_OPTIONS;
#define FLT_VALID_FILE_NAME_FORMATS                       0x000000ff
    #define FLT_FILE_NAME_NORMALIZED                      0x00000001
    #define FLT_FILE_NAME_OPENED                          0x00000002
    #define FLT_FILE_NAME_SHORT                           0x00000003
#define FLT_VALID_FILE_NAME_QUERY_METHODS                 0x0000ff00
    #define FLT_FILE_NAME_QUERY_DEFAULT                   0x00000100
    #define FLT_FILE_NAME_QUERY_CACHE_ONLY                0x00000200
    #define FLT_FILE_NAME_QUERY_FILESYSTEM_ONLY           0x00000300
    #define FLT_FILE_NAME_QUERY_ALWAYS_ALLOW_CACHE_LOOKUP 0x00000400
#define FLT_VALID_FILE_NAME_FLAGS                         0xff000000
    #define FLT_FILE_NAME_REQUEST_FROM_CURRENT_PROVIDER   0x01000000
    #define FLT_FILE_NAME_DO_NOT_CACHE                    0x02000000
    #define FLT_FILE_NAME_ALLOW_QUERY_ON_REPARSE          0x04000000

Bits 0 through 7 indicate the file format, which can be queried by using the FltGetFileNameFormat macro. For an explanation of these formats, see FLT_FILE_NAME_INFORMATION. The following values are currently defined.

Value Meaning
FLT_FILE_NAME_NORMALIZED The normalized name for the file.
FLT_FILE_NAME_OPENED The name that was used when the handle was opened to this file. This name isn't normalized.
FLT_FILE_NAME_SHORT The short (8.3) name for the file. The short name for a file doesn't include the volume name, directory path, or stream name. This name isn't normalized.

Bits 8 through 15 specify the file name query method to be used by the Filter Manager, which can be queried by using the FltGetFileNameQueryMethod macro. For an explanation of these values, see FltGetFileNameInformation. The following values are currently defined.

Value Meaning
FLT_FILE_NAME_QUERY_DEFAULT If it isn't currently safe to query the file system for the file name, do nothing. Otherwise, query the Filter Manager's name cache for the file name information. If the name isn't found in the cache, query the file system and cache the result.
FLT_FILE_NAME_QUERY_CACHE_ONLY Query the Filter Manager's name cache for the file name information. Don't query the file system.
FLT_FILE_NAME_QUERY_FILESYSTEM_ONLY Query the file system for the file name information. Don't query the Filter Manager's name cache, and don't cache the result of the file system query.
FLT_FILE_NAME_QUERY_ALWAYS_ALLOW_CACHE_LOOKUP Query the Filter Manager's name cache for the file name information. If the name isn't found in the cache and it's currently safe to do so, query the file system for the file name information and cache the result.

Bits 16 through 23 are currently unused.

Bits 24 through 31 are used by name provider minifilters to specify the file name flags. The following values are currently defined.

Value Meaning
FLT_FILE_NAME_REQUEST_FROM_CURRENT_PROVIDER A name provider minifilter can use this flag to Indicate that a name query request should be redirected to itself rather than being satisfied by the name provider filters lower in the stack.
FLT_FILE_NAME_DO_NOT_CACHE This flag denotes that the name retrieved from this query shouldn't be cached. Name provider minifilters use this flag as they perform intermediate queries to generate a name.
FLT_FILE_NAME_ALLOW_QUERY_ON_REPARSE A name provider minifilter can use this flag to specify that it's safe to query the name in the post-create path even if STATUS_REPARSE was returned. It's the caller's responsibility to ensure that the FileObject->FileName field wasn't changed. Don't use this flag with mount points or symbolic link reparse points.

Requirements

Requirement type Requirement
Header Fltkernel.h (include Fltkernel.h)

FLT_FILE_NAME_INFORMATION

FltGetDestinationFileNameInformation

FltGetFileNameFormat

FltGetFileNameInformation

FltGetFileNameInformationUnsafe

FltGetFileNameQueryMethod