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 |