# MkLink

Функция `FSF.MkLink` создаёт жёсткие и символические ссылки, связи каталогов, а также монтирует локальные диски на файловую систему.

    BOOL WINAPI MkLink(
      const wchar_t *Target,
      const wchar_t *LinkName,
      enum LINK_TYPE LinkType,
      MKLINK_FLAGS Flags
    );

### Параметры

Target
Имя файлового объекта, на который создаётся ссылка.
LinkName
Имя создаваемой ссылки.
LinkType
Тип операции. Одно из (перечисление LINK_TYPE):

Операция | Описание
--- | ---
LINK_HARDLINK | создать жёсткую ссылку (hardlink)
LINK_JUNCTION | создать связь каталогов (junction)
LINK_VOLMOUNT | монтировать локальный диск на файловую систему
LINK_SYMLINKFILE | создать символическую ссылку-файл
LINK_SYMLINKDIR | создать символическую ссылку-каталог
LINK_SYMLINK | автоматически выбрать тип создаваемой символической ссылки

Flags
Флаг, одно из (тип MKLINK_FLAGS):

Флаг | Описание
--- | ---
MLF_SHOWERRMSG | выводить сообщения об ошибках
MLF_DONOTUPDATEPANEL | после создания ссылки не обновлять панели
MLF_HOLDTARGET | для символических ссылок не конвертировать Target в полный путь
MLF_NONE | нулевой флаг

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

`1` - ссылка создана.

`0` - ошибка при создании ссылки:

- Для жёстких ссылок:
  - Target или LinkName находятся на разных разделах;
  - раздел не NTFS;
  - раздел не локальный;
  - Target не существует или не является файлом.
  - LinkName уже существует;
- Для связей:
  - Target или LinkName находятся не на локальных разделах;
  - раздел не NTFS 5.0;
  - Target не существует или не является каталогом;
  - LinkName существует, но не пустой каталог.
- Для монтирования дисков:
  - Target или LinkName находятся не на локальных разделах;
  - раздел для LinkName не NTFS 5.0;
  - Src не существует или диск является не локальным;
  - LinkName существует, но не пустой каталог.

### Примечание

1. Ссылки создаются по следующим правилам:
   - жёсткие ссылки (hardlink) создаются только для файлов в пределах текущего NTFS-раздела;
   - связи (junction) создаются только для каталогов в пределах локальных NTFS-разделов;
   - монтирование локальных дисков на файловую систему только на NTFS-раздел.
2. Если в качестве Target было передано значение, например L"C:", то вместо связи каталогов будет монтирован диск.
3. Если для монтирования диска LinkName оканчивается слешем, то в LinkName будет создан каталог "disk_N" (где N - буква диска).
4. В Windows 2000 напрямую делать связи на папки CD-ROM нельзя, но можно это ограничение обойти, смонтировав CD-ROM диск на папку NTFS-раздела (т.н. Mount Points). И уже из этой папки сделать нужную связь.

### Пример

Смотрите также:
GetNumberOfLinks