Поделиться через


Функция 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 сообщение. По умолчанию это сообщение транслируется для уведомления оболочки и приложений об изменении.
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 эта функция создает имя устройства для вызывающего объекта, которое не выполняется в контексте LocalSystem в собственном пространстве имен локального устройства MS-DOS. Если вызывающий объект выполняется в контексте LocalSystem, функция создает имя устройства в глобальном пространстве имен устройств MS-DOS. Дополнительные сведения см. в разделе Определение имени устройства MS DOS и имен файлов, путей и пространств имен.

В Windows 8 и Windows Server 2012 эта функция поддерживается следующими технологиями.

Технология Поддерживается
Протокол SMB 3.0 Нет
Прозрачная отработка отказа (TFO) SMB 3.0 Нет
SMB 3.0 с масштабируемыми общими папками (SO) Нет
Файловая система общего тома кластера (CSVFS) Нет
Восстанавливаемая файловая система (ReFS) Нет
 

SMB не поддерживает функции управления томами. Для CSVF новое имя не будет реплицировано на другие узлы в кластере.

Примеры

Пример см. в разделе Изменение назначений букв диска.

Требования

Требование Значение
Минимальная версия клиента Windows XP [только классические приложения]
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Целевая платформа Windows
Header winbase.h (включая Windows.h)
Библиотека Kernel32.lib
DLL Kernel32.dll

См. также

DeleteVolumeMountPoint

QueryDosDevice

SetVolumeMountPoint

Функции управления томами