DefineDosDeviceA 函数 (winbase.h)
定义、重新定义或删除 MS-DOS 设备名称。
语法
BOOL DefineDosDeviceA(
[in] DWORD dwFlags,
[in] LPCSTR lpDeviceName,
[in, optional] LPCSTR lpTargetPath
);
参数
[in] dwFlags
DefineDosDevice 函数的可控制方面。 此参数可使用以下一个或多个值。
值 | 含义 |
---|---|
|
如果此值与 DDD_REMOVE_DEFINITION一起指定,则函数将使用完全匹配来确定要删除的映射。 使用此值可确保不会删除未定义的内容。 |
|
不要广播 WM_SETTINGCHANGE 消息。 默认情况下,将广播此消息以通知 shell 和应用程序更改。 |
|
按原样使用 lpTargetPath 字符串。 否则,它将从 MS-DOS 路径转换为路径。 |
|
删除指定设备的指定定义。 为了确定要删除的定义,函数将遍查设备的映射列表,查找 lpTargetPath 与与此设备关联的每个映射的前缀的匹配项。 匹配的第一个映射是删除的映射,然后函数返回。
如果 lpTargetPath 为 NULL 或指向 NULL 字符串的指针,则该函数将删除与设备关联的第一个映射,并弹出推送的最新映射。 如果没有任何内容可弹出,则将删除设备名称。 如果未指定此值, 则 lpTargetPath 参数指向的字符串将成为此设备的新映射。 |
[in] lpDeviceName
指向 MS-DOS 设备名称字符串的指针,指定函数正在定义、重新定义或删除的设备。 设备名称字符串不得将冒号作为最后一个字符,除非正在定义、重新定义或删除驱动器号。 例如,驱动器 C 将为字符串“C:”。 在任何情况下,都不允许尾随反斜杠 (“”) 。
[in, optional] lpTargetPath
指向将实现此设备的路径字符串的指针。 字符串是 MS-DOS 路径字符串,除非指定 了DDD_RAW_TARGET_PATH 标志,在这种情况下,此字符串是路径字符串。
返回值
如果该函数成功,则返回值为非零值。
如果函数失败,则返回值为零。 要获得更多的错误信息,请调用 GetLastError。
注解
MS-DOS 设备名称作为连接存储在对象命名空间中。 将 MS-DOS 路径转换为相应路径的代码使用这些交汇点来映射 MS-DOS 设备和驱动器号。 DefineDosDevice 函数使应用程序能够修改用于实现 MS-DOS 设备命名空间的交汇点。
若要检索特定 MS-DOS 设备名称的当前映射或获取系统已知的所有 MS-DOS 设备的列表,请使用 QueryDosDevice 函数。
若要定义跨启动而不是网络共享永久分配的驱动器号分配,请使用 SetVolumeMountPoint 函数。 如果要装载的卷已分配有驱动器号,请使用 DeleteVolumeMountPoint 函数删除分配。
除非用户是管理员,否则在系统启动时定义的驱动器号和设备名称将受到保护,防止重新定义和删除。
从 Windows XP 开始,此函数会为其本地 MS-DOS 设备命名空间中未在“LocalSystem”上下文中运行的调用方创建设备名称。 如果调用方在“LocalSystem”上下文中运行,则 函数会在全局 MS-DOS 设备命名空间中创建设备名称。 有关详细信息,请参阅定义 MS DOS 设备名称和文件名、路径和命名空间。
在 Windows 8 和 Windows Server 2012 中,此函数由以下技术支持。
技术 | 支持 |
---|---|
服务器消息块 (SMB) 3.0 协议 | 否 |
SMB 3.0 透明故障转移 (TFO) | 否 |
具有横向扩展文件共享的 SMB 3.0 (SO) | 否 |
群集共享卷文件系统 (CSV) | 否 |
弹性文件系统 (ReFS) | 否 |
SMB 不支持卷管理功能。 对于 CsvFs,新名称不会复制到群集上的其他节点。
示例
有关示例,请参阅 编辑驱动器号分配。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows XP [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2003 [仅限桌面应用] |
目标平台 | Windows |
标头 | winbase.h (包括 Windows.h) |
Library | Kernel32.lib |
DLL | Kernel32.dll |