ConvertPath

Функция FSF.ConvertPath преобразует относительное имя файлового объекта в полное.

Замечание для ConvertPath Внимание!

size_t WINAPI ConvertPath(
  enum CONVERTPATHMODES Mode,
  const wchar_t *Src,
  wchar_t *Dest,
  size_t DestSize
);

Параметры

Mode
Указывает на необходимое действие. Может быть следующим (перечисление CONVERTPATHMODES):
ДействиеОписание
CPM_FULL преобразует относительное имя файлового объекта в полное
CPM_REAL преобразует относительное имя файлового объекта в полное, с учётом символических ссылок.
CPM_NATIVE преобразует относительное имя файлового объекта в полное, предваряя путь префиксами "\\?\" (для локальных объектов) или "\\?\UNC\" (для сетевых объектов);
это преобразование имеет смысл применять для избежания проблем с длинными и нестандартными именами файлов (подробности)
Src
Указатель на источник данных - полное или относительное имя файла/каталога.
Dest
Укзатель на строку назначения, сюда будет помещён полный путь. Установите Dest = NULL для того, чтобы узнать необходимый размер буфера в символах.
DestSize
Максимальное количество символов, которое можно поместить в Dest, с заключительным нулём.

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

Необходимый размер буфера Dest в символах.

Особенности Mode = CPM_REAL:

Замечания

  1. Параметры Src и Dest могут ссылаться на одну и ту же строку.

Пример

Неправильно:

   GetFileAttributes(L"..\\some_file");

Правильно:

   wchar_t *FullName = new wchar_t[MAX_PATH];
   size_t Size = FSF.ConvertPath(CPM_FULL, L"..\\some_file", FullName, Size);
   if (Size > MAX_PATH)
   {
     delete[] FullName;
     FullName = new wchar_t[Size];
     FSF.ConvertPath(CPM_FULL, L"..\\some_file", FullName, Size);
   }
   GetFileAttributes(FullName);
   delete[] FullName;
Смотрите также: