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 结尾的字符串表示设备的未删除的先前映射。

如果 lpDeviceNameNULL,则该函数将检索所有现有 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

卷管理函数