QueryDosDeviceW 函数 (fileapi.h)

检索有关 MS-DOS 设备名称的信息。 函数可以获取特定 MS-DOS 设备名称的当前映射。 函数还可以获取所有现有 MS-DOS 设备名称的列表。

MS-DOS 设备名称作为连接存储在对象命名空间中。 将 MS-DOS 路径转换为相应路径的代码使用这些交汇点来映射 MS-DOS 设备和驱动器号。 QueryDosDevice 函数使应用程序能够查询用于实现 MS-DOS 设备命名空间的交汇点的名称以及每个特定交汇点的值。

语法

DWORD QueryDosDeviceW(
  [in, optional] LPCWSTR lpDeviceName,
  [out]          LPWSTR  lpTargetPath,
  [in]           DWORD   ucchMax
);

参数

[in, optional] lpDeviceName

指定查询目标的 MS-DOS 设备名称字符串。 设备名称不能具有尾随反斜杠;例如,使用“C:”,而不是“C:\”。

此参数可以为 NULL。 在这种情况下, QueryDosDevice 函数会将所有现有 MS-DOS 设备名称的列表存储在 lpTargetPath 指向的缓冲区中。

[out] lpTargetPath

指向将接收查询结果的缓冲区的指针。 函数用一个或多个以 null 结尾的字符串填充此缓冲区。 最后一个以 null 结尾的字符串后跟一个额外的 NULL。

如果 lpDeviceName 为非 NULL,则该函数检索有关 由 lpDeviceName 指定的特定 MS-DOS 设备的信息。 存储在缓冲区中的第一个以 null 结尾的字符串是设备的当前映射。 其他以 null 结尾的字符串表示设备的未删除的先前映射。

如果 lpDeviceName 为 NULL,则该函数将检索所有现有 MS-DOS 设备名称的列表。 存储在缓冲区中的每个以 null 结尾的字符串都是现有 MS-DOS 设备的名称,例如 \Device\HarddiskVolume1 或 \Device\Floppy0。

[in] ucchMax

可以存储在 lpTargetPath 指向的缓冲区中的最大 TCHAR 数。

返回值

如果函数成功,则返回值是存储在 lpTargetPath 指向的缓冲区中的 TCHAR 数。

如果函数失败,则返回值为零。 要获得更多的错误信息,请调用 GetLastError。

如果缓冲区太小,函数将失败,最后 一个错误代码ERROR_INSUFFICIENT_BUFFER。

注解

DefineDosDevice 函数使应用程序能够创建和修改用于实现 MS-DOS 设备命名空间的交汇点。

Windows Server 2003 和 Windows XP: QueryDosDevice 首先在本地 MS-DOS 设备命名空间中搜索指定的设备名称。 如果未找到设备名称,则函数将搜索全局 MS-DOS 设备命名空间。

查询所有现有的 MS-DOS 设备名称时,返回的设备名称列表取决于它是否在“LocalSystem”上下文中运行。 如果是这样,将仅返回全局 MS-DOS 设备命名空间中包含的设备名称。 如果不是,则将返回全局和本地 MS-DOS 设备命名空间中的设备名称串联。 如果两个命名空间中都存在设备名称,QueryDosDevice 将返回本地 MS-DOS 设备命名空间中的条目。

有关全局和本地 MS-DOS 设备命名空间以及 MS-DOS 设备名称可访问性更改的详细信息,请参阅 定义 MS DOS 设备名称。

在 Windows 8 和 Windows Server 2012 中,此函数由以下技术支持。

技术 支持
服务器消息块 (SMB) 3.0 协议 否
SMB 3.0 透明故障转移 (TFO) 否
具有横向扩展文件共享的 SMB 3.0 (SO) 否
群集共享卷文件系统 (CSV) 是
弹性文件系统 (ReFS) 是
 

SMB 不支持卷管理功能。

示例

有关示例,请参阅 从文件句柄获取文件名 或 显示卷路径。

要求

要求 值
最低受支持的客户端 Windows XP [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
目标平台 Windows
标头 fileapi.h (包括 Windows.h)
Library Kernel32.lib
DLL Kernel32.dll

另请参阅

DefineDosDevice

卷管理函数