2.3.1 VolumeID

The VolumeID structure specifies information about the volume that a link target was on when the link was created. This information is useful for resolving the link if the file is not found in its original location.


0


1


2


3


4


5


6


7


8


9

1
0


1


2


3


4


5


6


7


8


9

2
0


1


2


3


4


5


6


7


8


9

3
0


1

VolumeIDSize

DriveType

DriveSerialNumber

VolumeLabelOffset

VolumeLabelOffsetUnicode (optional)

Data (variable)

...

VolumeIDSize (4 bytes): A 32-bit, unsigned integer that specifies the size, in bytes, of this structure. This value MUST be greater than 0x00000010. All offsets specified in this structure MUST be less than this value, and all strings contained in this structure MUST fit within the extent defined by this size.

DriveType (4 bytes): A 32-bit, unsigned integer that specifies the type of drive the link target is stored on. This value MUST be one of the following:

Value

Meaning

DRIVE_UNKNOWN

0x00000000

The drive type cannot be determined.

DRIVE_NO_ROOT_DIR

0x00000001

The root path is invalid; for example, there is no volume mounted at the path.

DRIVE_REMOVABLE

0x00000002

The drive has removable media, such as a floppy drive, thumb drive, or flash card reader.

DRIVE_FIXED

0x00000003

The drive has fixed media, such as a hard drive or flash drive.

DRIVE_REMOTE

0x00000004

The drive is a remote (network) drive.

DRIVE_CDROM

0x00000005

The drive is a CD-ROM drive.

DRIVE_RAMDISK

0x00000006

The drive is a RAM disk.

DriveSerialNumber (4 bytes): A 32-bit, unsigned integer that specifies the drive serial number of the volume the link target is stored on.

VolumeLabelOffset (4 bytes): A 32-bit, unsigned integer that specifies the location of a string that contains the volume label of the drive that the link target is stored on. This value is an offset, in bytes, from the start of the VolumeID structure to a NULL-terminated string of characters, defined by the system default code page. The volume label string is located in the Data field of this structure.

If the value of this field is 0x00000014, it MUST be ignored, and the value of the VolumeLabelOffsetUnicode field MUST be used to locate the volume label string.

VolumeLabelOffsetUnicode (4 bytes): An optional, 32-bit, unsigned integer that specifies the location of a string that contains the volume label of the drive that the link target is stored on. This value is an offset, in bytes, from the start of the VolumeID structure to a NULL-terminated string of Unicode characters. The volume label string is located in the Data field of this structure.

If the value of the VolumeLabelOffset field is not 0x00000014, this field MUST NOT be present; instead, the value of the VolumeLabelOffset field MUST be used to locate the volume label string.

Data (variable): A buffer of data that contains the volume label of the drive as a string defined by the system default code page or Unicode characters, as specified by preceding fields.