DefineDosDeviceA 函数 (winbase.h)

定义、重新定义或删除 MS-DOS 设备名称。

语法

BOOL DefineDosDeviceA(
  [in]           DWORD  dwFlags,
  [in]           LPCSTR lpDeviceName,
  [in, optional] LPCSTR lpTargetPath
);

参数

[in] dwFlags

DefineDosDevice 函数的可控制方面。 此参数可使用以下一个或多个值。

含义
DDD_EXACT_MATCH_ON_REMOVE
0x00000004
如果此值与 DDD_REMOVE_DEFINITION一起指定,则函数将使用完全匹配来确定要删除的映射。 使用此值可确保不会删除未定义的内容。
DDD_NO_BROADCAST_SYSTEM
0x00000008
不要广播 WM_SETTINGCHANGE 消息。 默认情况下,将广播此消息以通知 shell 和应用程序更改。
DDD_RAW_TARGET_PATH
0x00000001
按原样使用 lpTargetPath 字符串。 否则,它将从 MS-DOS 路径转换为路径。
DDD_REMOVE_DEFINITION
0x00000002
删除指定设备的指定定义。 为了确定要删除的定义,函数将遍查设备的映射列表,查找 lpTargetPath 与与此设备关联的每个映射的前缀的匹配项。 匹配的第一个映射是删除的映射,然后函数返回。

如果 lpTargetPathNULL 或指向 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

另请参阅

DeleteVolumeMountPoint

QueryDosDevice

SetVolumeMountPoint

卷管理函数