FS_Dir(
PIOREQ pir
)
Directory operations (change, make, and remove) are performed through FS_Dir. This routine handles the Win32 functions: CreateDirectory(), RemoveDirectory(), and SetCurrentDirectory(); and INT 21h functions: 39h, 3Ah, and 3Bh.
Command Type Values:
One of the following types will be specified. |
|
Value | Meaning |
---|---|
CREATE_DIR | Make a new directory. |
DELETE_DIR | Remove an existing directory. |
CHECK_DIR | Check if the directory exists. |
QUERY83_DIR | Return a pure 8.3 pathname for the path passed in, which possibly has mixed components. |
QUERYLONG_DIR | Return a pure LFN pathname for the path passed in which possibly has mixed components. |
Path Parsing Flags:
The following path parsing flags are passed in. |
|
Value | Meaning |
---|---|
FILE_FLAG_LONG_PATH | Path has a longname component. |
FILE_FLAG_KEEP_CASE | Preserve the case of the filename passed in when storing on disk. This also implies that this call should use longname semantics for its processing. |
FILE_FLAG_HAS_DOT | Filename component has a dot in its name. |
FILE_FLAG_IS_LFN | Filename component is a longname. |
ir_error | Returns status of the operation ( 0 if no error, errorcode otherwise ). |
ir_ppath2 | Contains the pure 8.3 or LFN pathname on the QUERY83_DIR and QUERYLONG_DIR commands respectively. This parameter is not returned on the other commands. The FSD must return a canonicalized unicode pathname. |
If an FSD does not support long filenames on a volume and it gets a LFN pathname, it should fail the call. The QUERY83_DIR command should be failed on volumes that have no 8.3 names e.g. HPFS. However, The QUERYLONG_DIR command should never be failed. On a volume that has no LFNs, it should just return the 8.3 version passed in. Note that if a volume supports LFNs, the pathname passed in can be a mixture of longname and shortname components. The FSD should be able to handle this and should not make any assumptions about the pathname passed in.