Функция 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 сообщение. По умолчанию это сообщение передается для уведомления оболочки и приложений об изменении.
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 Нет
SMB 3.0 Transparent Failover (TFO) Нет
SMB 3.0 с масштабируемыми общими папками (SO) Нет
Файловая система общего тома кластера (CSVFS) Нет
Восстанавливаемая файловая система (ReFS) Нет
 

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

Примеры

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

Требования

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

См. также

DeleteVolumeMountPoint

QueryDosDevice

SetVolumeMountPoint

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