{{page>en:templates:fapiint}}
====== DosSetFileMode ======
This call changes the mode (attribute) of the specified file.
===== Syntax =====
DosSetFileMode (FileName, NewAttribute, Reserved)
===== Parameters =====
* FileName ([[PSZ]]) - input : Address of the file path name.
[[DosQSysInfo]] is called by an application during initialization to determine the maximum path length allowed by OS/2.
* NewAttribute ([[USHORT]]) - input : File's new attribute. File attributes are defined as follows:
^ Bit ^ Description ^
| 15-6 | Reserved and must be zero |
| 5 | File archive |
| 4 | Subdirectory |
| 3 | Volume label |
| 2 | System file (excluded from normal directory searches) |
| 1 | Hidden file |
| 0 | Read only file |
These bits may be set individually or in combination. For example, an attribute value of 0021H (bits 5 and 0 set to 1) indicates a read-only file that should be archived.
* Reserved ([[ULONG]]) - input : Reserved must be set to zero.
===== Return Code =====
rc ([[USHORT]]) - return
Return code descriptions are:
* 0 NO_ERROR
* 2 ERROR_FILE_NOT_FOUND
* 3 ERROR_PATH_NOT_FOUND
* 5 ERROR_ACCESS_DENIED
* 26 ERROR_NOT_DOS_DISK
* 32 ERROR_SHARING_VIOLATION
* 36 ERROR_SHARING_BUFFER_EXCEEDED
* 87 ERROR_INVALID_PARAMETER
* 108 ERROR_DRIVE_LOCKED
* 206 ERROR_FILENAME_EXCED_RANGE
===== Remarks =====
Attributes for Volume Label (0008H) and Subdirectory (0010H) cannot be changed using DosSetFileMode. If these attributes are specified, ERROR_INVALID_PARAMETER is returned.
[[DosQFileMode]] is used to query the current settings for file attributes. Calling [[DosQFSInfo]] obtains volume label information.
Attributes of root directories cannot be changed using DosSetFileMode. If these attributes are specified, ERROR_ACCESS_DENIED is returned.
===== Example Code =====
==== C Binding ====
#define INCL_DOSFILEMGR
USHORT rc = DosSetFileMode(FileName, NewAttribute, Reserved);
PSZ FileName; /* File path name string */
USHORT NewAttribute; /* New attribute of file */
ULONG 0; /* Reserved (must be zero) */
USHORT rc; /* return code */
==== MASM Binding ====
EXTRN DosSetFileMode:FAR
INCL_DOSFILEMGR EQU 1
PUSH@ ASCIIZ FileName ;File path name string
PUSH WORD NewAttribute ;New attribute of file
PUSH DWORD 0 ;Reserved (must be zero)
CALL DosSetFileMode
Returns WORD
===== Note =====
Text based on http://www.edm2.com/index.php/DosSetFileMode
{{page>en:templates:fapi}}