Volume Management Reference
Volume Management Functions
The following functions are used in volume management.
Function |
Description |
DefineDosDevice() |
Defines, redefines, or deletes MS-DOS device names. |
GetDriveType() |
Determines whether a disk drive is a removable, fixed, CD-ROM, RAM disk, or network drive. |
GetLogicalDrives() |
Retrieves a bitmask representing the currently available disk drives. |
GetLogicalDriveStrings() |
Fills a buffer with strings that specify valid drives in the system. |
GetVolumeInformation() |
Retrieves information about the file system and volume associated with the specified root directory. |
GetVolumeInformationByHandleW() |
Retrieves information about the file system and volume associated with the specified file. |
QueryDosDevice() |
Retrieves information about MS-DOS device names. |
SetVolumeLabel() |
Sets the label of a file system volume. |
The following functions are used with volume mount points (drive letters, volume GUID paths, and mounted folders).
Function |
Description |
DeleteVolumeMountPoint() |
Deletes a drive letter or mounted folder. |
FindFirstVolume() |
Retrieves the name of a volume on a computer. |
FindFirstVolumeMountPoint() |
Retrieves the name of a mounted folder on the specified volume. |
FindNextVolume() |
Continues a volume search started by a call to FindFirstVolume. |
FindNextVolumeMountPoint() |
Continues a mounted folder search started by a call to FindFirstVolumeMountPoint. |
FindVolumeClose() |
Closes the specified volume search handle. |
FindVolumeMountPointClose() |
Closes the specified mounted folder search handle. |
GetVolumeNameForVolumeMountPoint() |
Retrieves a volume GUID path for the volume that is associated with the specified volume mount point (drive letter, volume GUID path, or mounted folder). |
GetVolumePathName() |
Retrieves the mounted folder that is associated with the specified volume. |
GetVolumePathNamesForVolumeName() |
Retrieves a list of drive letters and volume GUID paths for the specified volume. |
SetVolumeMountPoint() |
Associates a volume with a drive letter or a directory on another volume. |
Volume Management Control Codes
The following control codes are used in volume management.
Control code |
Operation |
FSCTL_DISMOUNT_VOLUME |
Dismounts a volume. |
FSCTL_EXTEND_VOLUME |
Increases the size of a mounted volume. |
FSCTL_GET_BOOT_AREA_INFO |
Retrieves the locations of boot sectors for a volume. |
FSCTL_GET_NTFS_VOLUME_DATA |
Retrieves information about the specified NTFS file system volume. |
FSCTL_IS_VOLUME_MOUNTED |
Determines whether the specified volume is mounted, or if the specified file or directory is on a mounted volume. |
FSCTL_LOCK_VOLUME |
Locks a volume. |
FSCTL_QUERY_FILE_SYSTEM_RECOGNITION |
Queries for file system recognition information on a volume. |
FSCTL_READ_FROM_PLEX |
Reads from the specified plex. |
FSCTL_SHRINK_VOLUME |
Signals that the volume is to be prepared to perform the shrink operation, the shrink operation is to be committed, or the shrink operation is to be terminated. |
FSCTL_UNLOCK_VOLUME |
Unlocks a volume. |
IOCTL_VOLUME_GET_GPT_ATTRIBUTES |
Retrieves attributes associated with a storage volume. |
IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS |
Retrieves the physical location of the specified volume on one or more disks. |
IOCTL_VOLUME_IS_CLUSTERED |
Determines whether a volume is clustered. |
IOCTL_VOLUME_OFFLINE |
Takes a volume offline. |
IOCTL_VOLUME_ONLINE |
Brings a volume online. |
The following control codes are used with change journals.
Value |
Meaning |
FSCTL_CREATE_USN_JOURNAL |
Creates a change journal stream on a target volume or modifies an existing change journal stream. |
FSCTL_DELETE_USN_JOURNAL |
Deletes a change journal on a volume or awaits notification of deletion of a change journal. |
FSCTL_ENUM_USN_DATA |
Creates an enumeration that lists the change journal entries between two specified boundaries. |
FSCTL_MARK_HANDLE |
Marks a specified file or directory and its change journal record with information about changes to that file or directory. |
FSCTL_QUERY_USN_JOURNAL |
Queries for information on the current change journal, its records, and its capacity. |
FSCTL_READ_FILE_USN_DATA |
Retrieves the change-journal information for the specified file or directory. |
FSCTL_READ_USN_JOURNAL |
Returns to the calling process the set of change journal records between two specified USN values. |
FSCTL_WRITE_USN_CLOSE_RECORD |
Generates a record in the change journal stream for the input file. This record will have the USN_REASON_CLOSE flag. |
The following are defragmentation control codes.
Value |
Meaning |
FSCTL_GET_RETRIEVAL_POINTER_BASE |
Returns the sector offset to the first logical cluster number of the file system relative to the start of the volume. |
FSCTL_GET_RETRIEVAL_POINTERS |
Gets information about the cluster use of a file. |
FSCTL_GET_VOLUME_BITMAP |
Gets a bitmap of cluster allocation. |
FSCTL_MOVE_FILE |
Moves all or part of a file from one set of clusters to another within a volume. |
Volume Management Structures
The following structures are used in volume management.
Structure |
Meaning |
BOOT_AREA_INFO |
Contains the output for the FSCTL_GET_BOOT_AREA_INFO control code. |
CREATE_USN_JOURNAL_DATA |
Contains information that describes a change journal. |
DELETE_USN_JOURNAL_DATA |
Contains information on the deletion of an NTFS file system change journal using the FSCTL_DELETE_USN_JOURNAL control code. |
FILE_SYSTEM_RECOGNITION_INFORMATION |
Contains file system recognition information retrieved by the FSCTL_QUERY_FILE_SYSTEM_RECOGNITION control code. |
FILE_SYSTEM_RECOGNITION_STRUCTURE |
Contains the on-disk file system recognition information stored in the volume's boot sector (logical disk sector zero). This is an internally-defined data structure not available in a public header and is provided here for file system developers who want to take advantage of file system recognition. |
MARK_HANDLE_INFO |
Contains information that is used to mark a specified file or directory, and its change journal record with data about changes. It is used by the FSCTL_MARK_HANDLE control code. |
MOVE_FILE_DATA |
Contains input data for the FSCTL_MOVE_FILE control code. |
MFT_ENUM_DATA |
Contains information defining the boundaries for and starting place of an enumeration of change journal records. It is used by the FSCTL_ENUM_USN_DATA control code. |
NTFS_VOLUME_DATA_BUFFER |
Represents volume data. This structure is passed to the FSCTL_GET_NTFS_VOLUME_DATA control code. |
PLEX_READ_DATA_REQUEST |
Indicates the range of the read operation to perform and the plex from which to read. |
READ_USN_JOURNAL_DATA |
Contains information defining a set of change journal records to return to the calling process. It is used by the FSCTL_QUERY_USN_JOURNAL and FSCTL_READ_USN_JOURNAL control codes. |
RETRIEVAL_POINTER_BASE |
Contains the output for the FSCTL_GET_RETRIEVAL_POINTER_BASE control code. |
RETRIEVAL_POINTERS_BUFFER |
Contains the output for the FSCTL_GET_RETRIEVAL_POINTERS control code. |
SHRINK_VOLUME_INFORMATION |
Specifies the volume shrink operation to perform. |
STARTING_LCN_INPUT_BUFFER |
Contains the starting LCN to the FSCTL_GET_VOLUME_BITMAP control code. |
STARTING_VCN_INPUT_BUFFER |
Contains the starting VCN to the FSCTL_GET_RETRIEVAL_POINTERS control code. |
USN_JOURNAL_DATA |
Represents a change journal, its records, and its capacity. This structure is the output buffer for the FSCTL_QUERY_USN_JOURNAL control code. |
USN_RECORD |
Contains the information for a change journal version 2.0 record. Applications should not attempt to work with change journal versions earlier than 2.0. |
VOLUME_BITMAP_BUFFER |
Represents the occupied and available clusters on a disk. This structure is the output buffer for the FSCTL_GET_VOLUME_BITMAP control code. |
VOLUME_DISK_EXTENTS |
Represents a physical location on a disk. It is the output buffer for the IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS control code. |
VOLUME_GET_GPT_ATTRIBUTES_INFORMATION |
Contains volume attributes retrieved with the IOCTL_VOLUME_GET_GPT_ATTRIBUTES control code. |
More related references: