DefineDosDeviceW 函数 (fileapi.h)

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

语法

BOOL DefineDosDeviceW(
  [in]           DWORD   dwFlags,
  [in]           LPCWSTR lpDeviceName,
  [in, optional] LPCWSTR 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 与与此设备关联的每个映射的前缀的匹配项。 匹配的第一个映射是删除的映射,然后函数返回。

如果 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
标头 fileapi.h (包括 Windows.h)
Library Kernel32.lib
DLL Kernel32.dll

另请参阅

DeleteVolumeMountPoint

QueryDosDevice

SetVolumeMountPoint

卷管理函数