0 out of 6 rated this helpful Rate this topic

GetVolumeNameForVolumeMountPoint function

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

Syntax

BOOL WINAPI GetVolumeNameForVolumeMountPoint(
  __in   LPCTSTR lpszVolumeMountPoint,
  __out  LPTSTR lpszVolumeName,
  __in   DWORD cchBufferLength
);

Parameters

lpszVolumeMountPoint [in]

A pointer to a string that contains the path of a mounted folder (for example, Y:\MountX\) or a drive letter (for example, X:\). The string must end with a trailing backslash ('\').

lpszVolumeName [out]

A pointer to a string that receives the volume GUID path. This path is of the form "\\?\Volume{GUID}\" where GUID is a GUID that identifies the volume. If there is more than one volume GUID path for the volume, only the first one in the mount manager's cache is returned.

cchBufferLength [in]

The length of the output buffer, in TCHARs. A reasonable size for the buffer to accommodate the largest possible volume GUID path is 50 characters.

Return value

If the function succeeds, the return value is nonzero.

If the function fails, the return value is zero. To get extended error information, call GetLastError.

Remarks

Use GetVolumeNameForVolumeMountPoint to obtain a volume GUID path for use with functions such as SetVolumeMountPoint and FindFirstVolumeMountPoint that require a volume GUID path as an input parameter. For more information about volume GUID paths, see Naming A Volume.

Requirements

Minimum supported client

Windows XP

Minimum supported server

Windows Server 2003

Header

WinBase.h (include Windows.h)

Library

Kernel32.lib

DLL

Kernel32.dll

Unicode and ANSI names

GetVolumeNameForVolumeMountPointW (Unicode) and GetVolumeNameForVolumeMountPointA (ANSI)

See also

DeleteVolumeMountPoint
GetVolumePathName
SetVolumeMountPoint
Volume Management Functions
Mounted Folders

 

 

Send comments about this topic to Microsoft

Build date: 9/10/2011

Did you find this helpful?
(1500 characters remaining)
Community Content Add
Annotations FAQ
Passing device interface path instead of mount point

An undocumented feature of this function is that it can be used to map a device interface path to a volume name. A device interface path takes the form of:
\\?\STORAGE#RemovableMedia#7&3226b304&0&RM#{53f5630d-b6bf-11d0-94f2-00a0c91efb8b}

To use this feature, add trailing slash '\' to the device interface path and pas it instead of the mount point (in lpszVolumeMountPoint).

This feature can be used to map a volume device node to its mount point(s):
1. Find the volume device by looking for devices implementing GUID_DEVINTERFACE_VOLUME with SetupDiGetClassDevs(..., DIGCF_DEVICEINTERFACE) or by receiving PnP notifications (see RegisterDeviceNotificationW).
2. With PnP notifications, you should already have the device interface path. With SetupDi..., you should get it through SetupDiGetDeviceInterfaceDetail or the CM API (CM_Get_Device_Interface_List_SizeW).
3. Pass it to GetVolumeNameForVolumeMountPoint.
4. Use GetVolumePathNamesForVolumeName.

NOTE: This feature doesn't work for USB devices

Error code
If the buffer is too small, the function fails and the last error code is ERROR_FILENAME_EXCED_RANGE.
Call it twice?
May need to call it twice to get the unique name - see http://blogs.msdn.com/adioltean/archive/2005/04/16/408947.aspx