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.
ir_ppath
Supplies a pointer to the unicode canonicalized directory pathname for the operation. Wildcards are not allowed on the pathname.
ir_flags
Supplies the command type to perform.
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. |
ir_rh
Supplies handle to disk volume or network resource which contains the directory.
ir_ppath2
Supplies pointer to buffer to contain the unicode pure pathname on the QUERY83_DIR and QUERYLONG_DIR commands. This parameter is not valid for the other commands.
ir_attr
Supplies path parsing flags for the pathname.
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_uFname
Pointer to the case-preserved filename component in unicode.
ir_upath
Pointer to the unparsed user pathname in unicode.
ir_user
Supplies user id for this request.
ir_pid
Supplies process id for this request.
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.