MyFSD_SetFileAttributesW

This function sets the attributes of a file that resides in an installable file system. The application does not call this function directly. Instead, use the corresponding standard Win32 function SetFileAttributes. The file system driver (FSD) Manager determines the file system type and calls the MyFSD_SetFileAttributesW implementation of the function.

At a Glance

Header file: Fsdmgr.h
Windows CE versions: 2.10 and later

Syntax

BOOL MyFSD_SetFileAttributesW( PVOLUME pVolume,
PCWSTR pwsFileName, DWORD dwFileAttributes);

Parameters

pVolume

Pointer to the value that the file system driver (FSD) defines in its DLL and passes to the FSDMGR_RegisterVolume function when registering the volume. The definition of pVolume can point to private structures.

pwsFileName

Pointer to a string that specifies the name of the file whose attributes are to be set.

This string must not exceed MAX_PATH characters.

dwFileAttributes

Specifies the file attributes to set for the file. This parameter can be a combination of the following values. However, all other values override FILE_ATTRIBUTE_NORMAL.

Value Description
FILE_ATTRIBUTE_ARCHIVE The file is an archive file. Applications use this attribute to mark files for backup or removal.
FILE_ATTRIBUTE_HIDDEN The file is hidden. It is not included in an ordinary directory listing.
FILE_ATTRIBUTE_NORMAL The file has no other attributes set. This attribute is valid only if used alone.
FILE_ATTRIBUTE_READONLY The file is read-only. Applications can read the file but cannot write to it or delete it.
FILE_ATTRIBUTE_SYSTEM The file is part of the operating system or is used exclusively by it.
FILE_ATTRIBUTE_TEMPORARY The file is being used for temporary storage. File systems attempt to keep all of the data in memory for quicker access rather than flushing the data back to mass storage. A temporary file should be deleted by the application as soon as it is no longer needed.

Return Values

Nonzero indicates success. Zero indicates failure. To get extended error information, call GetLastError.

Remarks

An FSD exports this function if it wants to support the SetFileAttributes function. All FSD functions can be called reentryly, therefore, FSD developers must take this into account when developing an FSD.

The Fsdmgr component is a dynamic-link library (DLL) that manages all operating system interaction with installable files systems. Each installable file system requires an FSD, which is a DLL that exports an API needed to support an installable file system. The name of the DLL and the names of the functions it exports start with the name of the associated installable file system. For example, if the name of file system is MyFSD, then its DLL is MyFSD.dll and its exported functions are prefaced with MyFSD_*.

Fsdmgr provides services to FSDs. The FSDMGR_RegisterVolume, FSDMGR_CreateFileHandle, and FSDMGR_CreateSearchHandle functions record a DWORD of volume-specific data the FSD needs to keep associated with volume. This volume-specific data is passed as the first parameter of these three functions.

Applications that access an installable file system use standard Win32 functions. For example, when an application wants to create a folder on a device that contains an installable file system, it calls CreateDirectory. Fsdmgr recognizes that the path is to a device containing an installable file system and calls the appropriate function, which in the case of the FAT file system is FATFSD_CreateDirectoryW. That is, the application calls CreateDirectory, causing Fsdmgr to call FATFSD_CreateDirectoryW.

The following table describes how to set the attributes that cannot be set using SetFileAttributes.

FILE_ATTRIBUTE_COMPRESSED

To set a file's compression state, use the DeviceIoControl function with the FSCTL_SET_COMPRESSION operation.

FILE_ATTRIBUTE_DIRECTORY

Files cannot be converted into directories. To create a directory, use the CreateDirectory or CreateDirectoryEx function.

FILE_ATTRIBUTE_ENCRYPTED

To encrypt a file, use the EncryptFile function.

FILE_ATTRIBUTE_REPARSE_POINT

To associate a reparse point with a file, use the DeviceIoControl function with the FSCTL_SET_REPARSE_POINT operation.

FILE_ATTRIBUTE_SPARSE_FILE

To set a file's sparse attribute, use the DeviceIoControl function with the FSCTL_SET_SPARSE operation.

FILE_ATTRIBUTE_SYSTEM

This attribute cannot be set.

See Also

FDMGR_RegisterVolume, MyFSD_GetFileAttributesW