Support for this IOCTL by the mount manager clients is optional. Some mount manager clients are able to keep track of their drive letters across reboots of the system without the help of the mount manager. Such clients can send a suggested drive letter name to the mount manager in response to this IOCTL. The mount manager uses the suggested name if the mount manager's database does not already contain a persistent drive letter name for the client's volume. Otherwise, it ignores the suggestion and uses the drive letter name in its persistent name database.
Drive letter names must include the full path of the symbolic link in object namespace and must have the traditional MS-DOS syntax. For instance, drive letter "D" must be represented in this manner: "\DosDevices\D:". The alternative symbolic link path of "??\D:" may not be used, nor may abbreviations of the symbolic link such as "D:".
The client driver must place a variable-length structure of type MOUNTDEV_SUGGESTED_LINK_NAME, defined in moundev.h, at the beginning of the buffer at Irp->AssociatedIrp.SystemBuffer. Starting at the address of the structure member Name, the client driver must insert the suggested persistent name.
Output Buffer Length
Parameters.DeviceIoControl.OutputBufferLength in the I/O stack location of the IRP indicates the size, in bytes, of the output buffer, which must be greater than or equal to sizeof(MOUNTDEV_SUGGESTED_LINK_NAME).
If the operation is successful, the Information field is set to the total number of bytes returned and the Status field is set to STATUS_SUCCESS.
If OutputBufferLength is less than sizeof(MOUNTDEV_SUGGESTED_LINK_NAME), the Status field is set to STATUS_INVALID_PARAMETER.
If OutputBufferLength is less than the total length of output data, the Status field is set to STATUS_BUFFER_OVERFLOW and the Information field is set to sizeof(MOUNTDEV_SUGGESTED_LINK_NAME).
The implementer of this function must not thread synchronize and must not make blocking and/or Interprocess Communication (IPC) function calls.
|Header||mountdev.h (include Mountdev.h)|