Функция PathCleanupSpec (shlobj_core.h)

[PathCleanupSpec доступен для использования в операционных системах, указанных в разделе Требования. Он может быть изменен или недоступен в последующих версиях.]

Удаляет недопустимые символы из имени файла или каталога. Применяет формат имени файла 8.3 на дисках, которые не поддерживают длинные имена файлов.

Синтаксис

int PathCleanupSpec(
  [in, optional] PCWSTR pszDir,
  [in, out]      PWSTR  pszSpec
);

Параметры

[in, optional] pszDir

Тип: PCWSTR

Указатель на буфер с пустым завершением, который содержит полный путь к каталогу, который будет содержать файл или каталог с именем в pszSpec. Длина пути не должна превышать MAX_PATH символов, включая завершающий символ NULL. Этот путь не изменяется.

Это значение может иметь значение NULL.

[in, out] pszSpec

Тип: PWSTR

Указатель на буфер, завершающийся значением NULL, который содержит имя файла или каталога для очистки. В случае с файлом включите расширение файла. Обратите внимание, что поскольку "" считается недопустимым символом и будет удален, этот буфер не может содержать путь более одного каталога.

При выходе буфер содержит строку, завершающуюся значением NULL, которая содержит очищенное имя.

Длина этого буфера должна быть не менее MAX_PATH символов, чтобы избежать переполнения буфера.

Возвращаемое значение

Тип: int

Возвращает одно или несколько из следующих значений.

Код возврата Описание
PCS_REPLACEDCHAR
Заменен один или несколько недопустимых символов.
PCS_REMOVEDCHAR
Удален один или несколько недопустимых символов.
PCS_TRUNCATED
Возвращаемый путь усекается.
PCS_PATHTOOLONG
Функция завершилась сбоем, так как входной путь, указанный в pszDir , слишком длинный, чтобы можно было сформировать допустимое имя файла из pszSpec. Когда этот флаг возвращается, он всегда сопровождается флагом PCS_FATAL.
PCS_FATAL
Очищенный путь не является допустимым именем файла. Этот флаг всегда возвращается вместе с PCS_PATHTOOLONG.

Комментарии

Следующие символы считаются недопустимыми во всех именах.

\ / : * ? " < > |

Управляющие символы также считаются недопустимыми. Если длинные имена файлов не поддерживаются, символы с запятой (;) и запятые (,) также недопустимы.

Диск с именем в pszDir проверяется, поддерживает ли его файловая система длинные имена файлов. В противном случае имя в pszSpec усекается до формата 8.3 и возвращается PCS_TRUNCATED значение. Если pszDir имеет значение NULL, для определения поддержки длинных имен файлов используется диск, на котором установлена windows.

Если полный путь (число символов в пути в pszDir плюс количество символов в очищенном имени в pszSpec) превышает MAX_PATH –1 (с учетом завершающего символа NULL), функция возвращает PCS_PATHTOOLONG.

Требования

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