FS_Dir

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 that 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.