Spec-Zone .ru
спецификации, руководства, описания, API

Библиотека разработчика Mac

Разработчик

Ссылка файлового протокола Apple

Опции
Развертывание Target:

На этой странице

Ссылка файлового протокола Apple

Этот документ описывает команды Apple Filing Protocol (AFP), типы данных и константы, которые могут использоваться для передачи с файловым сервером AFP. AFP позволяет пользователям многократных компьютеров совместно использовать файлы легко и эффективно по сети.

В этой ссылке на протокол, ссылках на a string тип указывает строку Паскаля. Первый байт строки Паскаля указывает длину строки (0-255) и сопровождается максимум на 255 байтов текста. Строки Паскаля не завершаются нулем.

Дополнительные сведения, вместе с полным списком различий между различными версиями протокола AFP см. в сопутствующем руководстве по программированию.

Функции

Эти команды отправляются на уровне AFP. Этот уровень находится поверх уровня DSI. Команды слоев DSI описаны в Командах Транспортного уровня DSI.

  • Проверки на разрешение получить доступ к файлу или каталогу на объеме, для которого включены ACLs.

    Объявление

    Objective C

    uint8_t CommandCode uint8_t Pad int16_t VolumeID int32_t DirectoryID uint16_t Bitmap 16 bytes UUID int32_t ReqAccess uint8_t Pathtype string Pathname

    Параметры

    CommandCode

    kFPAccess (75).

    Pad

    Байт клавиатуры.

    VolumeID

    Идентификатор объема.

    DirectoryID

    Идентификатор каталога.

    Bitmap

    Зарезервированный.

    UUID

    Универсально Уникальный идентификатор (UUID) процесса, отправляющего эту команду.

    ReqAccess

    Запрошенный доступ. Для определений посмотрите Права доступа ACL.

    PathType

    Тип имен в Pathname. Посмотрите Константы Типа тракта для возможных значений.

    Pathname

    Путь к файлу или каталогу, для которого запрашивается доступ. Pathname строка, если она содержит Короткие или Длинные Имена или AFPName, если она содержит путь UTF-8–encoded. Посмотрите раздел Character Encoding Понятий файлового протокола Apple в Руководстве по программированию файлового протокола Apple для дополнительных подробных данных о UTF-8 кодирование используемого AFP.

    Result

    kFPNoErr если предоставляется доступ. Посмотрите Таблицу 2 для других возможных кодов результата.

    Обсуждение

    Запрос отправлен к серверу, определяющему, предоставить ли доступ.

    Поддержка этой команды, а также FPGetACL и FPSetACL требуется чтобы к контрольным спискам доступа к поддержке (ACLs). Поддержка UTF-8 и UUIDs также требуется для поддержки ACLs. Посмотрите раздел Character Encoding Понятий файлового протокола Apple в Руководстве по программированию файлового протокола Apple для дополнительных подробных данных о UTF-8 кодирование используемого AFP.

    Таблица 1 перечисляет коды результата для FPAccess команда.

    Таблица 1Result кодирует для FPAccess команда

    Код результата

    Объяснение

    kFPAccessDenied

    Пользователю не требовали, чтобы права доступа запросили доступ к файлу или каталогу.

    kFPMiscErr

    Ошибка неAFP произошла.

    kFPObjectNotFound

    Входные параметры не указывают на существующий файл или каталог.

    kFPParamErr

    Параметр недопустим.

    Рисунок 1 показывает блок запроса для FPAccess команда.

    Блок рисунка 1Request для FPAccess команда image: ../ART/afp_FPAccess.eps
  • Добавляет APPL, отображающийся на базу данных Desktop.

    Объявление

    Objective C

    uint8_t CommandCode uint8_t Pad int16_t DTRefNum int32_t DirectoryID int32_t FileCreator int32_t ApplTag uint8_t PathType string Pathname

    Параметры

    CommandCode

    kFPAddAPPL (53).

    Pad

    Байт клавиатуры.

    DTRefNum

    Настольное число ссылки на базу данных.

    DirectoryID

    Каталог наследователя ID.

    FileCreator

    Создатель файла приложения, соответствующего добавляемому отображению APPL.

    ApplTag

    Определяемый пользователем тег сохранен отображением APPL.

    PathType

    Тип имен в Pathname. Посмотрите Константы Типа тракта для возможных значений.

    Pathname

    Путь к приложению, соответствующему добавляемому отображению APPL. Pathname строка, если она содержит Короткие или Длинные Имена или AFPName, если она содержит путь UTF-8–encoded. Посмотрите раздел Character Encoding Понятий файлового протокола Apple в Руководстве по программированию файлового протокола Apple для дополнительных подробных данных о UTF-8 кодирование используемого AFP.

    Result

    kFPNoErr если не произошла никакая ошибка. Посмотрите Таблицу 2 для других возможных кодов результата.

    Reply block

    Ни один.

    Обсуждение

    Эта команда добавляет указанное отображение на базу данных Desktop объема, включая расположение приложения и создателя файла. Если APPL, отображающийся для того же приложения (то же имя файла, тот же каталог и тот же создатель файла) уже, существует, отображение заменяется.

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

    Может быть больше чем одно приложение в списке базы данных Desktop отображений APPL для данного создателя файла. Различать среди них, ApplTag параметр сохранен каждым отображением APPL. Данные меток могут использоваться для решения среди этих многократных приложений и не интерпретируются базой данных Desktop.

    Пользователь, должно быть, ранее вызвал FPOpenDT для соответствующего объема. Кроме того, приложение должно присутствовать в указанном каталоге, прежде чем будет отправлена эта команда.

    Таблица 2 перечисляет коды результата для FPAddAPPL команда.

    Таблица 2Result кодирует для FPAddAPPL команда

    Код результата

    Объяснение

    kFPAccessDenied

    Пользователю не требовали, чтобы права доступа добавили отображение APPL.

    kFPMiscErr

    Ошибка неAFP произошла.

    kFPObjectNotFound

    Входные параметры не указывают на существующий файл.

    kFPObjectTypeErr

    Входные параметры указывают на каталог.

    kFPParamErr

    Ссылка сеанса или Настольное число ссылки на базу данных неизвестны; путь недопустим.

    Рисунок 2 показывает блок запроса для FPAddAPPL команда.

    Блок рисунка 2Request для FPAddAPPL команда image: ../ART/afp_036.eps

    Доступность

    Осуждаемый. Настольный Менеджер базы данных больше не существует в Mac OS v.10.6 и позже.

  • Добавляет комментарий для файла или каталога к базе данных Desktop объема.

    Объявление

    Objective C

    uint8_t CommandCode uint8_t Pad int16_t DTRefNum int32_t DirectoryID uint8_t PathType string Pathname string Comment

    Параметры

    CommandCode

    kFPAddComment (56).

    Pad

    Байт клавиатуры.

    DTRefNum

    Настольное число ссылки на базу данных.

    DirectoryID

    Каталог наследователя ID.

    PathType

    Тип имени в Pathname. Посмотрите Константы Типа тракта для возможных значений.

    Pathname

    Путь к файлу или каталогу, с которым должен быть связан комментарий. Pathname строка, если она содержит Короткие или Длинные Имена или AFPName, если она содержит путь UTF-8–encoded. Посмотрите раздел Character Encoding Понятий файлового протокола Apple в Руководстве по программированию файлового протокола Apple для дополнительных подробных данных о UTF-8 кодирование используемого AFP.

    Comment

    Данные комментария, которые будут связаны с указанным файлом или каталогом.

    Result

    kFPNoErr если не произошла никакая ошибка. Посмотрите Таблицу 3 для других возможных кодов результата.

    ReplyBlock

    Ни один.

    Обсуждение

    Эта команда хранит данные комментария в базе данных Desktop и связывает комментарий с указанным файлом или каталогом. Если комментарий более длинен, чем 199 байтов, комментарий является усеченным к 199 байтам, не возвращая ошибку.

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

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

    Пользователь, должно быть, ранее вызвал FPOpenDT для соответствующего объема. Кроме того, указанный файл или каталог должен присутствовать в указанном каталоге, прежде чем будет отправлена эта команда.

    Таблица 3 перечисляет коды результата для FPAddComment команда.

    Таблица 3Result кодирует для FPAddComment команда

    Код результата

    Объяснение

    kFPAccessDenied

    Пользователю не требовали, чтобы права доступа добавили комментарий.

    kFPObjectNotFound

    Входные параметры не указывают на существующий файл или каталог.

    kFPMiscErr

    Ошибка неAFP произошла.

    Рисунок 3 показывает блок запроса для FPAddComment команда.

    Блок рисунка 3Request для FPAddComment команда image: ../ART/afp_037.eps

    Доступность

    Осуждаемый. Настольный Менеджер базы данных больше не существует в Mac OS v.10.6 и позже.

  • Добавляет битовый массив значка к базе данных Desktop объема.

    Объявление

    Objective C

    uint8_t CommandCode uint8_t Pad int16_t DTRefNum int32_t FileCreator int32_t FileType uint8_t IconType uint8_t Pad int32_t IconTag int16_t BitmapSize

    Параметры

    CommandCode

    kFPAddIcon (192).

    Pad

    Байт клавиатуры.

    DTRefNum

    Настольное число ссылки на базу данных.

    FileCreator

    Создатель файла связался со значком, который должен быть добавлен.

    FileType

    Тип файла связался со значком, который должен быть добавлен.

    IconType

    Тип значка, который должен быть добавлен.

    Pad

    Байт клавиатуры.

    IconTag

    Данные меток, которые будут сохранены значком.

    BitmapSize

    Размер битового массива для этого значка.

    Result

    kFPNoErr если никакая ошибка не произошла, kFPParamErr если путь недопустим, если ссылочный номер сеанса или Настольное число ссылки на базу данных неизвестны или kFPIconTypeError если размер нового значка отличается от размера существующего значка, или kFPMiscErr если ошибка произошла, который не является определенным для AFP.

    ReplyBlock

    Ни один.

    Обсуждение

    Эта команда добавляет значок для указанного создателя файла и типа значков к базе данных Desktop и связывает данные меток со значком. Если значок того же создателя файла и типа значков уже существует в базе данных, значок заменяется. Однако, если размер нового значка отличается от старого значка, сервер возвращает a kFPIconTypeError код результата.

    Пользователь, должно быть, ранее вызвал FPOpenDT для соответствующего объема.

    Рисунок 4 показывает блок запроса для FPAddIcon команда.

    Блок рисунка 4Request для FPAddIcon команда image: ../ART/afp_038.eps

    Доступность

    Осуждаемый. Настольный Менеджер базы данных больше не существует в Mac OS v.10.6 и позже.

  • FPByteRangeLock FPByteRangeLock Осуждаемый в AFP 3.x. Используйте FPByteRangeLockExt вместо этого

    Блокировки или разблокировали указанный диапазон байтов в открытом ветвлении.

    Объявление

    Objective C

    uint8_t CommandCode uint8_t Flags int16_t OForkRefNum int32_t Offset int32_t Length

    Параметры

    CommandCode

    kFPByteRangeLock (1).

    Pad

    Байт клавиатуры.

    DTRefNum

    Бит 0 LockUnlock бит, где 0 указывает блокировку и 1, указывает, разблокировали. Бит 7 StartEndFlag бит, где 0 указывает это Offset относительно начала ветвления, и 1 указывает это Offset относительно конца ветвления. StartEndFlag бит только используется при блокировке диапазона.

    OForkRefNum

    Открытый ссылочный номер ветвления.

    Offset

    Смещение к первому байту диапазона, который будет заблокирован или разблокирован (может быть отрицательным, если StartEndFlag укусил, установлено в 1).

    Length

    Число байтов, которые будут заблокированы или разблокированы (со знаком, положительное int32_t; не может быть отрицательным за исключением специального $FFFFFFFF значения).

    Result

    kFPNoErr если не произошла никакая ошибка. Посмотрите Таблицу 4 для возможных кодов результата.

    ReplyBlock

    Если код результата kFPNoErr и ответ для попытки заблокировать или разблокировать диапазон, сервер возвращает блок ответа. Блок ответа состоит из int32_t, вызванный RangeStart, содержа число первого байта заблокированного диапазона.

    Обсуждение

    Эта команда блокирует и разблокировала указанный диапазон байтов в открытом ветвлении для использования пользовательским приложением. При блокировке диапазона сервер возвращает число первого заблокированного байта.

    Байты пронумерованы от 0 до FFFFFFF за 7$. Последнее значение является максимальным размером ветвления. Конец ветвления является еще одним, чем число последнего байта в ветвлении.

    Если никакой пользователь не содержит блокировку ни на какой части требуемого диапазона, сервер блокирует диапазон, указанный этой командой. Пользователь может содержать многократные блокировки в том же открытом ветвлении до специфичного для сервера предела. Блокировки не могут наложиться. Заблокированный диапазон может запуститься или расшириться мимо конца ветвления; это не перемещает конец ветвления или препятствует тому, чтобы другой пользователь писал в ветвление мимо заблокированного диапазона. Установка Offset обнулять, StartEndFlag бит к нулевому (запуск), и Length к $FFFFFFFF блокирует все ветвление к максимальному размеру ветвления. Установка Offset к значению кроме нуля, StartEndFlag бит для обнуления, и Length к $FFFFFFFF блокирует диапазон, начинающийся в Offset и расширение к максимальному размеру ветвления.

    Установка StartEndFlag бит к 1 (конец) позволяет блокировке быть смещенной относительно конца ветвления. Это позволяет пользователю установить блокировку, когда пользователь не знает точный конец ветвления, как это может произойти, когда многократные писатели одновременно изменяют ветвление. Сервер возвращает число первого заблокированного байта.

    Конфликты блокировки определяются значением OForkRefNum. Т.е. если ветвление открыто дважды, два открытых ссылочных номера ветвления считают двумя различными «пользователями» независимо от того, были ли они открыты для тех же или различных сеансов.

    Когда пользователь закрывает ветвление, разблокированы все блокировки, сохраненные пользователем. Разблокирование диапазона делает его доступным для других пользователей для чтения и записи. Сервер возвращает код результата kFPRangeNotLocked если пользователь пытается разблокировать диапазон, заблокированный другим пользователем, или это не было заблокировано вообще.

    Разблокировать диапазон, StartEndFlag бит должен быть обнулен (запускаются), Length должен соответствовать размер диапазона, заблокированного, и Offset должен соответствовать число первого байта в заблокированном диапазоне. Если диапазон был заблокирован с StartEndFlag набор битов к нулевому (запуск), используйте то же значение Offset разблокировать диапазон, использовавшийся для блокировки диапазона. Если диапазон был заблокирован с StartEndFlag набор битов к 1 (конец), набор Offset к значению RangeStart это было возвращено сервером. Вы не можете разблокировать часть диапазона.

    OS X поддерживает файлы с отображенной памятью, но блокировки диапазона байта не должны использоваться в сочетании с ними.

    Таблица 4 перечисляет коды результата для FPByteRangeLock команда.

    Таблица 4Result кодирует для FPByteRangeLock команда

    Код результата

    Объяснение

    kFPLockErr

    Некоторые или весь требуемый диапазон заблокированы другим пользователем.

    kFPMiscErr

    Ошибка неAFP произошла.

    kFPNoMoreLocks

    Максимальное количество блокировки сервера было достигнуто.

    kFPParamErr

    Ссылочный номер сеанса или открытый ссылочный номер ветвления неизвестны; комбинация StartEndFlag укусила, и Смещение указывает диапазон, запускающийся перед нулем байта.

    kFPRangeNotLocked

    Пользователь попытался разблокировать диапазон, заблокированный другим пользователем, или это не заблокировано вообще.

    kFPRangeOverlap

    Пользователь попытался заблокировать некоторых или весь диапазон, который уже заблокировал пользователь.

    Рисунок 5 показывает запрос и блоки ответа для FPByteRangeLock команда.

    Рисунок 5Request и ответ блокируют для FPByteRangeLock команда image: ../ART/afp_039.eps

    Доступность

    Осуждаемый в AFP 3.x. Использовать

  • Блокировки или разблокировали указанный диапазон байтов в открытом ветвлении.

    Объявление

    Objective C

    uint8_t CommandCode uint8_t Flags int16_t OForkRefNum int64_t Offset int64_t Length

    Параметры

    CommandCode

    kFPByteRangeLockExt (59).

    Pad

    Байт клавиатуры.

    Flags

    Бит 0 LockUnlock бит, где 0 указывает блокировку и 1, указывает, разблокировали. Бит 7 StartEndFlag бит, где 0 указывает это Offset относительно начала ветвления, и 1 указывает это Offset относительно конца ветвления. StartEndFlag бит только используется при блокировке диапазона.

    OForkRefNum

    Открытый ссылочный номер ветвления.

    Offset

    Смещение к первому байту диапазона, который будет заблокирован или разблокирован (может быть отрицательным, если StartEndFlag укусил, установлено в 1).

    Length

    Число байтов, которые будут заблокированы или разблокированы (со знаком, положительное int32_t; не может быть отрицательным за исключением специального $FFFFFFFFFFFFFFFF значения).

    Result

    kFPNoErr если не произошла никакая ошибка. Посмотрите Таблицу 5 для возможных кодов результата.

    ReplyBlock

    Если код результата kFPNoErr и ответ для попытки заблокировать или разблокировать диапазон, сервер возвращает блок ответа. Блок ответа состоит из int32_t вызванный RangeStart содержа число первого байта заблокированного диапазона.

    Обсуждение

    Эта команда блокирует и разблокировала указанный диапазон байтов в открытом ветвлении для использования пользовательским приложением. При блокировке диапазона сервер возвращает число заблокированного байта.

    FPByteRangeLockExt команда отличается от FPByteRangeLock команда в этом FPByteRangeLockExt команда подготовлена обработать большие значения, которые могут требоваться для областей синхронизации для объемов, больше, чем 4 ГБ в размере.

    Байты пронумерованы, запустившись от 0. Конец ветвления является еще одним, чем число последнего байта в ветвлении.

    Если никакой пользователь не содержит блокировку ни на какой части требуемого диапазона, сервер блокирует диапазон, указанный этой командой. Пользователь может содержать многократные блокировки в том же открытом ветвлении до специфичного для сервера предела. Блокировки не могут наложиться. Заблокированный диапазон может запуститься или расшириться мимо конца ветвления; это не перемещает конец ветвления или препятствует тому, чтобы другой пользователь писал в ветвление мимо заблокированного диапазона.

    Установка Offset обнулять, StartEndFlag бит к нулевому (запуск), и Length к 0xFFFFFFFFFFFFFFFF блокирует все ветвление к максимальному размеру ветвления.

    Указывая смещение кроме нуля, StartEndFlag бит к нулевому (запуск), и Length к 0xFFFFFFFFFFFFFFFF блокирует диапазон, начинающийся в Offset и расширение к максимальному размеру ветвления.

    Установка StartEndFlag бит к 1 (конец) позволяет блокировке быть смещенной относительно конца ветвления. Это позволяет пользователю установить блокировку, когда пользователь не знает точный конец ветвления, как это может произойти, когда многократные писатели одновременно изменяют ветвление. Сервер возвращает число первого заблокированного байта.

    Конфликты блокировки определяются значением OForkRefNum. Т.е. если ветвление открыто дважды, два открытых ссылочных номера ветвления считают двумя различными «пользователями» независимо от того, были ли они открыты для тех же или различных сеансов.

    Когда пользователь закрывает ветвление, разблокированы все блокировки, сохраненные пользователем. Разблокирование диапазона делает его доступным для других пользователей для чтения и записи. Сервер возвращает код результата kFPRangeNotLocked если пользователь пытается разблокировать диапазон, заблокированный другим пользователем, или это не было заблокировано вообще.

    Разблокировать диапазон, StartEndFlag бит должен быть обнулен (запускаются), Length должен соответствовать размер диапазона, заблокированного, и Offset должен соответствовать число первого байта в заблокированном диапазоне. Если диапазон был заблокирован с StartEndFlag обнуленный (запускают), используют то же значение Offset разблокировать диапазон, использовавшийся для блокировки диапазона. Если диапазон был заблокирован с StartEndFlag набор битов к 1 (конец), набор Offset к значению RangeStart это было возвращено сервером. Вы не можете разблокировать часть диапазона.

    OS X поддерживает файлы с отображенной памятью, но блокировки диапазона байта не должны использоваться в сочетании с ними.

    Таблица 5 перечисляет коды результата для FPByteRangeLockExt команда.

    Таблица 5Result кодирует для FPByteRangeLockExt команда

    Код результата

    Объяснение

    kFPLockErr

    Некоторые или весь требуемый диапазон заблокированы другим пользователем.

    kFPMiscErr

    Ошибка неAFP произошла.

    kFPNoMoreLocks

    Максимальное количество блокировки сервера было достигнуто.

    kFPParamErr

    Открытый ссылочный номер ветвления неизвестен; комбинация StartEndFlag укусила, и параметры Смещения указывает диапазон, запускающийся перед нулем байта.

    kFPRangeOverlap

    Пользователь попытался заблокировать некоторых или весь диапазон, который уже заблокировал пользователь.

    kFPRangeNotLocked

    Пользователь попытался разблокировать диапазон, заблокированный другим пользователем, или это не заблокировано вообще.

    Рисунок 6 показывает запрос и блоки ответа для FPByteRangeLockExt команда.

    Рисунок 6Request и ответ блокируют для FPByteRangeLockExt команда image: ../ART/afp_024.eps
  • FPCatSearch FPCatSearch Осуждаемый в AFP 3.x. Используйте FPCatSearchExt вместо этого

    Ищет объем файлы и каталоги, то соответствие указало критерии.

    Объявление

    Objective C

    uint8_t CommandCode uint8_t Pad int16_t VolumeID int32_t ReqMatches int32_t Reserved 16 bytes CatalogPosition int16_t FileRsltBitmap int16_t DirectoryRsltBitmap int32_t ReqBitmap Specification1 Specification2 unsigned char Length

    Параметры

    CommandCode

    kFPCatSearch (43).

    Pad

    Байт клавиатуры.

    VolumeID

    ID объема для поиска.

    Reserved

    Зарезервированный; должен быть нуль.

    ReqMatches

    Максимальное количество соответствий для возврата.

    CatalogPosition

    Текущая позиция в каталоге.

    FileRsltBitmap

    Битовый массив файла описание параметров файла, чтобы добраться или обнулить для получения параметров каталога только. Установите бит, соответствующий каждому желаемому параметру. Этот битовый массив совпадает с FileBitmap параметр FPGetFileDirParms команда с некоторыми ограничениями, описанными в разделе Discussion. Для разрядных определений для этого битового массива посмотрите Битовый массив Файла и Каталога.

    DirectoryRsltBitmap

    Битовый массив каталога описание параметров каталога, чтобы добраться или обнулить для получения параметров файла только. Установите бит, соответствующий каждому желаемому параметру. Этот битовый массив совпадает с DirectoryBitmap параметр FPGetFileDirParms команда с некоторыми ограничениями, описанными в разделе Discussion. Для разрядных определений для этого битового массива посмотрите Битовый массив Файла и Каталога.

    ReqBitmap

    Каталог и параметры файла, которые должны искаться. Для параметров каталога только, посмотрите рисунок 7. Для параметров файла только, посмотрите рисунок 8. Для каталога и параметров файла, посмотрите рисунок 9.

    Specification1

    Нижние границы критериев поиска и значения.

    Specification2

    Дополнительные верхние границы критериев поиска и маски.

    Length

    Длина этого блока запроса.

    Result

    kFPNoErr если не произошла никакая ошибка. Посмотрите Таблицу 6 для возможных кодов результата.

    ReplyBlock

    Если код результата kFPNoErr, сервер возвращает блок ответа. Посмотрите Таблицу 7 для формата блока ответа.

    Обсуждение

    Эта команда ищет объем файлы и каталоги, соответствующие указанные критерии, и возвращает массив записей, описывающих найденные соответствия. Критерии могут включать большинство параметров в битовый массив файла, битовый массив каталога или оба битовых массива, определяющиеся для FPGetFileDirParms команда. Параметры для соответствующих файлов и каталогов возвращаются. Эти параметры могут также быть любым из указанных FPGetFileDirParms команда.

    Первое слово CatalogPosition параметр указывает, обозначает ли параметр фактическую позицию каталога или подсказку. Если первое слово является нулем, поиск запускается в начале объема. Если первое слово является ненулевым, CatalogPosition фактическая позиция каталога, и поиск запускается с этой записи.

    Specification1 и Specification2 параметры используются вместе для указания поисковых параметров. Эти параметры упаковываются в том же порядке как биты в ReqBitmap. Все параметры переменной длины (такие как те, которые содержат имена), помещаются в конце каждой записи спецификации. Смещение сохранено в параметрах спецификации для указания, где расположен фактический параметр переменной длины. Это смещение измеряется от запуска параметров спецификации (не включая длину и байты заполнителя). Результаты упаковываются таким же образом.

    Поля в Specification1 и Specification2 имейте различное использование:

    • В поле имени, Specification1 содержит целевую строку; Specification2 должен всегда иметь нулевое поле имени.

    • Во всей дате и полях длины, Specification1 содержит самое низкое значение в целевом диапазоне и Specification2 содержит самое высокое значение в целевом диапазоне.

    • В атрибутах файла и полях Finder Info, Specification1 содержит целевое значение и Specification2 содержит поразрядную маску, указывающую который биты в том поле в Specification1 относятся к текущему поиску.

    Эта команда возвращает код результата kFPEOFErr только, когда это достигло конца дерева каталогов объема. Например, если клиент запрашивает десять соответствий, сервер может возвратить только четыре соответствия, не возвращая ошибку. Клиент должен тогда отправить запрос для шесть (десять минус четыре) больше соответствий, с помощью того же CatalogPosition значение, полученное в предыдущем ответе. Этот процесс продолжается, пока первоначально требуемые соответствия не получены или a kFPEOFErr возвращается. Если эта команда возвращает код результата kFPCatalogChanged, клиент не может продолжать поиск. Клиент должен перезапустить поиск путем установки первого слова CatalogPosition обнулять.

    Эта команда возвращает параметры для файлов, каталогов или обоих, в зависимости от значения FileRsltBitmap и DirectoryRsltBitmap параметры. Если FileRsltBitmap нуль, эта команда предполагает, что Вы не ищете файлы. Аналогично, если DirectoryRsltBitmap нуль, эта команда предполагает, что Вы не ищете каталоги. Если и параметры являются ненулевыми, эта команда ищет файлы и каталоги. Обратите внимание на то, что при поиске и файлов и каталогов определенные ограничения применяются относительно ищущихся параметров. Остальная часть этого раздела описывает эти ограничения.

    ReqBitmap параметр указывает каталог и параметры файла, которые будут искаться. Слово младшего разряда ReqBitmap совпадает со словом младшего разряда битового массива файла и битового массива каталога, используемого FPGetFileDirParms команда, за исключением параметра Краткого названия, который не может искаться. Высокий бит старшего слова ReqBitmap указывает, должен ли поиск соответствовать на полных именах или частичных именах (0 = полное имя, 1 = частичное имя). Нет никакого эквивалента биту fsSBNegate, используемому Файловым менеджером Macintosh PBCatSearch функция.

    Рисунок 7 показывает параметры, которые может искать эта команда, когда это ищет каталоги только.

    Рисунок 7Parameters FPCatSearch поиски при поиске каталогов только image: ../ART/afp_015.eps

    Рисунок 8 показывает параметры, которые может искать эта команда, когда это ищет файлы только.

    Рисунок 8Parameters FPCatSearch поиски при поиске файлов только image: ../ART/afp_016.eps

    Рисунок 9 показывает параметры, которые может искать эта команда, когда это ищет и каталоги и файлы.

    Рисунок 9Parameters FPCatSearch поиски при поиске каталогов и файлов image: ../ART/afp_017.eps

    Прежде, чем отправить эту команду, пользователь должен вызвать FPOpenVol для объема, который должен искаться.

    Для возврата всех файлов и каталогов, соответствующих указанные критерии пользователь должен иметь Только для чтения или полномочия Рида и Записи для всех каталогов. Эта команда пропускает каталоги, для которых пользователь не имеет Только для чтения или полномочия Рида и Записи.

    Таблица 6 перечисляет коды результата для FPCatSearch команда.

    Таблица 6Result кодирует для FPCatSearch команда

    Код результата

    Объяснение

    kFPCallNotSupported

    Сервер не поддерживает эту команду.

    kFPCatalogChanged

    Каталог изменился, и CatalogPosition может быть недопустимым. Никакие соответствия не были возвращены.

    kFPEOFErr

    Больше соответствий.

    kFPMiscErr

    Ошибка неAFP произошла.

    kFPParamErr

    Ссылочный номер сеанса, Объем ID или тип пути неизвестен; путь является нулем или плохо.

    Таблица 7 описывает блок ответа для FPCatSearch команда.

    Блок Table 7Reply для FPCatSearch команда

    Имя и размер

    Данные

    CatalogPosition (16 байтов)

    Текущая позиция в каталоге.

    FileRsltBitmap (int16_t)

    Копия входного битового массива.

    DirectoryRsltBitmap (int16_t)

    Копия входного битового массива.

    ActualCount (uint8_t)

    Число ResultsRecord следующие структуры.

    Нуль или больше ResultsRecord структуры

    Массив ResultsRecord структуры, описывающие соответствия, найденные и наличие следующей структуры:

    • StructLength (uint8_t) — Длина без знака этой структуры, не включая этот байт или байт для FileDir бит (но включая однобайтовую клавиатуру если применимо).

    • FileDir (бит 7 из однобайтового значения) — Является ли запись для файла (0) или каталога (1).

    • OffspringParameters— Соответствующее Длинное Имя, Родительский каталог ID или оба с запаздывающим нулевым байтом при необходимости, чтобы заставить всю структуру закончиться на ровной границе.

    Рисунок 10 показывает запрос и блоки ответа для FPCatSearch команда.

    Рисунок 10Request и ответ блокируют для FPCatSearch команда image: ../Art/afp_018.eps

    Доступность

    Осуждаемый в AFP 3.x. Использовать

  • Ищет объем файлы и каталоги, то соответствие указало критерии.

    Объявление

    Objective C

    uint8_t CommandCode uint8_t Pad int16_t VolumeID int32_t ReqMatches int32_t Reserved 16 bytes CatalogPosition int16_t FileRsltBitmap int16_t DirectoryRsltBitmap int32_t ReqBitmap Specification1 Specification2 unsigned char Length

    Параметры

    CommandCode

    kFPCatSearchExt (67).

    Pad

    Байт клавиатуры.

    VolumeID

    Объем ID.

    ReqMatches

    Максимальное количество соответствий для возврата.

    Reserved

    Зарезервированный; должен быть нуль.

    CatalogPosition

    Текущая позиция в каталоге.

    FileRsltBitmap

    Битовый массив, описывающий параметры файла, чтобы добраться или обнулить для получения параметров каталога только. Установите бит, соответствующий каждому желаемому параметру. Этот битовый массив совпадает с FileBitmap параметр FPGetFileDirParms команда с некоторыми ограничениями, описанными позже в этом разделе. Для разрядных определений для этого битового массива посмотрите Битовый массив Файла и Каталога.

    DirectoryRsltBitmap

    Битовый массив, описывающий параметры каталога, чтобы добраться или обнулить для получения параметров файла только. Установите бит, соответствующий каждому желаемому параметру. Этот битовый массив совпадает с DirectoryBitmap параметр FPGetFileDirParms команда с некоторыми ограничениями, описанными позже в этом разделе. Для разрядных определений для этого битового массива посмотрите Битовый массив Файла и Каталога.

    ReqBitmap

    Каталог и параметры файла, которые должны искаться. Для параметров каталога посмотрите рисунок 11. Для параметров файла посмотрите рисунок 12. Для каталога и параметров файла, посмотрите рисунок 13.

    Specification1

    Нижние границы критериев поиска и значения.

    Specification2

    Дополнительные верхние границы критериев поиска и маски.

    Length

    Длина этого блока запроса.

    Result

    kFPNoErr если не произошла никакая ошибка. Посмотрите Таблицу 8 для возможных кодов результата.

    ReplyBlock

    Если код результата kFPNoErr, сервер возвращает блок ответа. Посмотрите Таблицу 9 для формата блока ответа.

    Обсуждение

    Эта команда ищет объем файлы и каталоги, соответствующие указанные критерии, и возвращает массив записей, описывающих найденные соответствия.

    Эта команда отличается от FPCatSearch команда в этом FPCatSearchExt подготовлен обработать более длинные результаты поиска, которые могут произойти при поиске объемов, которые составляют больше чем 4 ГБ в размере.

    Критерии могут включать большинство параметров в битовый массив файла, битовый массив каталога или оба битовых массива, определяющиеся для FPGetFileDirParms команда. Параметры для соответствующих файлов и каталогов возвращаются. Эти параметры могут также быть любым из указанных FPGetFileDirParms команда.

    Первое слово CatalogPosition параметр указывает, обозначает ли параметр фактическую позицию каталога или подсказку. Если первое слово является нулем, поиск запускается в начале объема. Если первое слово является ненулевым, CatalogPosition фактическая позиция каталога, и поиск запускается с этой записи.

    Specification1 и Specification2 параметры используются вместе для указания поисковых параметров. Эти параметры упаковываются в том же порядке как биты в ReqBitmap. Все параметры переменной длины (такие как те, которые содержат имена), помещаются в конце каждой записи спецификации. Смещение сохранено в параметрах спецификации для указания, где расположен фактический параметр переменной длины. Это смещение измеряется от запуска параметров спецификации (не включая длину и байты заполнителя). Результаты упаковываются таким же образом.

    Поля в Specification1 и Specification2 имейте различное использование:

    • В поле имени, Specification1 содержит целевую строку; Specification2 должен всегда иметь нулевое поле имени.

    • Во всей дате и полях длины, Specification1 содержит самое низкое значение в целевом диапазоне и Specification2 содержит самое высокое значение в целевом диапазоне.

    • В полях Attributes и Finder Info, Specification1 содержит целевое значение и Specification2 содержит поразрядную маску, указывающую который биты в том поле в Specification1 относятся к текущему поиску.

    Эта команда возвращает код результата kFPEOFErr только, когда это достигло конца дерева каталогов объема. Например, если клиент запрашивает десять соответствий, сервер может возвратить только четыре соответствия, не возвращая ошибку. Клиент должен тогда отправить запрос для шесть (десять минус четыре) больше соответствий, с помощью того же CatalogPosition значение, полученное в предыдущем ответе. Этот процесс продолжается, пока первоначально требуемые соответствия не получены или код результата kFPEOFErr возвращается. Если эта команда возвращает код результата kFPCatalogChanged, клиент не может продолжать поиск. Клиент должен перезапустить поиск путем установки первого слова CatalogPosition обнулять.

    Эта команда возвращает параметры для файлов, каталогов или обоих, в зависимости от значения FileRsltBitmap и DirectoryRsltBitmap параметры. Если FileRsltBitmap нуль, эта команда предполагает, что Вы не ищете файлы. Аналогично, если DirectoryRsltBitmap является нулем, эта команда предполагает, что Вы не ищете каталоги. Если и параметры являются ненулевыми, эта команда ищет файлы и каталоги. Обратите внимание на то, что при поиске и файлов и каталогов определенные ограничения применяются относительно ищущихся параметров. Остальная часть этого раздела описывает эти ограничения.

    ReqBitmap параметр указывает каталог и параметры файла, которые будут искаться. Слово младшего разряда ReqBitmap совпадает со словом младшего разряда битового массива файла и битового массива каталога в FPGetFileDirParms, за исключением параметра Краткого названия, который не может искаться. Высокий бит старшего слова ReqBitmap указывает, должен ли поиск соответствовать на полных именах или частичных именах (0 = полное имя, 1 = частичное имя). Нет никакого эквивалента биту fsSBNegate, используемому Файловым менеджером Macintosh PBCatSearch функция.

    Рисунок 11 показывает параметры, которые может искать эта команда, когда это ищет каталоги только.

    Рисунок 11Parameters FPCatSearchExt поиски при поиске каталогов только image: ../ART/afp_015.eps

    Рисунок 8 показывает параметры, которые может искать эта команда, когда это ищет файлы только.

    Рисунок 12Parameters FPCatSearchExt поиски при поиске файлов только image: ../ART/afp_016.eps

    Рисунок 9 показывает параметры, которые может искать эта команда, когда это ищет и каталоги и файлы.

    Рисунок 13Parameters FPCatSearchExt поиски при поиске каталогов и файлов image: ../ART/afp_017.eps

    Прежде, чем отправить эту команду, пользователь должен вызвать FPOpenVol для объема, который должен искаться.

    Для возврата всех файлов и каталогов, соответствующих указанные критерии пользователь должен иметь Только для чтения или полномочия Рида и Записи для всех каталогов. Эта команда пропускает каталоги, для которых пользователь не имеет Только для чтения или полномочия Рида и Записи.

    Таблица 8 перечисляет коды результата для FPCatSearchExt команда.

    Таблица 8Result кодирует для FPCatSearchExt команда

    Код результата

    Объяснение

    kFPCallNotSupported

    Сервер не поддерживает эту команду.

    kFPCatalogChanged

    Каталог изменился, и CatalogPosition может быть недопустимым. Никакие соответствия не были возвращены.

    kFPEOFErr

    Больше соответствий.

    kFPMiscErr

    Ошибка неAFP произошла.

    kFPParamErr

    Ссылочный номер сеанса, Объем ID или тип пути неизвестен; путь является нулем или плохо.

    Таблица 9 описывает блок ответа для FPCatSearchExt команда.

    Блок Table 9Reply для FPCatSearchExt команда

    Имя и размер

    Данные

    CatalogPosition (16 байтов)

    Текущая позиция в каталоге.

    FileRsltBitmap (int16_t)

    Копия входного битового массива.

    DirectoryRsltBitmap (int16_t)

    Копия входного битового массива.

    ActualCount (int16_t)

    Число ResultsRecord следующие структуры.

    Нуль или больше ResultsRecord структуры

    Массив ResultsRecord структуры, описывающие соответствия, найденные и наличие следующей структуры:

    • StructLength (uint16_t) — Длина без знака этой структуры, не включая байты длины, байт для FileDir бит или следующий байт клавиатуры.

    • FileDir (бит 7 из однобайтового значения) — Является ли запись для файла (0) или каталога (1).

    • Results— Соответствующее Длинное Имя, Родительский каталог ID или оба с запаздывающим нулевым байтом при необходимости, чтобы заставить всю структуру закончиться на ровной границе.

    Рисунок 14 показывает запрос и блоки ответа для FPCatSearchExt команда.

    Рисунок 14Request и ответ блокируют для FPCatSearchExt команда image: ../Art/afp_030.eps

    Файл и битовые массивы результата каталога описаны в Битовом массиве Файла и Каталога.

    В блоке ответа, StructLength длина Parameters блок после него, не включая StructLength поле, FileDir байт битового поля или байт клавиатуры (если применимо). Таким образом, для нахождения запуска следующего набора результатов займите текущую позицию (прежде чем StructLen) и добавьте StructLen, добавить 2 (для structLen само поле), добавляют 2 (для FileDir байт и Pad байт).

  • Позволяет пользователям изменять свои пароли.

    Объявление

    Objective C

    uint8_t CommandCode uint8_t Pad string UAM string UserName UserAuthInfo

    Параметры

    CommandCode

    kFPChangePassword (36).

    Pad

    Байт клавиатуры.

    UAM

    Строка, указывающая UAM к использованию.

    UserName

    Имя пользователя, пароль которого должен быть изменен. Начиная с AFP 3.0, UserName два байта с каждым обнуленным байтом. Первый байт указывает строку нулевой длины, и второй байт является байтом клавиатуры.

    UserAuthInfo

    UAM-специфичная информация.

    Result

    kFPNoErr если не произошла никакая ошибка. Посмотрите Таблицу 10 для других возможных кодов результата.

    ReplyBlock

    Варьируется в зависимости от UAM. Для любого UAM, использующего многоступенчатую аутентификацию, эту команду возвраты kFPAuthContinue и обеспечивает блок ответа, используемый в последующем этапе аутентификации. Посмотрите Понятия файлового протокола Apple в Руководстве по программированию файлового протокола Apple для подробных данных о каждом определенном UAM.

    Обсуждение

    Если UAM Cleartxt Passwrd, клиент AFP отправляет серверу имя пользователя плюс старые и новые восьмибайтовые пароли пользователя в открытом тексте. Сервер ищет пароль для того пользователя. Если это соответствует старый пароль, отправленный в пакете, новый пароль сохраняется для того пользователя. Для получения дополнительной информации о Пароле в виде открытого текста UAM посмотрите раздел «Cleartext Password» в разделе «Introduction».

    Если UAM Randnum Exchange, DES используется, чтобы зашифровать и дешифровать пароли. Клиент AFP отправляет серверу имя пользователя, старый восьмибайтовый пароль пользователя, зашифрованный с новым восьмибайтовым паролем пользователя и новым восьмибайтовым паролем пользователя, зашифрованным со старым восьмибайтовым паролем пользователя. Сервер ищет пароль для того пользователя, использует тот пароль в качестве ключа для дешифрования нового пароля и использует результат дешифровать старый пароль. Если конечный результат соответствует то, что сервер знает, чтобы быть старым паролем, новый пароль сохраняется для того пользователя. Для получения дополнительной информации о Exchange Случайного числа UAM посмотрите раздел «Random Number Exchange» в разделе «Introduction».

    При использовании Exchange Случайного числа UAM, убедиться добавить нулевые байты к любому паролю, который составляет меньше чем восемь байтов так, чтобы получающийся пароль имел длину восьми байтов.

    Если пользователь вошел в систему с помощью Двухстороннего Exchange Случайного числа UAM, клиент использует Randnum UAM для изменения пароля пользователя.

    Если UAM DHCAST128, клиент AFP должен вызвать FPChangePassword дважды. В первый раз, клиентские вызовы AFP FPChangePassword отправить зашифрованное имя пользователя и случайное число. Сервер отвечает с ID, случайным числом и значением подписи данного случая/сервера, зашифрованным сеансовым ключом. Клиентские вызовы AFP FPChangePassword снова, на сей раз отправляя имя пользователя и ID, возвращенный сервером. Клиент также отправляет данный случай, постепенно увеличенный одним, новым паролем и старым паролем, все зашифрованные сеансовым ключом. Для получения информации об использовании DHX UAM для изменения паролей посмотрите раздел «DHX and Changing a Password» в разделе «Introduction».

    Серверы не требуются, чтобы поддерживать эту команду. Вызвать FPGetSrvrInfo определить, поддерживает ли сервер эту команду.

    Пользователю нельзя было предоставить возможность для изменения его или ее пароля. Предоставление возможности для изменения пароля является административной функцией и выходит за рамки этой спецификации протокола.

    Таблица 10 перечисляет коды результата для FPChangePassword команда.

    Таблица 10Result кодирует для FPChangePassword команда

    Код результата

    Объяснение

    kFPNoErr

    Никакая ошибка не произошла.

    kFPCallNotSupported

    Сервер не поддерживает эту команду.

    kFPUserNotAuth

    Неработающий UAM (указанный старый пароль не соответствует) или никакой пользователь зарегистрирован все же для указанного сеанса.

    kFPBadUAM

    Указанный UAM не является UAM это FPChangePassword поддержки.

    kFPAccessDenied

    Пользователю не требовали, чтобы права доступа использовали эту команду.

    kFPParamErr

    Имя пользователя является нулем, превышает предел длины имени пользователя UAM или не существует.

    kFPPwdSameErr

    Пользователь попытался изменить его или ее пароль на тот же пароль, который он или она ранее имел. Эта ошибка происходит, только если опция истечения срока пароля активирована на сервере.

    kFPPwdTooShortErr

    Пароль пользователя короче, чем минимальная длина пароля сервера, или пользователь попытался изменить пароль на пароль, который короче, чем минимальная длина пароля сервера.

    kFPPwdPolicyErr

    Новый пароль не соответствует политике паролей сервера.

    kFPMiscErr

    Ошибка неAFP произошла.

    Рисунок 15 показывает блок запроса для FPChangePassword команда.

    Блок рисунка 15Request для FPChangePassword команда image: ../ART/afp_040.eps
  • Закрывает каталог и лишает законной силы его Каталог ID.

    Объявление

    Objective C

    uint8_t CommandCode uint8_t Pad int16_t VolumeID int32_t DirectoryID

    Параметры

    CommandCode

    kFPCloseDir (3).

    Pad

    Байт клавиатуры.

    VolumeID

    Объем ID.

    DirectoryID

    Каталог ID.

    Result

    kFPNoErr если никакая ошибка не произошла, kFPParamErr если ссылочный номер сеанса, Объем ID или Каталог ID неизвестен, или kFPMiscErr если ошибка произошла, который не является определенным для AFP.

    ReplyBlock

    Ни один.

    Обсуждение

    Эта команда лишает законной силы Каталог ID, указанный DirectoryID.

    Эта команда должна использоваться только для переменного Каталога объемы ID. Пользователь, должно быть, ранее вызвал FPOpenVol для этого объема и FPOpenDir для этого каталога.

    Рисунок 16 показывает блок запроса для FPCloseDir команда.

    Блок рисунка 16Request для FPCloseDir команда image: ../ART/afp_041.eps

    Доступность

    Осуждаемый. Это не используется клиентом OS X, потому что больше не поддерживаются переменные объемы каталога ID. Когда каталог удален, каталог IDs, как предполагается, уникален и не снова используется.

  • Закрывает базу данных Desktop объема.

    Объявление

    Objective C

    uint8_t CommandCode uint8_t Pad int16_t DTRefNum

    Параметры

    CommandCode

    kFPCloseDT (49).

    Pad

    Байт клавиатуры.

    DTRefNum

    Настольное число ссылки на базу данных.

    Result

    kFPNoErr если никакая ошибка не произошла, kFPParamErr если ссылочный номер сеанса или Настольное число ссылки на базу данных неизвестны, или kFPMiscErr если ошибка произошла, который не является определенным для AFP.

    ReplyBlock

    Ни один.

    Обсуждение

    Эта команда лишает законной силы Настольное число ссылки на базу данных, указанное DTRefNum.

    Пользователь, должно быть, сначала отправил успешное FPOpenDT команда.

    Рисунок 17 показывает блок запроса для FPCloseDT команда.

    Блок рисунка 17Request для FPCloseDT команда image: ../ART/afp_042.eps

    Доступность

    Осуждаемый. Настольный Менеджер базы данных больше не существует в Mac OS v.10.6 и позже.

  • Закрывает ветвление.

    Объявление

    Objective C

    uint8_t CommandCode uint8_t Pad int16_t OForkRefNum

    Параметры

    CommandCode

    kFPCloseFork (4).

    Pad

    Байт клавиатуры.

    OForkRefNum

    Открытый ссылочный номер ветвления.

    Result

    kFPNoErr если никакая ошибка не произошла, kFPParamErr если ссылочный номер сеанса или открытый ссылочный номер ветвления неизвестны, или kFPMiscErr если ошибка произошла, который не является определенным для AFP.

    ReplyBlock

    Ни один.

    Обсуждение

    Эта команда заставляет сервер сбрасывать и закрывать указанное ветвление, лишая законной силы открытый ссылочный номер ветвления. Если ветвление было записано в, дата модификации файла назначена к часам сервера.

    Пользователь, должно быть, сначала отправил успешное FPOpenFork команда.

    Рисунок 18 показывает блок запроса для FPCloseFork команда.

    Блок рисунка 18Request для FPCloseFork команда image: ../Art/afp_043.eps
  • Закрывает объем.

    Объявление

    Objective C

    uint8_t CommandCode uint8_t Pad int16_t VolumeID

    Параметры

    CommandCode

    kFPCloseVol (2).

    Pad

    Байт клавиатуры.

    VolumeID

    Объем ID.

    Result

    kFPNoErr если никакая ошибка не произошла, kFPParamErr если ссылочный номер сеанса или Объем ID неизвестны, или kFPMiscErr если ошибка произошла, который не является определенным для AFP.

    ReplyBlock

    Ни один.

    Обсуждение

    Эта команда лишает законной силы указанный Объем ID, но не обязательно закрывает все открытые файлы на объеме прежде, чем закрыть объем, таким образом, необходимо закрыть все открытые файлы прежде, чем вызвать FPCloseVol.

    Пользователь, должно быть, сначала отправил успешное FPOpenVol команда для этого объема.

    После отправки этой команды пользователь не может отправить никакие другие команды за этим объемом, не открывая объем снова.

    Рисунок 19 показывает блок запроса для FPCloseVol команда.

    Блок рисунка 19Request для FPCloseVol команда image: ../ART/afp_044.eps
  • Копирует файл от одного расположения до другого на том же файловом сервере.

    Объявление

    Objective C

    uint8_t CommandCode uint8_t Pad int16_t SourceVolumeID int32_t SourceDirectoryID int16_t DestVolumeID int32_t DestDirectoryID uint8_t SourcePathType string SourcePathname uint8_t DestPathType string DestPathname uint8_t NewType string NewName

    Параметры

    CommandCode

    kFPCopyFile (5).

    Pad

    Байт клавиатуры.

    SourceVolumeID

    Исходный объем ID.

    SourceDirectoryID

    Исходный Каталог наследователя ID.

    DestVolumeID

    Целевой объем ID.

    DestDirectoryID

    Целевой Каталог наследователя ID.

    SourcePathType

    Тип имен в SourcePathname. Посмотрите Константы Типа тракта для возможных значений.

    SourcePathname

    Путь файла, который будет скопирован (не может быть нуль). SourcePathname строка, если она содержит Короткие или Длинные Имена или AFPName, если она содержит путь UTF-8–encoded.

    DestPathType

    Тип имен в DestPathname. Посмотрите Константы Типа тракта для возможных значений.

    DestPathname

    Путь к целевому родительскому каталогу (может быть нуль). DestPathname строка, если она содержит Короткие или Длинные Имена или AFPName, если она содержит путь UTF-8–encoded.

    NewType

    Тип имени в NewName. Посмотрите Константы Типа тракта для возможных значений.

    NewName

    Имя, которое будет дано копии (может быть нуль).

    Result

    kFPNoErr если не произошла никакая ошибка. Посмотрите Таблицу 11 для других возможных кодов результата.

    ReplyBlock

    Ни один.

    Обсуждение

    Эта команда копирует файл в новое расположение на сервере. Источник и место назначения могут быть на том же или на различных объемах.

    Сервер пытается открыть исходный файл для Чтения, доступа DenyWrite. Если это перестало работать, возвраты сервера kFPDenyConflict как код результата. Если сервер успешно открывает файл, он копирует файл в каталог, указанный целевыми параметрами.

    Копии дают имя, указанное NewName параметр. Если NewName нуль, сервер дает копии то же имя как оригинал. Другое имя файла (Длинный, Короткий) сгенерировано, как описано в разделе «Catalog Node Names» в Главе 1. Уникальный номер документа присваивается файлу. Сервер также устанавливает Родителя файла ID в Каталог ID целевого родительского каталога. Все другие параметры файла остаются тем же как параметрами исходного файла. Дата модификации целевого родительского каталога назначена к блокировке сервера.

    У пользователя должен быть поисковый доступ ко всем наследователям исходного файла, кроме исходного родительского каталога и доступа для чтения к исходному родительскому каталогу. Далее, у пользователя должен быть поисковый или доступ для записи ко всем наследователям целевого файла, кроме целевого родительского каталога и доступа для записи к целевому родительскому каталогу.

    Эта команда является дополнительной и не может поддерживаться всеми серверами.

    Посмотрите раздел Character Encoding Понятий файлового протокола Apple в Руководстве по программированию файлового протокола Apple для дополнительных подробных данных о UTF-8 кодирование используемого AFP.

    Таблица 11 перечисляет коды результата для FPCopyFile команда.

    Таблица 11Result кодирует для FPCopyFile команда

    Код результата

    Объяснение

    kFPAccessDenied

    Пользователю не требовали, чтобы права доступа считали файл или записали в место назначения.

    kFPCallNotSupported

    Сервер не поддерживает эту команду.

    kFPDenyConflict

    Файл не может быть открыт для Чтения, DenyWrite.

    kFPDiskFull

    Больше пространства не существует на целевом объеме.

    kFPMiscErr

    Ошибка неAFP произошла.

    kFPObjectExists

    Файл или каталог имени, указанного NewName уже существует в целевом родительском каталоге.

    kFPObjectNotFound

    Исходный файл не существует; каталог наследователя неизвестен.

    kFPObjectTypeErr

    Исходные параметры указывают на каталог.

    kFPParamErr

    Открытый ссылочный номер ветвления неизвестен; комбинация StartEndFlag бит и Offset параметры указывают диапазон, запускающийся перед нулем байта.

    Рисунок 20 показывает блок запроса для FPCopyFile команда.

    Блок рисунка 20Request для FPCopyFile команда image: ../ART/afp_045.eps
  • Создает новый каталог.

    Объявление

    Objective C

    uint8_t CommandCode uint8_t Pad int16_t VolumeID int32_t DirectoryID uint8_t PathType string Pathname

    Параметры

    CommandCode

    kFPCreateDir (6).

    Pad

    Байт клавиатуры.

    VolumeID

    Объем ID.

    DirectoryID

    Каталог наследователя ID.

    PathType

    Тип имен в Pathname. Посмотрите Константы Типа тракта для возможных значений.

    Pathname

    Путь, включая имя нового каталога (не может быть нуль). Pathname строка, если она содержит Короткие или Длинные Имена или AFPName, если она содержит путь UTF-8–encoded. Посмотрите раздел Character Encoding Понятий файлового протокола Apple в Руководстве по программированию файлового протокола Apple для дополнительных подробных данных о UTF-8 кодирование используемого AFP.

    Result

    kFPNoErr если не произошла никакая ошибка. Посмотрите Таблицу 12 для других возможных кодов результата.

    ReplyBlock

    Если код результата kFPNoErr, сервер возвращается int32_t, вызванный NewDirectoryID, содержа Каталог ID нового каталога в блоке ответа.

    Обсуждение

    Эта команда создает пустой каталог, указывающий имя Pathname параметр. Файловый сервер присваивает каталог уникальный Каталог ID и возвращает его в блоке ответа. Владелец нового каталога ID установлен в Идентификатор пользователя пользователя, отправляющего команду и ее Группу ID, установлен в ID Primary Group пользователя ID, если основная группа была указана для пользователя.

    Полномочия нового каталога первоначально установлены читать, записать и искать владельца, без полномочий для группы или Всех. Информация о средстве поиска обнуляется, и все атрибуты каталога первоначально очищены. Даты создания и модификации каталога, а также дата модификации родительского каталога, назначены к часам сервера. Резервная дата каталога назначена к 80 000 000$, показав, что никогда не копировался каталог. Другие имена каталога сгенерированы, как описано в разделе «Catalog Node Names» в Главе 1.

    У пользователя должен быть поисковый или доступ для записи ко всем наследователям, кроме родительского каталога этого каталога, а также доступа для записи к родительскому каталогу.

    Таблица 12 перечисляет коды результата для FPCreateDir команда.

    Таблица 12Result кодирует для FPCreateDir команда

    Код результата

    Объяснение

    kFPAccessDenied

    Пользователю не требовали, чтобы права доступа использовали эту команду.

    kFPDiskFull

    Больше пространства не существует на объеме.

    kFPFlatVol

    Объем является плоским и не поддерживает каталоги.

    kFPMiscErr

    Ошибка неAFP произошла.

    kFPObjectNotFound

    Каталог Ancestor неизвестен.

    kFPObjectExists

    Файл или каталог указанного имени уже существует.

    kFPParamErr

    Ссылочный номер сеанса, Объем ID или путь является нулем или недопустимый.

    kFPVolLocked

    Целевой объем только для чтения.

    Рисунок 21 показывает запрос и блоки ответа для FPCreateDir команда.

    Рисунок 21Request и ответ блокируют для FPCreateDir команда image: ../ART/afp_046.eps
  • Создает новый файл.

    Объявление

    Objective C

    uint8_t CommandCode uint8_t Flag int16_t VolumeID int32_t DirectoryID uint8_t PathType string Pathname

    Параметры

    CommandCode

    kFPCreateFile (7).

    Flag

    Бит 7 из Flag параметр является битом CreateFlag, где 0 указывает, что мягкое создает, и 1 указывает, что твердое создает.

    VolumeID

    Объем ID.

    DirectoryID

    Каталог наследователя ID.

    PathType

    Тип имен в Pathname. Посмотрите Константы Типа тракта для возможных значений.

    Pathname

    Путь, включая имя нового файла (не может быть нуль). Pathname строка, если она содержит Короткие или Длинные Имена или AFPName, если она содержит путь UTF-8–encoded. Посмотрите раздел Character Encoding Понятий файлового протокола Apple в Руководстве по программированию файлового протокола Apple для дополнительных подробных данных о UTF-8 кодирование используемого AFP.

    Result

    kFPNoErr если не произошла никакая ошибка. Посмотрите Таблицу 13 для других возможных кодов результата.

    ReplyBlock

    Ни один.

    Обсуждение

    Эта команда создает пустой файл, указывающий имя Pathname. Поскольку мягкое создает, если файл тем именем уже существует, сервер возвращает код результата kFPObjectExists. Иначе, это создает новый файл и присваивает его имя, указанное Pathname. Уникальный номер документа присваивается файлу. Информация о средстве поиска обнуляется, и все атрибуты файла первоначально очищены. Даты создания и модификации файла и дата модификации родителя файла родительского каталога файла, установлены в часы сервера. Резервная дата файла назначена к 80 000 000$, показав, что никогда не копировался этот файл. Другие имена файла сгенерированы, как описано в разделе «Catalog Node Names» в Главе 1. Длины обоих из ветвлений файла обнуляются.

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

    Поскольку твердое создает, если файл уже существует и не открыт, файл удален и затем воссоздан. Все параметры файла (включая дату создания) повторно инициализируются, как описано выше.

    Таблица 13 перечисляет коды результата для FPCreateFile команда.

    Таблица 13Result кодирует для FPCreateFile команда

    Код результата

    Объяснение

    kFPAccessDenied

    Пользователю не требовали, чтобы права доступа использовали эту команду.

    kFPDiskFull

    Больше пространства не существует на объеме.

    kFPFileBusy

    Если попытка твердого создает, файл уже существует и открыт.

    kFPMiscErr

    Ошибка неAFP произошла.

    kFPObjectExists

    Если попытка мягкого создает, файл указанного имени уже существует.

    kFPObjectNotFound

    Каталог Ancestor неизвестен.

    kFPVolLocked

    Целевой объем только для чтения.

    kFPParamErr

    Ссылочный номер сеанса, Объем ID или путь является нулем или недопустимый.

    Рисунок 22 показывает блок запроса для FPCreateFile команда.

    Блок рисунка 22Request для FPCreateFile команда image: ../ART/afp_047.eps
  • Создает уникальный Идентификатор файла для файла.

    Объявление

    Objective C

    uint8_t CommandCode uint8_t Pad int16_t VolumeID int32_t DirectoryID uint8_t PathType string Pathname

    Параметры

    CommandCode

    kFPCreateID (39).

    Pad

    Байт клавиатуры.

    VolumeID

    Объем ID.

    DirectoryID

    ID каталога каталога, в котором должен быть создан файл.

    PathType

    Тип имен в Pathname. Посмотрите Константы Типа тракта для возможных значений.

    Pathname

    Имя файла, который является целью Идентификатора файла (т.е. имя файла файла, для которого Идентификатор файла создается). Pathname строка, если она содержит Короткие или Длинные Имена или AFPName, если она содержит путь UTF-8–encoded. Посмотрите раздел Character Encoding Понятий файлового протокола Apple в Руководстве по программированию файлового протокола Apple для дополнительных подробных данных о UTF-8 кодирование используемого AFP.

    Result

    kFPNoErr если не произошла никакая ошибка. Посмотрите Таблицу 14 для других возможных кодов результата.

    ReplyBlock

    Ни один.

    Обсуждение

    Даже если его имя или расположение изменяются, идентификаторы файла обеспечивают способ отслеживать файл. Объем Идентификатора файла ограничивается файлами на объеме. Идентификаторы файла не могут использоваться через объемы.

    Сервер AFP должен предпринять шаги, чтобы гарантировать, что каждый Идентификатор файла уникален и что никакой Идентификатор файла не снова используется, как только это было удалено.

    У пользователя должны быть Только для чтения или полномочие Чтения и Записи использовать эту команду.

    Таблица 14 перечисляет коды результата для FPCreateID команда.

    Таблица 14Result кодирует для FPCreateID команда

    Код результата

    Объяснение

    kFPMiscErr

    Ошибка неAFP произошла.

    kFPObjectNotFound

    Конечный файл не существует.

    kFPObjectTypeErr

    Определенный объект был каталогом, не файлом.

    kFPParamErr

    Ссылочный номер сеанса, Объем ID или тип пути неизвестен; путь является нулем или плохо.

    kFPVolLocked

    Целевой объем только для чтения.

    Рисунок 23 показывает блок запроса для FPCreateID команда.

    Блок рисунка 23Request для FPCreateID команда image: ../ART/afp_009.eps

    Доступность

    Осуждаемый. Клиенты AFP OS X предполагают, что все файлы и каталоги присвоили IDs, который уникален и не снова используется, когда удален элемент.

  • Удаляет файл или каталог.

    Объявление

    Objective C

    uint8_t CommandCode uint8_t Pad int16_t VolumeID int32_t DirectoryID uint8_t PathType string Pathname

    Параметры

    CommandCode

    kFPDelete (8).

    Pad

    Байт клавиатуры.

    VolumeID

    Объем ID.

    DirectoryID

    Каталог наследователя ID.

    PathType

    Тип имен в Pathname. Посмотрите Константы Типа тракта для возможных значений.

    Pathname

    Путь файла или каталога, который будет удален (может быть нуль, если каталог должен быть удален). Pathnameстрока, если она содержит Короткие или Длинные Имена или AFPName, если она содержит путь UTF-8–encoded. Посмотрите раздел Character Encoding Понятий файлового протокола Apple в Руководстве по программированию файлового протокола Apple для дополнительных подробных данных о UTF-8 кодирование используемого AFP.

    Result

    kFPNoErr если не произошла никакая ошибка. Посмотрите Таблицу 15 для других возможных кодов результата.

    ReplyBlock

    Ни один.

    Обсуждение

    При удалении каталога, проверки сервера, чтобы видеть, содержит ли это каких-либо потомков. Если каталог содержит потомков, сервер возвращает код результата kFPDirNotEmpty. Если файл, который должен быть удален, открыт каким-либо пользователем, сервер возвращает код результата kFPFileBusy. Дата модификации родительского каталога удаленного файла или каталога назначена к часам серверов.

    У пользователя должен быть поисковый доступ ко всем наследователям кроме родительского каталога файла или каталога, а также доступ для записи к родительскому каталогу. Если каталог удаляется, у пользователя должен также быть поисковый доступ к родительскому каталогу; для файла у пользователя должен также быть доступ для чтения к родительскому каталогу.

    Сервер AFP идентифицирует Сетевую Папку «Удаленные» по имени, и то имя не локализуется в международных версиях Mac OS, потому что это невидимо.

    Таблица 15 перечисляет коды результата для FPDelete команда.

    Таблица 15Result кодирует для FPDelete команда

    Код результата

    Объяснение

    kFPAccessDenied

    Пользователю не требовали, чтобы права доступа использовали эту команду.

    kFPDirNotEmpty

    Каталог не пуст.

    kFPMiscErr

    Ошибка неAFP произошла.

    kFPObjectLocked

    Файлом или каталогом является отмеченный DeleteInhibit.

    kFPObjectNotFound

    Входные параметры не указывают на существующий файл или каталог.

    kFPObjectTypeErr

    Определенный объект был каталогом, не файлом.

    kFPParamErr

    Ссылочный номер сеанса, Объем ID или тип пути неизвестен; путь недопустим.

    kFPVolLocked

    Объем только для чтения.

    Рисунок 24 показывает блок запроса для FPDelete команда.

    Блок рисунка 24Request для FPDelete команда image: ../ART/afp_048.eps
  • Лишает законной силы все экземпляры указанного Идентификатора файла.

    Объявление

    Objective C

    uint8_t CommandCode uint8_t Pad int16_t VolumeID int32_t FileID

    Параметры

    CommandCode

    kFPDeleteID (40).

    Pad

    Байт клавиатуры.

    VolumeID

    Объем ID.

    FileID

    Идентификатор файла, который должен быть удален.

    Result

    kFPNoErr если не произошла никакая ошибка. Посмотрите Таблицу 16 для других возможных кодов результата.

    ReplyBlock

    Ни один.

    Обсуждение

    Эта команда удаляет указанный Идентификатор файла, создававшийся более ранним вызовом к FPCreateID.

    У пользователя должны быть Только для чтения или полномочие Чтения и Доступа для записи использовать эту команду.

    Таблица 16 перечисляет коды результата для FPDeleteID команда.

    Таблица 16Result кодирует для FPDeleteID команда

    Код результата

    Объяснение

    kFPAccessDenied

    Пользователю не требовали, чтобы права доступа использовали эту команду.

    kFPCallNotSupported

    Сервер не поддерживает эту команду.

    kFPIDNotFound

    Идентификатор файла не был найден. (Никакой поток файла не существует.)

    kFPMiscErr

    Ошибка неAFP произошла.

    kFPObjectNotFound

    Конечный файл не существует. Идентификатор файла удален так или иначе.

    kFPObjectTypeErr

    Определенный объект был каталогом, не файлом.

    kFPParamErr

    Ссылочный номер сеанса, Объем ID или тип пути неизвестен; путь является нулем или плохо.

    kFPVolLocked

    Объем только для чтения.

    Рисунок 25 показывает блок запроса для FPDeleteID команда.

    Блок рисунка 25Request для FPDeleteID команда image: ../ART/afp_010.eps

    Доступность

    Осуждаемый. Не используемый OS X клиент AFP. Клиенты AFP OS X предполагают, что все файлы и каталоги присвоили IDs, который уникален и не снова используется, когда удален элемент.

  • Разъединяет старый сеанс и передает его ресурсы новому сеансу.

    Объявление

    Objective C

    uint8_t CommandCode uint8_t Pad int16_t Type int32_t TokenLength string Token

    Параметры

    CommandCode

    kFPDisconnectOldSession (65).

    Pad

    Байт клавиатуры.

    Type

    Всегда нуль (0) в настоящее время.

    TokenLength

    Длина Token.

    Token

    Маркер, предыдущий полученный путем вызова FPGetSessionToken.

    Result

    kFPNoErr если никакая ошибка не произошла, kFPCallNotSupported если сервер не поддерживает эту команду, или kFPMiscErr если ошибка произошла, который не является определенным для AFP.

    ReplyBlock

    Ни один.

    Обсуждение

    Эта команда разъединяет сеанс, идентифицированный Маркерным параметром, полученным путем предыдущего вызова FPGetSessionToken и передает ресурсы старого сеанса к новому сеансу.

    Клиент AFP вызывает эту команду, когда сеанс, который она ранее установила, был непреднамеренно разъединен, она успешно устанавливает новый сеанс, и она в состоянии восстановить состояние предыдущего сеанса. Если клиент AFP не может успешно восстановить состояние предыдущего сеанса, оно должно вызвать эту команду, выйти из системы и сообщить об отказе локальной операционной системе.

    Если клиент AFP успешно восстанавливает состояние предыдущего сеанса, оно должно вызвать эту команду снова для получения нового маркера сеанса.

    Рисунок 26 показывает блок запроса для FPDisconnectOldSession команда.

    Блок рисунка 26Request для FPDisconnectOldSession команда image: ../Art/afp_033.eps
  • Перечисляет содержание каталога.

    Объявление

    Objective C

    uint8_t CommandCode uint8_t Pad int16_t VolumeID int32_t DirectoryID int16_t FileBitmap int16_t DirectoryBitmap int16_t ReqCount int16_t StartIndex int16_t MaxReplySize uint8_t PathType string Pathname

    Параметры

    CommandCode

    kFPEnumerate (9).

    Pad

    Байт клавиатуры.

    VolumeID

    Объем ID.

    DirectoryID

    Идентификатор для каталога для перечисления.

    FileBitmap

    Битовый массив, описывающий параметры, чтобы возвратиться, если перечислимый потомок является файлом. Установите бит, соответствующий каждому желаемому параметру. Этот битовый массив совпадает с FileBitmap параметр FPGetFileDirParms команда и может быть нулем. Для разрядных определений для этого битового массива посмотрите Битовый массив Файла и Каталога.

    DirectoryBitmap

    Битовый массив, описывающий параметры, чтобы возвратиться, если перечислимый потомок является каталогом. Установите бит, соответствующий каждому желаемому параметру. Этот битовый массив совпадает с DirectoryBitmap параметр FPGetFileDirParms команда и может быть нулем. Для разрядных определений для этого битового массива посмотрите Битовый массив Файла и Каталога.

    ReqCount

    Максимальное количество ResultsRecord структуры, для которых должна быть возвращена информация.

    StartIndex

    Индекс потомков каталога.

    MaxReplySize

    Максимальный размер блока ответа.

    PathType

    Тип имен в Pathname. Посмотрите Константы Типа тракта для возможных значений.

    Pathname

    Путь к желаемому каталогу. Pathname строка, если она содержит Короткие или Длинные Имена или AFPName, если она содержит путь UTF-8–encoded. Посмотрите раздел Character Encoding Понятий файлового протокола Apple в Руководстве по программированию файлового протокола Apple для дополнительных подробных данных о UTF-8 кодирование используемого AFP.

    Result

    kFPNoErr если не произошла никакая ошибка. Посмотрите Таблицу 17 для других возможных кодов результата.

    ReplyBlock

    Если код результата kFPNoErr, сервер возвращает блок ответа. Посмотрите Таблицу 18 для формата блока ответа.

    Обсуждение

    Эта команда перечисляет каталог, как указано входными параметрами. Эта команда отличается от FPEnumerateExt и FPEnumerateExt2 команды в этом, это не в состоянии обработать значения, которые могут быть возвращены, когда объемы больше, чем 4 ГБ в размере.

    Если FileBitmap является нулевым, только потомки каталога перечисляются, и StartIndex может колебаться от одного до общего количества потомков каталога. Точно так же, если DirectoryBitmap является нулевым, только потомки файла перечисляются, и StartIndex может колебаться от одного до общего количества потомков файла. Если обоим битовым массивам установили биты, StartIndex может колебаться от одного до общего количества потомков. В этом случае структуры потомков и для файлов и для каталогов возвращаются. Эти структуры не возвращаются ни в каком определенном порядке.

    Эта команда завершается когда число структур, указанных ReqCount был вставлен в блок ответа, когда блок ответа полон, или когда больше потомков не существует, чтобы быть перечисленным. Никакие частичные структуры потомков не возвращаются.

    Сервер получает указанные параметры для каждого перечислимого потомка и упаковывает их, в растровом порядке, в структурах в блоке ответа. Сервер вставляет одну копию входных битовых массивов передо всеми структурами.

    Сервер должен сохранить параметры переменной длины, такие как Длинное Имя и Краткое название, в конце каждой структуры. Чтобы сделать это, сервер представляет параметры переменной длины в растровом порядке, поскольку фиксированная длина смещает (целые числа). Каждое смещение измеряется от запуска параметров в каждой структуре (не от запуска битового массива или запуска байтов заголовка) к запуску параметра переменной длины. Каждая структура дополняется (снабженная суффиксом) нулевой байт при необходимости для создания его длины даже.

    Если эта команда возвращает код результата kFPNoErr, все структуры в блоке ответа допустимы. Если какой-либо ошибочный код результата возвращается, никакие допустимые структуры потомков не находятся в блоке ответа.

    Если бит количества Offspring в битовом массиве каталога установлен, сервер корректирует количество Offspring каждого каталога для отражения прав доступа, которые пользователь имеет к тому каталогу. Например, если определенный каталог содержит три файла и двух потомков каталога, сервер возвращает количество Offspring как 2, если у пользователя есть только поисковый доступ к каталогу, 3, если у пользователя есть только доступ для чтения к каталогу, или 5, если у пользователя есть и поисковый и доступ для чтения к каталогу.

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

    Перечисление большого каталога может потребовать отправки нескольких FPEnumerate команды. В течение того времени другие пользователи могут добавить к или удалить из каталога, таким образом, перечисление может скучать по потомкам или возвратить двойных потомков. Для перечисления каталога точно перечислите до a kFPObjectNotFound код результата возвращается, и затем отфильтруйте двойные записи.

    Данный потомок, как гарантируют, не займет тот же индекс в родительском каталоге от одного перечисления до следующего.

    Таблица 17 перечисляет коды результата для FPEnumerate команда.

    Таблица 17Result кодирует для FPEnumerate команда

    Код результата

    Объяснение

    kFPAccessDenied

    Пользователю не требовали, чтобы права доступа использовали эту команду.

    kFPBitmapErr

    Попытка была предпринята для получения параметра, который не может быть получен этой командой, была предпринята попытка для получения Каталога ID для каталога на переменном Каталоге объем ID, или оба битовых массива пусты.

    kFPDirNotFound

    Входные параметры не указывают на существующий каталог.

    kFPMiscErr

    Ошибка неAFP произошла.

    kFPObjectNotFound

    Больше потомков не существует, чтобы быть перечисленным.

    kFPObjectTypeErr

    Входные параметры указывают на файл.

    kFPParamErr

    Ссылочный номер сеанса, Объем, ID или тип пути неизвестен, путь, плох, или MaxReplySize является слишком маленьким для содержания единственной структуры потомков.

    Таблица 18 описывает блок ответа для FPEnumerateкоманда.

    Блок Table 18Reply для FPEnumerate команда

    Имя и размер

    Данные

    FileBitmap (int16_t)

    Копия входного параметра.

    DirectoryBitmap (int16_t)

    Копия входного параметра.

    ActualCount (int16_t)

    Фактическое число ResultsRecord структуры возвратились.

    Нуль или больше ResultsRecord структуры

    Массив ResultsRecord структуры, состоящие из следующих полей: StructLength (uint8_t) — Длина без знака этой структуры, включая этот байт и байт для FileDir бит. FileDir (бит) — Флаг, указывающий, ли OffspringParameters поле описывает файл (0) или каталог (1). OffspringParameters — Упакованный в растровом порядке, с запаздывающим нулевым байтом при необходимости для создания длины всей структуры четным числом.

    Рисунок 27 показывает запрос и блоки ответа для FPEnumerate команда.

    Рисунок 27Request и ответ блокируют для FPEnumerate команда image: ../Art/afp_029.eps

    Доступность

    Осуждаемый. Использовать

  • Перечисляет содержание каталога.

    Объявление

    Objective C

    uint8_t CommandCode uint8_t Pad int16_t VolumeID int32_t DirectoryID int16_t FileBitmap int16_t DirectoryBitmap int16_t ReqCount int16_t StartIndex int16_t MaxReplySize uint8_t PathType string Pathname

    Параметры

    CommandCode

    kFPEnumerateExt (66).

    Pad

    Байт клавиатуры.

    VolumeID

    Объем ID.

    DirectoryID

    Идентификатор для каталога для перечисления.

    FileBitmap

    Битовый массив, описывающий параметры, чтобы возвратиться, если перечислимый потомок является файлом. Установите бит, соответствующий каждому желаемому параметру. Этот битовый массив совпадает с FileBitmap параметр FPGetFileDirParms команда и может быть нулем. Для разрядных определений для этого битового массива посмотрите Битовый массив Файла и Каталога.

    DirectoryBitmap

    Битовый массив, описывающий параметры, чтобы возвратиться, если перечислимый потомок является каталогом. Установите бит, соответствующий каждому желаемому параметру. Этот битовый массив совпадает с DirectoryBitmap параметр FPGetFileDirParms команда и может быть нулем. Для разрядных определений для этого битового массива посмотрите Битовый массив Файла и Каталога.

    ReqCount

    Максимальное количество ResultsRecord структуры, для которых должна быть возвращена информация.

    StartIndex

    Индекс потомков каталога.

    MaxReplySize

    Максимальный размер блока ответа.

    PathType

    Тип имен в Pathname. Посмотрите Константы Типа тракта для возможных значений.

    Pathname

    Путь к желаемому каталогу. Pathname строка, если она содержит Короткие или Длинные Имена или AFPName, если она содержит путь UTF-8–encoded. Посмотрите раздел Character Encoding Понятий файлового протокола Apple в Руководстве по программированию файлового протокола Apple для дополнительных подробных данных о UTF-8 кодирование используемого AFP.

    Result

    kFPNoErr если не произошла никакая ошибка. Посмотрите Таблицу 19 для других возможных кодов результата.

    ReplyBlock

    Если код результата kFPNoErr, сервер возвращает блок ответа. Посмотрите Таблицу 20 для формата блока ответа.

    Обсуждение

    Эта команда перечисляет каталог, как указано входными параметрами. Эта команда отличается от FPEnumerate команда в той этой команде подготовлена обработать значения, которые могут быть возвращены, когда объемы больше, чем 4 ГБ в размере. Эта команда также отличается от FPEnumerateExt2 команда в том, который StartIndex и MaxReplySize int16_t значения (вместо int32_t), который может ограничить число записей в единственном каталоге, который может быть перечислен. Блок ответа для этой команды совпадает с блоком ответа для FPEnumerateExt2.

    Если FileBitmap является нулевым, только потомки каталога перечисляются, и StartIndex может колебаться от одного до общего количества потомков каталога. Точно так же, если DirectoryBitmap является нулевым, только потомки файла перечисляются, и StartIndex может колебаться от одного до общего количества потомков файла. Если обоим битовым массивам установили биты, StartIndex может колебаться от одного до общего количества потомков. В этом случае структуры потомков и для файлов и для каталогов возвращаются. Эти структуры не возвращаются ни в каком определенном порядке.

    Эта команда завершается когда число структур, указанных ReqCount был вставлен в блок ответа, когда блок ответа полон, или когда больше потомков не существует, чтобы быть перечисленным. Никакие частичные структуры потомков не возвращаются.

    Сервер получает указанные параметры для каждого перечислимого потомка и упаковывает их, в растровом порядке, в структурах в блоке ответа. Сервер вставляет одну копию входных битовых массивов передо всеми структурами.

    Сервер должен сохранить параметры переменной длины, такие как Длинное Имя и Краткое название, в конце каждой структуры. Чтобы сделать это, сервер представляет параметры переменной длины в растровом порядке, поскольку фиксированная длина смещает (целые числа). Каждое смещение измеряется от запуска параметров в каждой структуре (не от запуска битового массива или запуска байтов заголовка) к запуску параметра переменной длины. Каждая структура будет дополнена (снабженная суффиксом) нулевой байт при необходимости для создания его длины даже.

    Если kFPNoErr возвращается, все структуры в блоке ответа допустимы. Если какой-либо ошибочный код результата возвращается, никакие допустимые структуры потомков не существуют в блоке ответа.

    Если бит количества Offspring в битовом массиве каталога установлен, сервер корректирует количество Offspring каждого каталога для отражения, какие права доступа пользователь имеет к тому каталогу. Например, если определенный каталог будет содержать три файла и двух потомков каталога, то сервер возвратит свое количество Потомков как 2, если у пользователя будет только поисковый доступ к каталогу, 3, если у пользователя есть только доступ для чтения к каталогу, или 5, если у пользователя есть и поисковый и доступ для чтения к каталогу.

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

    Перечисление большого каталога может потребовать отправки нескольких FPEnumerateExt команды. В течение того времени другие пользователи могут добавить к или удалить из каталога, таким образом, перечисление может скучать по потомкам или возвратить двойных потомков. Для перечисления каталога точно перечислите до a kFPObjectNotFound код результата возвращается, и затем отфильтруйте двойные записи.

    Данный потомок, как гарантируют, не займет тот же индекс в родительском каталоге от одного перечисления до следующего.

    Таблица 19 перечисляет коды результата для FPEnumerateExt команда.

    Таблица 19Result кодирует для FPEnumerateExt команда

    Код результата

    Объяснение

    kFPAccessDenied

    Пользователю не требовали, чтобы права доступа использовали эту команду.

    kFPBitmapErr

    Попытка была предпринята для получения параметра, который не может быть получен этой командой, была предпринята попытка для получения Каталога ID для каталога на переменном Каталоге объем ID, или оба битовых массива пусты.

    kFPDirNotFound

    Входные параметры не указывают на существующий каталог.

    kFPMiscErr

    Ошибка неAFP произошла.

    kFPObjectNotFound

    Больше потомков не существует, чтобы быть перечисленным.

    kFPObjectTypeErr

    Входные параметры указывают на файл.

    kFPParamErr

    Ссылочный номер сеанса, Объем, ID или тип пути неизвестен, путь, плох, или MaxReplySize является слишком маленьким для содержания единственной структуры потомков.

    Таблица 20 описывает блок ответа для FPEnumerateExt команда.

    Блок Table 20Reply для FPEnumerateExt команда

    Имя и размер

    Данные

    DirectoryBitmap (int16_t)

    Копия входного параметра.

    ActualCount (int16_t)

    Фактическое число ResultsRecord структуры возвратились.

    Нуль или больше ResultsRecord структуры

    Массив ResultsRecord структура, состоящая из следующих полей:

    StructLength (uint8_t) — Длина без знака этой структуры, включая этот байт, байт, содержащий FileDir бит.

    FileDir (бит) — Флаг, указывающий, ли OffspringParameters поле описывает файл (0) или каталог (1).

    Pad (uint8_t) — Всегда нуль.

    OffspringParameters — Упакованный в растровом порядке, с запаздывающим нулевым байтом при необходимости для создания длины всей структуры четным числом.

    Рисунок 28 показывает запрос и блоки ответа для FPEnumerateExt команда.

    Рисунок 28Request и ответ блокируют для FPEnumerateExt команда image: ../Art/afp_049.eps

    Доступность

    Осуждаемый. Использовать

  • Перечисляет содержание каталога.

    Объявление

    Objective C

    uint8_t CommandCode uint8_t Pad int16_t VolumeID int32_t DirectoryID int16_t FileBitmap int16_t DirectoryBitmap int16_t ReqCount int32_t StartIndex int32_t MaxReplySize uint8_t PathType string Pathname

    Параметры

    CommandCode

    kFPEnumerateExt2 (68).

    Pad

    Байт клавиатуры.

    VolumeID

    Объем ID.

    DirectoryID

    Идентификатор для каталога для перечисления.

    FileBitmap

    Битовый массив, описывающий параметры, чтобы возвратиться, если перечислимый потомок является файлом. Установите бит, соответствующий каждому желаемому параметру. Этот битовый массив совпадает с FileBitmap параметр FPGetFileDirParms команда и может быть нулем. Для разрядных определений для этого битового массива посмотрите Битовый массив Файла и Каталога.

    DirectoryBitmap

    Битовый массив, описывающий параметры, чтобы возвратиться, если перечислимый потомок является каталогом. Установите бит, соответствующий каждому желаемому параметру. Этот битовый массив совпадает с DirectoryBitmap параметр FPGetFileDirParms команда и может быть нулем. Для разрядных определений для этого битового массива посмотрите Битовый массив Файла и Каталога.

    ReqCount

    Максимальное количество ResultsRecord структуры, для которых должна быть возвращена информация.

    StartIndex

    Индекс потомков каталога.

    StartIndex

    Максимальный размер блока ответа.

    PathType

    Тип имен в Pathname. Посмотрите Константы Типа тракта для возможных значений.

    Pathname

    Путь к желаемому каталогу. Pathname строка, если она содержит Короткие или Длинные Имена или AFPName, если она содержит путь UTF-8–encoded. Посмотрите раздел Character Encoding Понятий файлового протокола Apple в Руководстве по программированию файлового протокола Apple для дополнительных подробных данных о UTF-8 кодирование используемого AFP.

    Result

    kFPNoErr если не произошла никакая ошибка. Посмотрите Таблицу 21 для других возможных кодов результата.

    ReplyBlock

    Если код результата kFPNoErr, сервер возвращает блок ответа. Посмотрите Таблицу 22 для формата блока ответа.

    Обсуждение

    Эта команда перечисляет каталог, как указано входными параметрами. Эта команда отличается от FPEnumerateExt команда в этом StartIndex и MaxReplySize int32_t значения вместо int16_t, таким образом позволяя этой команде перечислить больше записей в единственном каталоге. Блок ответа для этой команды совпадает с блоком ответа для FPEnumerateExt команда.

    Если FileBitmap является нулевым, только потомки каталога перечисляются, и StartIndex может колебаться от одного до общего количества потомков каталога. Точно так же, если DirectoryBitmap является нулевым, только потомки файла перечисляются, и StartIndex может колебаться от одного до общего количества потомков файла. Если обоим битовым массивам установили биты, StartIndex может колебаться от одного до общего количества потомков. В этом случае структуры потомков и для файлов и для каталогов возвращаются. Эти структуры не возвращаются ни в каком определенном порядке.

    Эта команда завершается когда число структур, указанных ReqCount был вставлен в блок ответа, когда блок ответа полон, или когда больше потомков не существует, чтобы быть перечисленным. Никакие частичные структуры потомков не возвращаются.

    Сервер получает указанные параметры для каждого перечислимого потомка и упаковывает их, в растровом порядке, в структурах в блоке ответа. Сервер вставляет одну копию входных битовых массивов передо всеми структурами.

    Сервер должен сохранить параметры переменной длины, такие как Длинное Имя и Краткое название, в конце каждой структуры. Чтобы сделать это, сервер представляет параметры переменной длины в растровом порядке, поскольку фиксированная длина смещает (целые числа). Каждое смещение измеряется от запуска параметров в каждой структуре (не от запуска битового массива или запуска байтов заголовка) к запуску параметра переменной длины. Каждая структура будет дополнена (снабженная суффиксом) нулевой байт при необходимости для создания его длины даже.

    Если kFPNoErr возвращается, все структуры в блоке ответа допустимы. Если какой-либо ошибочный код результата возвращается, никакие допустимые структуры потомков не существуют в блоке ответа.

    Если бит количества Offspring в битовом массиве каталога установлен, сервер корректирует количество Offspring каждого каталога для отражения, какие права доступа пользователь имеет к тому каталогу. Например, если определенный каталог будет содержать три файла и двух потомков каталога, то сервер возвратит свое количество Потомков как 2, если у пользователя будет только поисковый доступ к каталогу, 3, если у пользователя есть только доступ для чтения к каталогу, или 5, если у пользователя есть и поисковый и доступ для чтения к каталогу.

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

    Перечисление большого каталога может потребовать отправки нескольких FPEnumerateExt2 команды. В течение того времени другие пользователи могут добавить к или удалить из каталога, таким образом, перечисление может скучать по потомкам или возвратить двойных потомков. Для перечисления каталога точно перечислите до a kFPObjectNotFound код результата возвращается, и затем отфильтруйте двойные записи.

    Данный потомок, как гарантируют, не займет тот же индекс в родительском каталоге от одного перечисления до следующего.

    Таблица 21 перечисляет коды результата для FPEnumerateExt2 команда.

    Таблица 21Result кодирует для FPEnumerateExt2 команда

    Код результата

    Объяснение

    kFPAccessDenied

    Пользователю не требовали, чтобы права доступа использовали эту команду.

    kFPBitmapErr

    Попытка была предпринята для получения параметра, который не может быть получен этой командой, была предпринята попытка для получения Каталога ID для каталога на переменном Каталоге объем ID, или оба битовых массива пусты.

    kFPDirNotFound

    Входные параметры не указывают на существующий каталог.

    kFPMiscErr

    Ошибка неAFP произошла.

    kFPObjectNotFound

    Больше потомков не существует, чтобы быть перечисленным.

    kFPObjectTypeErr

    Входные параметры указывают на файл.

    kFPParamErr

    Ссылочный номер сеанса, Объем, ID или тип пути неизвестен, путь, плох, или MaxReplySize является слишком маленьким для содержания единственной структуры потомков.

    Таблица 22 описывает блок ответа для FPEnumerateExt2 команда.

    Блок Table 22Reply для FPEnumerateExt2 команда

    Имя и размер

    Данные

    FileBitmap (int16_t)

    Копия входного параметра.

    DirectoryBitmap (int16_t)

    Копия входного параметра.

    ActualCount (int16_t)

    Фактическое число ResultsRecord структуры возвратились.

    Нуль или больше ResultsRecord структуры

    Массив ResultsRecord структуры, каждый состоящий из следующих полей: StructLength (uint8_t) — Длина без знака этой структуры, включая этот байт и байт для FileDir бит. FileDir (бит) — Флаг, указывающий, ли OffspringParameters поле описывает файл (0) или каталог (1). Клавиатура (uint8_t) — Всегда нуль. OffspringParameters — Упакованный в растровом порядке, с запаздывающим нулевым байтом при необходимости для создания длины всей структуры четным числом.

    Рисунок 29 показывает запрос и блоки ответа для FPEnumerateExt2 команда.

    Рисунок 29Request и ответ блокируют для FPEnumerateExt2 команда image: ../Art/afp_085.eps
  • Метаданные файла обменов между двумя файлами.

    Объявление

    Objective C

    uint8_t CommandCode uint8_t Pad int16_t VolumeID int32_t SourceDirectoryID int32_t DestDirectoryID uint8_t SourcePathType string SourcePathname uint8_t DestPathType string DestPathname

    Параметры

    CommandCode

    kFPExchangeFiles (42).

    Pad

    Байт клавиатуры.

    VolumeID

    Объем ID.

    SourceDirectoryID

    Идентификатор каталога, содержащего исходный файл.

    DestDirectoryID

    Идентификатор каталога, содержащего целевой файл.

    SourcePathType

    Тип имен в SourcePathname. Посмотрите Константы Типа тракта для возможных значений.

    SourcePathname

    Путь исходного файла. SourcePathname строка, если она содержит Короткие или Длинные Имена или AFPName, если она содержит путь UTF-8–encoded.

    DestPathType

    Тип имен в DestPathname. Посмотрите Константы Типа тракта для возможных значений.

    DestPathname

    Путь исходного файла. DestPathname строка, если она содержит Короткие или Длинные Имена или AFPName, если она содержит путь UTF-8–encoded.

    Result

    kFPNoErr если не произошла никакая ошибка. Посмотрите Таблицу 23 для других возможных кодов результата.

    ReplyBlock

    Ни один.

    Обсуждение

    Эта команда атомарно обменивается всеми метаданными файловой системы (имя файла, идентификатор файла, информация о безопасности, и т.д.) между двумя файлами. Рекомендуемый способ выполнить операцию "Save" или "Save as" на файле на сервере AFP состоит в том, чтобы записать новый файл, затем отправить FPExchangeFiles команда для обмена новым файлом с оригиналом.

    Для использования этой команды оба файла должны существовать на том же объеме.

    Файлы, которыми обмениваются, могут быть открыты или закрыты. Если файлы являются открытыми, существующими ссылками на любой файл, эффективно становятся ссылками на другой файл. Таким образом чтения и записи продолжают видеть те же данные как прежде, но fstat и подобные операции возвращают различные результаты.

    Если Вы открываете любой файл после вызова FPExchangeFiles, с точки зрения Вашего приложения кажется, что содержание этих двух файлов было подкачано (хотя это не точно, что произошло).

    Рисунок 30 показывает результаты валютной операции между двумя файлами под названием Синий и Красный цвет.

    Рисунок 30Example обмена файлами image: ../ART/afp_012.eps

    Заметьте, что только обмениваются именем файла, Родительский каталог ID, Идентификатор файла и даты создания. Блокировки диапазона байта и отклоняют режимы, все еще применяются к тому же числу ссылки на файл и данным.

    У пользователя должно быть полномочие Чтения и Записи для обоих файлов для использования этой команды.

    Таблица 23 перечисляет коды результата для FPExchangeFiles команда.

    Таблица 23Result кодирует для FPExchangeFiles команда

    Код результата

    Объяснение

    kFPAccessDenied

    Пользователю не требовали, чтобы права доступа использовали эту команду.

    kFPBadIDErr

    Идентификатор файла не допустим.

    kFPCallNotSupported

    Сервер не поддерживает эту команду.

    kFPIDNotFound

    Идентификатор файла не был найден. (Никакой поток файла не существует.)

    kFPMiscErr

    Ошибка неAFP произошла.

    kFPObjectTypeErr

    Определенный объект был каталогом, не файлом.

    kFPParamErr

    Ссылочный номер сеанса, Объем ID или тип пути неизвестен; путь является нулем или плохо.

    Рисунок 31 показывает блок запроса для FPExchangeFiles команда.

    Блок рисунка 31Request для FPExchangeFiles команда image: ../ART/afp_013.eps

    Посмотрите раздел Character Encoding Понятий файлового протокола Apple в Руководстве по программированию файлового протокола Apple для дополнительных подробных данных о UTF-8 кодирование используемого AFP.

  • Записи любые измененные данные объема.

    Объявление

    Objective C

    uint8_t CommandCode uint8_t Pad int16_t VolumeID

    Параметры

    CommandCode

    kFPFlush (10).

    Pad

    Байт клавиатуры.

    VolumeID

    Объем ID.

    Result

    kFPNoErr если никакая ошибка не произошла, kFPParamErr если ссылочный номер сеанса или Объем ID недопустимы, или kFPMiscErr если ошибка произошла, который не является определенным для AFP.

    ReplyBlock

    Ни один.

    Обсуждение

    Эта команда пишет в диск максимально максимально изменил информацию включая

    • все ветвления открылись пользователем

    • информация о каталоге объема изменилась пользователем

    • любые обновленные структуры данных объема

    AFP не указывает, что сервер должен выполнить все эти функции. Поэтому пользователи не должны полагаться на сервер для выполнения любой определенной функции.

    Дата модификации объема может измениться в результате этой команды, но использование не должно полагаться на него; обновление даты является зависящим от реализации. Если никакая информация об объеме не была изменена начиная с последнего FPFlush команда, дата может или может не измениться.

    Заметьте, что только обмениваются именем файла, Родительский каталог ID, Идентификатор файла и даты создания. Блокировки диапазона байта и отклоняют режимы, все еще применяются к тому же числу ссылки на файл и данным.

    У пользователя должно быть полномочие Чтения и Записи для обоих файлов для использования этой команды.

    Рисунок 32 показывает блок запроса для FPFlush команда.

    Блок рисунка 32Request для FPFlush команда image: ../ART/afp_050.eps
  • Записи любые данные буферизуются от предыдущих команд записи.

    Объявление

    Objective C

    uint8_t CommandCode uint8_t Pad int16_t OForkRefNum

    Параметры

    CommandCode

    kFPFlushFork (11).

    Pad

    Байт клавиатуры.

    OForkRefNum

    Открытый ссылочный номер ветвления.

    Result

    kFPNoErr если никакая ошибка не произошла, kFPParamErr если ссылочный номер сеанса или Объем ID недопустимы, или kFPMiscErr если ошибка произошла, который не является определенным для AFP.

    ReplyBlock

    Ни один.

    Обсуждение

    Эта команда пишет в диск любые данные, буферизованные сервером предыдущими командами записи. Если ветвление было изменено, набор сервера дата модификации файла к часам сервера.

    Для оптимизации доступа к диску сервер может буферизовать команды записи, сделанные к определенному ветвлению файла. В ограничениях производительности сервер сбрасывает каждое ветвление как можно скорее. Путем отправки этой команды клиент AFP может вынудить сервер записать любые буферизированные данные.

    Рисунок 33 показывает блок запроса для FPFlushFork команда.

    Блок рисунка 33Request для FPFlushFork команда image: ../ART/afp_051.eps
  • Получает список управления доступом для файла или каталога.

    Объявление

    Objective C

    uint8_t CommandCode uint8_t Pad int16_t VolumeID int32_t DirectoryID uint16_t Bitmap int32_t MaxReplySize uint8_t Pathtype string Pathname

    Параметры

    CommandCode

    kFPGetACL (73).

    Pad

    Байт клавиатуры.

    VolumeID

    Идентификатор объема.

    DirectoryID

    Идентификатор каталога.

    Bitmap

    Биты, указывающие значения, которые должны быть получены. Указать kFileSec_UUID получить UUID указанного файла или каталога. Указать kFileSec_GRPUUID получить Группу UUID указанного файла или каталога. Указать kFileSec_ACL получить ACL указанного файла или каталога. Для объявлений этих констант посмотрите Битовый массив Списка управления доступом.

    MaxReplySize

    Зарезервированный. Обнулите этот параметр.

    PathType

    Тип имен в Pathname. Посмотрите Константы Типа тракта для возможных значений.

    Pathname

    Путь файла или каталога, для которого должен быть получен список управления доступом (ACL). Pathname строка, если она содержит Короткие или Длинные Имена или AFPName, если она содержит путь UTF-8–encoded. Посмотрите раздел Character Encoding Понятий файлового протокола Apple в Руководстве по программированию файлового протокола Apple для дополнительных подробных данных о UTF-8 кодирование используемого AFP.

    Result

    kFPNoErr если не произошла никакая ошибка. Посмотрите Таблицу 24 для других возможных кодов результата.

    ReplyBlock

    Если код результата kFPNoErr, сервер возвращает блок ответа. Посмотрите Таблицу 26 для формата блока ответа.

    Обсуждение

    В зависимости от набора битов Bitmap параметр, эта команда получает UUID, Группу UUID или ACL для указанного файла или каталога. Если kFileSec_UUID бит установлен, UUID файла или каталога кажется первым в ответном пакете. Если kFileSec_GRPUUID бит установлен, Группа файла или каталога, UUID появляется затем в ответном пакете. Если kFileSec_ACL бит установлен, ACL файла или каталога появляется затем в пакете.

    Поддержка этой команды, а также FPAccess и FPSetACL требуется чтобы к контрольным спискам доступа к поддержке (ACLs). Поддержка UTF-8 и UUIDs также требуется для поддержки ACLs. Посмотрите раздел Character Encoding Понятий файлового протокола Apple в Руководстве по программированию файлового протокола Apple для дополнительных подробных данных о UTF-8 кодирование используемого AFP.

    Таблица 24 перечисляет коды результата для FPGetACL команда.

    Таблица 24Result кодирует для FPGetACL команда

    Код результата

    Объяснение

    kFPAccessDenied

    Пользователю не требовали, чтобы права доступа получили ACL для указанного файла или каталога.

    kFPMiscErr

    Ошибка неAFP произошла.

    kFPObjectNotFound

    Входные параметры не указывают на существующий файл или каталог.

    kFPParamErr

    Параметр недопустим.

    Таблица 25 описывает блок ответа для FPGetACL команда.

    Блок Table 25Reply для FPGetACL команда

    Имя и размер

    Данные

    Bitmap (int16_t)

    Копия битового массива отправила к серверу.

    UUID (16 байтов)

    UUID файла или каталога, если kFileSec_UUID бит был установлен.

    GRPUUID (16 байтов)

    Группа файла или каталога UUID, если kFileSec_GRPUUID бит был установлен.

    ACL

    ACL файла или каталога в a kauth_acl структура, если kFileSec_ACL бит был установлен. Для получения дополнительной информации посмотрите Access Control List Structure.

    Рисунок 34 показывает запрос и блоки ответа для FPGetACL команда.

    Рисунок 34Request и ответ блокируют для FPGetACL команда image: ../ART/afp_FPGetACL.eps
  • FPGetAPPL FPGetAPPL Осуждаемый в OS X v.10.6

    Получает APPL, отображающийся от базы данных Desktop объема.

    Объявление

    Objective C

    uint8_t CommandCode uint8_t Pad int16_t DTRefNum int32_t FileCreator int16_t APPLIndex

    Параметры

    CommandCode

    kFPGetAPPL (55).

    Pad

    Байт клавиатуры.

    DTRefNum

    Настольное число ссылки на базу данных.

    FileCreator

    Создатель файла приложения, соответствующего APPL, отображающемуся, чтобы быть полученным.

    APPLIndex

    Индекс APPL, отображающегося, чтобы быть полученным.

    Result

    kFPNoErr если никакая ошибка не произошла, kFPParamErr если ссылочный номер сеанса или Настольная ссылка на базу данных неизвестны, kFPItemNotFound если никакие записи в базе данных Desktop не соответствуют входные параметры, kFPBitmapErr если была предпринята попытка для получения параметра, который не может быть получен с этой командой, или kFPMiscErr если ошибка произошла, который не является определенным для AFP.

    ReplyBlock

    Если код результата kFPNoErr, сервер возвращает блок ответа. Посмотрите Таблицу 26 для формата блока ответа.

    Обсуждение

    Для каждого создателя файла база данных Desktop содержит список отображений APPL. Каждое отображение APPL содержит Родительский каталог ID и имя CNode приложения, связанного с создателем файла, а также Тегом APPL, который может использоваться для различения среди отображений APPL (Тег APPL не интерпретируется базой данных Desktop).

    Информация о файле приложения, связанном с каждым отображением APPL, может быть получена путем отправки последовательный FPGetAPPL команды с Index варьирование от одного до общего количества отображений APPL сохранено в базе данных Desktop для того создателя файла. Если Index больше, чем число отображений APPL в базе данных Desktop для FileCreator, a kFPItemNotFound код результата возвращается. Index из нулевых возвратов первое отображение APPL, если Вы существуете в базе данных Desktop.

    Сервер получает указанные параметры для файла приложения и упаковывает, в растровом порядке, в блоке ответа.

    У пользователя должен быть поисковый доступ ко всем наследователям кроме родительского каталога и доступа для чтения к родительскому каталогу приложения, для которого будет возвращена информация.

    Пользователь, должно быть, ранее вызвал FPOpenDT для соответствующего объема.

    Таблица 26 описывает блок ответа для FPGetAPPL команда.

    Блок Table 26Reply для FPGetAPPL команда

    Имя и размер

    Данные

    Bitmap (int16_t)

    Битовый массив, описывающий параметры файла приложения для возврата. Установите бит, соответствующий каждому желаемому параметру. Этот битовый массив совпадает с FileBitmap параметр FPGetFileDirParms команда. Для разрядных определений для битового массива Файла посмотрите Таблицу 1-7 в Битовом массиве Файла и Каталога.

    APPLTag (int32_t)

    Данные меток связались с отображением APPL.

    FileParameters

    Требуемые параметры файла.

    Рисунок 35 показывает запрос и блоки ответа для FPGetAPPL команда.

    Рисунок 35Request и ответ блокируют для FPGetAPPL команда image: ../ART/afp_052.eps

    Доступность

    Осуждаемый в OS X v.10.6.

  • Получает UAMs, который поддерживает домен Open Directory.

    Объявление

    Objective C

    uint8_t CommandCode uint8_t Pad uint8_t Flags uint8_t PathType string Pathname

    Параметры

    CommandCode

    kFPGetAuthMethods (62).

    Pad

    Байт клавиатуры.

    Flags

    Флаги, предоставляющие дополнительную информацию. (Никакие флаги в настоящее время не определяются.)

    PathType

    Тип имен в Pathname. Посмотрите Константы Типа тракта для возможных значений.

    Pathname

    Путь домена Open Directory, для которого должны быть получены UAMs. Pathname строка, если она содержит Короткие или Длинные Имена или AFPName, если она содержит путь UTF-8–encoded. Посмотрите раздел Character Encoding Понятий файлового протокола Apple в Руководстве по программированию файлового протокола Apple для дополнительных подробных данных о UTF-8 кодирование используемого AFP.

    Result

    kFPNoErr если никакая ошибка не произошла, kFPObjectNotFound если указанный домен Open Directory не мог бы быть найден, или kFPMiscErr если ошибка произошла, который не является определенным для AFP.

    ReplyBlock

    Если код результата kFPNoErr, сервер возвращает блок ответа. Посмотрите Таблицу 27 для формата блока ответа.

    Обсуждение

    Эта команда получает UAMs для указанного домена Open Directory.

    Таблица 27 описывает блок ответа для FPGetAuthMethods команда.

    Блок Table 27Reply для FPGetAuthMethods команда

    Flags (uint8_t)

    Копия Флагов ввела параметр.

    Count (uint8_t)

    Число следующих UAMs.

    UAMStrings (упакованные строки Паскаля)

    Упакованные строки Паскаля, содержащие имена доступного UAMs

    Рисунок 36 показывает запрос и блоки ответа для FPGetAuthMethods команда.

    Рисунок 36Request и ответ блокируют для FPGetAuthMethods команда image: ../ART/afp_028.eps

    Доступность

    Осуждаемый.

  • FPGetComment FPGetComment Осуждаемый в OS X v.10.6

    Связали комментарий с файлом или каталогом от базы данных Desktop объема.

    Объявление

    Objective C

    uint8_t CommandCode uint8_t Pad int16_t DTRefNum int32_t DirectoryID uint8_t PathType string Pathname

    Параметры

    CommandCode

    kFPGetComment (58).

    Pad

    Байт клавиатуры.

    DTRefNum

    Настольное число ссылки на базу данных.

    DirectoryID

    Каталог ID.

    PathType

    Тип имен в Pathname. Посмотрите Константы Типа тракта для возможных значений.

    Pathname

    Путь к желаемому файлу или каталогу. Pathname строка, если она содержит Короткие или Длинные Имена или AFPName, если она содержит путь UTF-8–encoded. Посмотрите раздел Character Encoding Понятий файлового протокола Apple в Руководстве по программированию файлового протокола Apple для дополнительных подробных данных о UTF-8 кодирование используемого AFP.

    Result

    kFPNoErr если не произошла никакая ошибка. Посмотрите Таблицу 28 для других возможных кодов результата.

    ReplyBlock

    Если код результата kFPNoErr, сервер возвращает блок ответа. Блок ответа состоит из строки, вызванной Comment, содержа текст комментария.

    Обсуждение

    Комментарий для указанного файла или каталога, если это найдено в базе данных Desktop объема, возвращается в блоке ответа.

    Если комментарий связан с каталогом, у пользователя должен быть поисковый доступ ко всем наследователям, включая родительский каталог. Если комментарий связан с файлом, у пользователя должен быть поисковый доступ ко всем наследователям кроме родительского каталога и доступа для чтения к родительскому каталогу.

    Пользователь, должно быть, ранее вызвал FPOpenDT для соответствующего объема. Кроме того, файл или каталог должен существовать, прежде чем эта команда отправляется.

    Таблица 28 перечисляет коды результата для FPGetComment команда.

    Таблица 28Result кодирует для FPGetComment команда

    Код результата

    Объяснение

    kFPAccessDenied

    Пользователю не требовали, чтобы права доступа использовали эту команду.

    kFPItemNotFound

    Никакой комментарий не был найден в базе данных Desktop.

    kFPParamErr

    Ссылочный номер сеанса или Настольное число ссылки на базу данных неизвестны.

    kFPObjectNotFound

    Входные параметры действительно указывают на существующий файл или каталог.

    kFPMiscErr

    Ошибка неAFP произошла.

    Рисунок 37 показывает запрос и блоки ответа для FPGetComment команда.

    Рисунок 37Request и ответ блокируют для FPGetComment команда image: ../ART/afp_053.eps

    Доступность

    Осуждаемый в OS X v.10.6.

  • Получает значение расширенного атрибута.

    Объявление

    Objective C

    uint8_t CommandCode uint8_t Pad int16_t VolumeID int32_t DirectoryID uint16_t Bitmap int64_t Offset int64_t ReqCount int32_t MaxReplySize uint8_t PathType string Pathname uint8_t Pad uint16_t NameLength string Name

    Параметры

    CommandCode

    kFPGetExtAttr (69).

    Pad

    Байт клавиатуры.

    VolumeID

    Идентификатор объема.

    DirectoryID

    Идентификатор каталога.

    Bitmap

    Битовый массив, указывающий желаемое поведение при получении значения расширенного атрибута. Для этой команды, только kAttrDontFollow допустимо. Для получения дополнительной информации посмотрите “Extended Attributes Bitmap” для подробных данных.

    Offset

    Всегда нуль; зарезервированный для будущего использования.

    ReqCount

    Всегда –1; зарезервированный для будущего использования.

    MaxReplySize

    Размер в байтах ответа, который может обработать Ваше приложение; обнуленный для получения размера ответа, фактически не получая атрибуты.

    PathType

    Тип имен в Pathname. Посмотрите Константы Типа тракта для возможных значений.

    Pathname

    Путь к желаемому файлу или каталогу. Pathname строка, если она содержит Короткие или Длинные Имена или AFPName, если она содержит путь UTF-8–encoded.

    Pad

    Дополнительный байт клавиатуры в случае необходимости для дополнения к ровной границе.

    NameLength

    Длина в байтах следующего расширенного названия атрибута.

    Name

    Имя UTF-8–encoded расширенного атрибута, значение которого должно быть получено.

    Result

    kFPNoErr если не произошла никакая ошибка. Посмотрите Таблицу 29 для других возможных кодов результата.

    ReplyBlock

    Если код результата kFPNoErr, сервер возвращает блок ответа. Блок ответа состоит из битового массива и значения расширенного атрибута, который требовали. Посмотрите Таблицу 30 для формата блока ответа.

    Обсуждение

    Если код результата kFPNoErr, эта команда возвраты в ответе блокирует значение расширенного атрибута, который требовали.

    Если расширенный атрибут является слишком большим для помещений в буфер клиента (как указано MaxReplySize параметр), сервер должен заполнить Bitmap поле, набор DataLength поле к фактическому размеру расширенного атрибута и возврат kFPParamErr.

    Сервер должен возвратиться kFPMiscErr если расширенный атрибут, который требуют, не существует на этом файле.

    Поддержка этой команды, а также FPListExtAttrs, FPRemoveExtAttr и FPSetExtAttr требуется для поддержки расширенных атрибутов. Поддержка UTF-8 также требуется для поддержки расширенных атрибутов.

    Посмотрите раздел Character Encoding Понятий файлового протокола Apple в Руководстве по программированию файлового протокола Apple для дополнительных подробных данных о UTF-8 кодирование используемого AFP.

    Таблица 29 перечисляет возможные коды результата для FPGetExtAttr команда.

    Таблица 29Result кодирует для FPGetExtAttr команда

    Код результата

    Объяснение

    kFPAccessDenied

    Пользователю не требовали, чтобы права доступа получили файл расширенного атрибута для указанного файла или каталога.

    kFPBitmapErr

    Битовый массив является нулем или указывает значение, которое недопустимо для этой команды.

    kFPMiscErr

    Ошибка неAFP произошла. Например, сервер должен возвратиться kFPMiscErr если расширенный атрибут, который требуют, не существует на этом файле.

    kFPObjectNotFound

    Входные параметры не указывают на существующий файл или каталог.

    kFPParamErr

    Параметр недопустим.

    Таблица 30 описывает блок ответа для FPGetExtAttr команда.

    Блок Table 30Reply для FPGetExtAttr команда

    Имя и размер

    Данные

    Bitmap (int16_t)

    Копия входного параметра.

    DataLength (int32_t)

    Длина в байтах следующих расширенных данных атрибута.

    ExtendedAttribute Data (string)

    Расширенные данные атрибута

    Рисунок 37 показывает запрос и блоки ответа для FPGetExtAttr команда.

    Рисунок 38Request и ответ блокируют для FPGetExtAttr команда image: ../ART/afp_FPGetExtAttr.eps
  • Получает параметры для файла или каталога.

    Объявление

    Objective C

    uint8_t CommandCode uint8_t Pad int16_t VolumeID int32_t DirectoryID int16_t FileBitmap int16_t DirectoryBitmap uint8_t PathType string Pathname

    Параметры

    CommandCode

    kFPGetFileDirParms (34).

    Pad

    Байт клавиатуры.

    VolumeID

    Объем ID.

    DirectoryID

    Каталог ID.

    FileBitmap

    Битовый массив, описывающий параметры для возврата для файла. Установите бит, соответствующий каждому желаемому параметру. Для разрядных определений этого битового массива посмотрите Битовый массив Файла и Каталога.

    DirectoryBitmap

    Битовый массив, описывающий параметры для возврата для каталога. Установите бит, соответствующий каждому желаемому параметру. Для разрядных определений этого битового массива посмотрите Битовый массив Файла и Каталога.

    PathType

    Тип имен в Pathname. Посмотрите Константы Типа тракта для возможных значений.

    Pathname

    Путь к желаемому файлу или каталогу. Pathname строка, если она содержит Короткие или Длинные Имена или AFPName, если она содержит путь UTF-8–encoded. Посмотрите раздел Character Encoding Понятий файлового протокола Apple в Руководстве по программированию файлового протокола Apple для дополнительных подробных данных о UTF-8 кодирование используемого AFP.

    Result

    kFPNoErr если не произошла никакая ошибка. Посмотрите Таблицу 31 для других возможных кодов результата.

    ReplyBlock

    Если код результата kFPNoErr, сервер возвращает блок ответа. Посмотрите Таблицу 32 для формата блока ответа.

    Обсуждение

    Сервер упаковывает требуемые параметры в блоке ответа в порядке, указанном надлежащим битовым массивом. FileDir бит указывает, являются ли параметры для файла или каталога. Копия входных битовых массивов вставляется перед параметрами.

    Параметры переменной длины, такие как Длинное Имя и Краткое название, сохранены в конце блока. Чтобы сделать это, сервер представляет параметры переменной длины в растровом порядке, поскольку фиксированная длина смещает (целые числа). Каждое смещение измеряется от запуска параметров (не от запуска битового массива) к запуску параметра переменной длины. Фактические параметры переменной длины тогда упаковываются после всех параметров фиксированной длины.

    Если CNode существует, и оба битовых массива являются нулем, никакая ошибка не возвращается; FileBitmap, DirectoryBitmap, и байт, содержащий FileDir бит возвращается без других параметров.

    Если права доступа каталога требуют, сервер возвращает параметр Прав доступа (четырехбайтовое количество) содержащий чтение, запишите и ищите права доступа, соответствующие владельцу, группе, и всем, а также Пользовательскому Сводному байту Прав доступа, указывающему полномочия, которые текущий пользователь клиента AFP имеет к этому каталогу. Для разрядных определений параметра Прав доступа посмотрите Битовый массив Прав доступа.

    Если бит количества Offspring DirectoryBitmap параметр устанавливается, сервер скорректирует количество Offspring для отражения прав доступа, которые пользователь имеет к тому каталогу. Например, если определенный каталог будет содержать три файла и двух потомков каталога, то сервер возвратит свое количество Потомков как два, если у пользователя будет только поисковый доступ к каталогу, три, если у пользователя есть только доступ для чтения к каталогу, или пять, если у пользователя есть и поисковый и доступ для чтения к каталогу.

    Рисунок 39 показывает файл и битовые массивы каталога, параметры Атрибутов Файла и Каталога и Права доступа для каталогов.

    Рисунок 39Bitmaps, Атрибуты и Права доступа, возвращенные FPGetFileDirParms image: ../Art/afp_078.eps

    У пользователя должен быть поисковый доступ ко всем наследователям кроме родительского каталога этого CNODE. Для каталогов пользователь также должен искать доступ к родительскому каталогу. Для файлов пользователю нужен доступ для чтения к родительскому каталогу.

    Большинство атрибутов, которые требует эта команда, сохранено в соответствующих флагах в Информационной записи Средства поиска CNODE.

    Таблица 31 перечисляет коды результата для FPGetFileDirParms команда.

    Таблица 31Result кодирует для FPGetFileDirParms команда

    Код результата

    Объяснение

    kFPAccessDenied

    Пользователю не требовали, чтобы права доступа использовали эту команду.

    kFPBitmapErr

    Попытка была предпринята для получения параметра, который не может быть получен с этой командой.

    kFPMiscErr

    Ошибка неAFP произошла.

    kFPObjectNotFound

    Входные параметры не указывают на существующий файл или каталог.

    kFPParamErr

    Ссылочный номер сеанса, Объем ID или тип пути неизвестен; путь недопустим.

    Таблица 32 описывает блок ответа для FPGetFileDirParms команда.

    Блок Table 32Reply для FPGetFileDirParms команда

    Имя и размер

    Данные

    FileBitmap (int16_t)

    Копия входного параметра.

    DirectoryBitmap (int16_t)

    Копия входного параметра.

    FileDir (бит)

    Бит, указывающий, является ли CNode файлом или directory:0 = файл 1 = каталог

    ReqParameters

    Требуемые параметры.

    Рисунок 40 показывает запрос и блоки ответа для FPGetFileDirParms команда.

    Рисунок 40Request и ответ блокируют для FPGetFileDirParms команда image: ../Art/afp_054.eps
  • Получает параметры для ветвления.

    Объявление

    Objective C

    uint8_t CommandCode uint8_t Pad int16_t OForkRefNum int16_t Bitmap

    Параметры

    CommandCode

    kFPGetForkParms (14).

    Pad

    Байт клавиатуры.

    OForkRefNum

    Открытый ссылочный номер ветвления.

    Bitmap

    Битовый массив, описывающий параметры, которые будут возвращены. Установите биты, соответствующие каждому желаемому параметру. Этот битовый массив совпадает с FileBitmap параметр FPGetFileDirParms команда. Для разрядных определений для этого битового массива посмотрите Битовый массив Файла и Каталога.

    Result

    kFPNoErr если никакая ошибка не произошла, kFPParamErr если ссылочный номер сеанса или открытый ссылочный номер ветвления недопустимы, kFPBitmapErr если была предпринята попытка для получения параметра, который не может быть получен с этой командой; битовый массив является нулем, или kFPMiscErr если ошибка произошла, который не является определенным для AFP.

    ReplyBlock

    Если код результата kFPNoErr, сервер возвращает блок ответа. Посмотрите Таблицу 33 для формата блока ответа.

    Обсуждение

    Сервер упаковывает параметры в растровом порядке в блоке ответа.

    Параметры переменной длины, такие как Длинное Имя и Краткое название, сохранены в конце блока. Чтобы сделать это, сервер представляет параметры переменной длины в растровом порядке, поскольку фиксированная длина смещает (целые числа). Каждое смещение измеряется от запуска параметров (не от запуска битового массива) к запуску параметра переменной длины. Фактические поля переменной длины тогда упаковываются после всех параметров фиксированной длины.

    Эта команда получает длину ветвление, обозначенное OForkRefNum; a kFPBitmapErr если попытка предпринята для получения продолжительности другого ветвления файла, код результата возвращается.

    Пользователь, должно быть, ранее вызвал FPOpenFork для этого объема.

    Таблица 33 описывает блок ответа для FPGetForkParms команда.

    Блок Table 33Reply для FPGetForkParms команда

    Имя и размер

    Данные

    Bitmap (int16_t)

    Копия входного параметра.

    FileParameters

    Требуемые параметры ветвления.

    Рисунок 41 показывает запрос и блоки ответа для FPGetForkParms команда.

    Рисунок 41Request и ответ блокируют для FPGetForkParms команда image: ../Art/afp_076.eps
  • FPGetIcon FPGetIcon Осуждаемый в OS X v.10.6

    Получает значок от базы данных Desktop.

    Объявление

    Objective C

    uint8_t CommandCode uint8_t Pad int16_t DTRefNum int32_t FileCreator int32_t FileType uint8_t IconType uint8_t Pad int16_t Length

    Параметры

    CommandCode

    kFPGetIcon (51).

    Pad

    Байт клавиатуры.

    DTRefNum

    Настольное число ссылки на базу данных.

    FileCreator

    Создатель файла файла, с которым связан значок.

    FileType

    Тип файла файла, с которым связан значок.

    IconType

    Предпочтительный тип значков.

    Pad

    Байт клавиатуры.

    Length

    Число байтов вызывающая сторона ожидает, что битовый массив значка потребует в блоке ответа.

    Result

    kFPNoErr если никакая ошибка не произошла, kFPParamErr если ссылочный номер сеанса или Настольное число ссылки на базу данных неизвестны, kFPItemNotFound если никакой значок, соответствующий входным параметрам, не был найден в базе данных Desktop, или kFPMiscErr если ошибка произошла, который не является определенным для AFP.

    ReplyBlock

    Если код результата kFPNoErr, сервер возвращает блок ответа. Блок ответа состоит из int16_t, содержащего требуемый битовый массив значка.

    Обсуждение

    Сервер получает битовый массив значка от базы данных Desktop, как указано FileCreator, FileType, и IconType параметры.

    Ввод Length значение нуля приемлемо для тестирования на присутствие или отсутствие определенного значка. Если Length меньше, чем фактический размер битового массива значка, только Length байты возвращаются.

    Пользователь, должно быть, ранее вызвал FPOpenDT для соответствующего объема.

    Рисунок 42 показывает запрос и блоки ответа для FPGetIcon команда.

    Рисунок 42Request и ответ блокируют для FPGetIcon команда image: ../ART/afp_056.eps

    Доступность

    Осуждаемый в OS X v.10.6.

  • FPGetIconInfo FPGetIconInfo Осуждаемый в OS X v.10.6

    Получает информацию значка от базы данных Desktop.

    Объявление

    Objective C

    uint8_t CommandCode uint8_t Pad int16_t DTRefNum int32_t FileCreator int16_t IconIndex

    Параметры

    CommandCode

    kFPGetIconInfo (51).

    Pad

    Байт клавиатуры.

    DTRefNum

    Настольное число ссылки на базу данных.

    FileCreator

    Создатель файла файла, с которым связан значок.

    IconIndex

    Индекс требуемого значка.

    Result

    kFPNoErr если никакая ошибка не произошла, kFPParamErr если ссылочный номер сеанса или Настольное число ссылки на базу данных неизвестны, kFPItemNotFound если никакой значок, соответствующий входным параметрам, не был найден в базе данных Desktop, или kFPMiscErr если ошибка произошла, который не является определенным для AFP.

    ReplyBlock

    Если код результата kFPNoErr, сервер возвращает блок ответа. Посмотрите Таблицу 34 для формата блока ответа.

    Обсуждение

    Сервер получает информацию о значке в базе данных Desktop объема, как указано создателем файла значка и индексом значка.

    Для каждого создателя файла база данных Desktop содержит список значков. Информация о каждом значке может быть получена путем отправки последовательный FPGetIconInfo команды с IconIndex варьирование от одного до общего количества значков сохранено в базе данных Desktop для того создателя файла. Если IconIndex больше, чем число значков в базе данных Desktop для указанного создателя файла, кода результата kFPItemNotFound возвращается.

    Пользователь, должно быть, ранее вызвал FPOpenDTFPOpenDT для соответствующего объема.

    Таблица 34 описывает блок ответа для FPGetIconInfo команда.

    Блок Table 34Reply для FPGetIconInfo команда

    Имя и размер

    Данные

    IconTag (int32_t)

    Данные меток связались с требуемым значком.

    FileType (int32_t)

    Тип файла требуемого значка.

    IconType (uint8_t)

    Тип требуемого значка.

    Pad (uint8_t)

    Байт клавиатуры.

    Size (int16_t)

    Размер битового массива значка.

    Рисунок 43 показывает запрос и блоки ответа для FPGetIconInfo команда.

    Рисунок 43Request и ответ блокируют для FPGetIconInfo команда image: ../ART/afp_055.eps

    Доступность

    Осуждаемый в OS X v.10.6.

  • Получает маркер сеанса.

    Объявление

    Objective C

    uint8_t CommandCode uint8_t Pad int16_t Type int32_t IDLength int32_t timeStamp (optional) ID

    Параметры

    CommandCode

    kFPGetSessionToken (64).

    Pad

    Байт клавиатуры.

    Type

    Значение этого параметра kLoginWithoutID (0) если клиент поддерживает более раннюю версию AFP, не отправляющего IDLength и ID параметр.

    Это kLoginWithTimeAndID (3) если клиент отправляет IDLength, ID, и a Timestamp параметр и клиент хотят, чтобы был отброшен его старый сеанс.

    Это kReconnWithTimeAndID (4) если клиент только что закончил успешное переподключение, отправляет IDLength, ID, и a Timestamp параметр, и хочет, чтобы сеанс был обновлен с ID параметр.

    Это kRecon1Login (5) если клиент использует Recon1 UAM для входа в систему.

    Это kRecon1ReconnectLogin (6) если клиент только что закончил успешное переподключение, и оно использует Recon1 UAM.

    Это kRecon1RefreshToken (7) если клиент использует Recon1 UAM и потребности обновить маркер.

    Это kGetKerberosSessionKey (8) если клиент входит в систему с помощью Kerberos v5.

    Посмотрите Типы FPGetSessionToken для перечисления, определяющего константы для этого параметра.

    IDLength

    Длина ID параметр.

    timeStamp

    Дополнительная метка времени указала только если значение ID kLoginWithTimeAndID или kReconnWithTimeAndID.

    ID

    Определенное клиентами значение, однозначно определяющее этот сеанс.

    Result

    kFPNoErr если никакая ошибка не произошла, kFPParamErr если ссылочный номер сеанса неизвестен, kFPCallNotSupported если сервер не поддерживает эту команду, или kFPMiscErr если ошибка произошла, который не является определенным для AFP.

    ReplyBlock

    Если код результата kFPNoErr, сервер возвращает блок ответа. Посмотрите Таблицу 35 для формата блока ответа.

    Обсуждение

    Эта команда помогает клиенту AFP управлять разъединением, происходящим и существуют открытые файлы или заблокированные ресурсы на удаленном сервере. Удаленный сервер будет сохранять текущее состояние сеанса (включая открытые файлы) и ожидать, пока его тайм-аут переподключения не истекает прежде, чем закрыть файлы и отбросить сохраненный сеанс. В случае клиента AFP, которому не удается проснуться должным образом от сна со смонтированным сервером AFP, сеанс будет сохранен на удаленном сервере, пока не истечет тайм-аут сна.

    При этих обстоятельствах, до AFP 3.1, когда клиент AFP, зарегистрированный назад в сервер от той же системы, попытки получить доступ к файлам, которые были открыты во время катастрофического отказа, перестанут работать с “файлом уже, открывают” or “ресурсы, уже заблокировал” результат. Клиент AFP должен был бы ожидать переподключения или тайм-аута сна для истечения, или администратор сервера должен будет вручную разъединить старый сеанс.

    С AFP 3.1 и позже, клиент AFP может установить Type параметр к kLoginWithID, установите ID параметр к уникальному определенному клиентами значению, и отправляет эту команду. Сервер свяжет значение ID с сеансом. Позже, если локальные системные катастрофические отказы и клиент AFP входят в систему снова, клиент AFP может установить Type параметр к kLoginWithID, установите ID параметр к ID, который это ранее отправило в удаленный сервер и отправляет эту команду снова. Удаленный сервер будет искать сеанс, соответствующий значение ID. Если соответствие будет найдено, то оно закроет любые файлы, связанные с сеансом, которые открыты, свободны любые заблокированные ресурсы и разъединяют сеанс соответствия. Обратите внимание на то, что в текущей версии, уникальный идентификатор связан с определенным компьютером, поэтому после того, как системные катастрофические отказы, клиент AFP должен войти в систему от того же, использующего компьютеры та же информация, использовавшаяся для входа в систему первоначально.

    С AFP 3.1 и позже, клиент AFP может также установить Type параметр к kLoginWithTimeAndID. В этом случае клиент должен включать четырехбайтовую метку времени после IDLength поле и сервер сохраняют метку времени, а также значение ID для каждого сеанса. Когда сервер получает a FPGetSessionToken команда, имеющая a TYPE параметр, значение которого kLoginWithTimeAndID, сервер ищет все свои очереди сеанса. Если сервер находит сеанс, соответствующий значение ID, это также проверяет метку времени. Если метка времени соответствует, клиент не перезапустил так сеанс, не отбрасывается. Если сохраненная метка времени не соответствует, сеанс только отбрасывается.

    Эта команда возвращает маркер сеанса, с AFP 3.0 и позже, использующийся, чтобы повторно соединиться. Если локальная система разъединяется, и клиент AFP входит в систему снова с помощью того же, входят в систему информация как прежде, клиент AFP может вызвать FPDisconnectOldSession, передача маркера сеанса получена путем вызова FPGetSessionToken, сказать серверу передавать старый сеанс новому сеансу.

    Обратите внимание на то, что отправка FPGetSrvrMsg команда не инициирует переподключение.

    В целях безопасности сервер всегда приводит reconnections к сбою для пользователей, входящих в систему как Гость.

    Таблица 35 описывает блок ответа для FPGetSessionToken команда.

    Блок Table 35Reply для FPGetSessionToken команда

    Имя и размер

    Данные

    TokenLength (int32_t)

    Длина следующего маркера.

    Token (переменная длина)

    Маркер, который может быть передан FPDisconnectOldSession если сеанс непреднамеренно разъединен и затем восстановлен. Если клиент поддерживает Переподключение UAM, маркер должен периодически обновляться и также отправляется в сервер FPLoginExt команда, чтобы повторно соединиться, если разъединяется сеанс.

    Рисунок 44 показывает запрос и блоки ответа для FPGetSessionToken команда.

    Рисунок 44Request и ответ блокируют для FPGetSessionToken команда image: ../ART/afp_032.eps
  • Получает информацию о сервере.

    Объявление

    Objective C

    uint8_t CommandCode uint8_t Pad

    Параметры

    CommandCode

    kFPGetSrvrInfo (15).

    Pad

    Байт клавиатуры.

    Result

    kFPNoErr если никакая ошибка не произошла, kFPNoServer если сервер не отвечает, или kFPMiscErr если ошибка произошла, который не является определенным для AFP.

    ReplyBlock

    Если код результата kFPNoErr, сервер возвращает блок ответа. Посмотрите Таблицу 37 для формата блока ответа.

    Обсуждение

    Блок ответа начинается со смещения к MachineType параметр, сопровождаемый смещением к AFPVersions параметр, смещение к UAMs параметр и смещение к VolumeIconAndMask параметр. Смещения сопровождаются Flags параметр, ServerName параметр, дополненный к ровной границе, смещению к ServerSignature параметр и смещение к NetworkAddresses параметр.

    Сервер упаковывает информацию в блоке ответа в любом порядке, таким образом, никакое предположение не должно быть сделано о порядке информации. Вместо этого клиенты AFP должны получить доступ к информации только посредством смещений. Исключение ServerName параметр, который всегда является после Flags параметр.

    Обеспечение смещений к VolumeIconAndMask, ServerSignature, NetworkAddresses, и DirectoryNames параметры требуются, но обеспечение самих параметров является дополнительным. Не если, если, значение каждого параметра является нулем.

    Flags параметр указывает поддержку сервера определенных функций. Если бит 9 в Flags параметр устанавливается, блок ответа содержит a UTF8ServerNames смещение к имени сервера в формате UTF-8. (См. раздел Character Encoding Понятий файлового протокола Apple в Руководстве по программированию файлового протокола Apple для дополнительных подробных данных о UTF-8 кодирование используемого AFP.)

    Рисунок 45 показывает, как биты используются в Flags параметр.

    Использование рисунка 45Bit в параметре ServerFlags image: ../ART/afp_086.eps

    AFPVersionsCount и UAMCount параметры являются каждым байтом, содержащим число AFP и строк версии UAM, следующих со строками, упакованными идущий подряд без дополнения. Для версий AFP, поддерживаемых этой версией AFP, посмотрите “AFP Version Strings”. Для UAMs, поддерживаемого этой версией AFP, посмотрите “AFP UAM Strings”.

    Дополнительное ServerSignature параметр содержит уникальный идентификатор для сервера. Клиент AFP должен использовать подпись сервера, чтобы гарантировать, что она не входит в систему того же сервера многократно. Когда сервер сконфигурирован для размещения в разных сетях, при предотвращении многократного журнала ins важен.

    NetworkAddresses параметр содержит адреса, которые клиент может использовать для соединения с сервером. Каждый адрес сохранен как Сетевой адрес AFP. Формат Сетевого адреса AFP показан на рисунке 46.

    Формат Сетевого адреса рисунка 46AFP image: ../ART/afp_022.eps

    Каждый Сетевой адрес AFP состоит из байта длины, содержащего общую длину в байтах Сетевого адреса, сопровождаемого байтом тега, идентифицирующим тип адреса, который Поле адреса содержит, сопровождаемый максимум на 254 байта данных. Таблица 36 перечисляет возможные значения Length и Tag поля и описывают тип адреса, сохраненного в Address поле.

    Поля Table 36AFP Network Address

    Длина

    Тег

    Адрес

    0x00

    Зарезервированный

    0x6

    0x01

    Четырехбайтовый IP-адрес

    0x8

    0x02

    Четырехбайтовый IP-адрес, сопровождаемый двухбайтовым номером порта

    0x6

    0x03

    Адрес DDP (два байта для номера сети, один байт для числа узла и один байт для числа сокета)

    Переменная

    0x04

    Имя DNS (максимум 254 байтов)

    0x8

    0x05

    IP-адрес (четыре байта) с номером порта (2 байта). Если этот тег присутствует, и клиент так сконфигурирован, клиент пытается создать Безопасный Shell (SSH) туннель между собой и сервером и попытками соединиться через него. Эта функциональность осуждается.

    0x12

    0x06

    Адрес IPv6 (16 байтов)

    0x14

    0x07

    Адрес IPv6 (16 байтов), сопровождаемых двухбайтовым номером порта

    Формат сетевого адреса предоставляет доступные сетевые адреса клиенту AFP. Клиенты AFP должны проигнорировать любые теги, которые это не распознает.

    FPGetSrvrInfo может быть вызван без первого установления сеанса с сервером.

    Таблица 37 описывает блок ответа для FPGetSrvrInfo command.

    Блок Table 37Reply для FPGetSrvrInfo команда

    Имя и размер

    Данные

    MachineType смещение

    Смещение к расположению в блоке ответа, содержащем тип машины сервера.

    AFPVersionCount смещение

    Смещение к расположению в блоке ответа, содержащем число AFP, присваивает версию поддержкам сервера. (AFPVersionCount двухбайтовое целое число.)

    UAMCount смещение

    Смещение к расположению в блоке ответа, содержащем число UAMs поддержки сервера. (UAMCount двухбайтовое целое число.)

    VolumeIconAndMask смещение

    Смещение к расположению в блоке ответа, содержащем значок тома и данные маски. Эта функциональность осуждается в OS X.

    Это состоит из 32 32 разрядного (128-байтового) битового массива значка, сопровождаемого 32 32 разрядной (128-байтовой) маской значка. Маска обычно состоит из схемы значка, заполненной черным цветом (биты, установленные). Для получения дополнительной информации о значках, обратитесь к Внутреннему OS X.

    Flags (int16_t)

    Флаги, описывающие возможности сервера. Для разрядных определений посмотрите раздел Server Flags Bitmap.

    ServerName (string)

    Строка, содержащая имя сервера.

    Эта строка Паскаля ограничивается 32 символами в длине.

    ServerSignature смещение

    Смещение к расположению в блоке ответа, содержащем подпись сервера.

    NetworkAddressesCount смещение

    Смещение к расположению в блоке ответа, содержащем число Сетевых адресов AFP.

    DirectoryNamesCount смещение

    Смещение к расположению в блоке ответа, содержащем число Имен каталогов.

    UTF8ServerName смещение

    Смещение к расположению в блоке ответа, содержащем имя сервера в символах UTF-8. Посмотрите раздел Character Encoding Понятий файлового протокола Apple в Руководстве по программированию файлового протокола Apple для дополнительных подробных данных о UTF-8 кодирование используемого AFP.

    MachineType (строка)

    Строка, содержащая описание аппаратных средств сервера, операционной системы или обоих. Эта строка Паскаля (до 16 символов в длину) не имеет никакого значения для AFP.

    AFPVersionsCount (uint8_t)

    Число следующих строк версии AFP.

    AFPVersions (упакованная строка)

    Каждая версия AFP, которую сервер поддерживает в упакованном формате. Для каждой поддерживаемой версии существует один байт, утверждая число байтов в следующей строке версии.

    UAMsCount (uint8_t)

    Число следующих строк UAM.

    UAMs (упакованная строка)

    Каждый UAM, который сервер поддерживает в упакованном формате. Поскольку каждый поддерживал UAM, существует один байт, утверждая число байтов в следующей строке имени UAM.

    Каждая строка может быть до 16 символов в длину. Для получения дополнительной информации посмотрите Понятия файлового протокола Apple.

    ServerSignature (16 байтов)

    Шестнадцатибайтовое число, однозначно определяющее сервер или нуль если не поддерживаемый. Для серверов AFP поддержка подписей сервера является дополнительной, но серверы AFP должны обеспечить a ServerSignature смещение. Сервер AFP указывает, что поддерживает подписи сервера путем установки kSupportsSrvrSig бит в параметре Флагов.

    NetworkAddresses (Сетевой адрес AFP)

    Сетевые адреса сервера или нуль, если не поддерживаемый. (Формат Сетевого адреса AFP описан позже в этом разделе.) Для серверов AFP, обеспечивая a NetworkAddresses параметр является дополнительным, но серверы AFP должны обеспечить a NetworkAddresses смещение. Сервер AFP указывает, что поддерживает Сетевые адреса путем установки kSupportsTCP бит в Flags параметр.

    DirectoryNames (строка)

    Строка, содержащая имена каталогов, Открывающих Directory, сделала доступным для совместного использования или нуля если не поддерживаемый. Для серверов AFP Открывает поддержка, Directory является дополнительным, но серверы AFP должны обеспечить a DirectoryNames смещение. Сервер AFP указывает, что поддерживает, Открывают Directory путем установки kSupportsDirServices бит в параметре Флагов. Если сервер поддерживает Kerberos UAM, это помещает свое основное имя в эту строку.

    UTF8ServerName (AFPName)

    AFPName, содержащий UTF-8–encoded имя сервера. Посмотрите раздел Character Encoding Понятий файлового протокола Apple в Руководстве по программированию файлового протокола Apple для дополнительных подробных данных о UTF-8 кодирование используемого AFP.

    VolumeIconAndMask (256 байтов)

    128 байтов данных значка и 128 байтов данных маски. Эта функциональность осуждается в OS X.

    Рисунок 47 показывает запрос и блоки ответа для FPGetSrvrInfo команда.

    Рисунок 47Request и ответ блокируют для FPGetSrvrInfo команда image: ../Art/afp_023.eps
  • Получает сообщение от сервера.

    Объявление

    Objective C

    uint8_t CommandCode uint8_t Pad int16_t MessageType int16_t MessageBitmap

    Параметры

    CommandCode

    kFPGetSrvrMsg (38).

    Pad

    Байт клавиатуры.

    MessageType

    Тип сообщения, были 0, указывает, входят в систему, и 1 указывает сервер. (Набор MessageType к 1 то, когда сообщение Сервера укусило в коде внимания, установлено.)

    MessageBitmap

    Битовый массив, предоставляющий дополнительную информацию. Клиент устанавливает бит 0 из этого битового массива, чтобы указать, что это запрашивает сообщение. Начиная с AFP 3.0 клиент может установить бит 1 из этого битового массива, чтобы указать, что это поддерживает сообщения UTF-8. Посмотрите раздел Character Encoding Понятий файлового протокола Apple в Руководстве по программированию файлового протокола Apple для дополнительных подробных данных о UTF-8 кодирование используемого AFP.

    Result

    kFPNoErr если никакая ошибка не произошла, kFPCallNotSupported если сервер не поддерживает эту команду, kFPBitmapErr если нераспознанные биты установлены в MessageBitmap, или kFPMiscErr если ошибка произошла, который не является определенным для AFP.

    ReplyBlock

    Если код результата kFPNoErr, сервер возвращает блок ответа. Посмотрите Таблицу 38 для формата блока ответа.

    Обсуждение

    Клиент AFP использует FPGetSrvrMsg команда для получения сообщений от сервера. Обычно, сервер отправляет код внимания клиенту, когда сообщения сервера доступны, и клиент отвечает путем вызова FPGetSrvrMsg. Однако клиент может вызвать FPGetSrvrMsg в любое время. Когда клиент вызывает, если никакое сообщение не доступно FPGetSrvrMsg, сервер возвращает строку нулевой длины.

    Существует два типов сообщений: войдите в систему и сервер. Журнал в типе сообщения позволяет серверу отправлять сообщение клиенту в журнале своевременно. Клиент может запросить сервер для журнала в сообщении в журнале своевременно, или каждый раз, когда удобно сделать так. Если нет никакого сообщения входа в систему, FPGetSrvrMsg возвращает строку нулевой длины.

    Тип сообщения сервера позволяет серверу отправлять сообщения клиенту, как только клиент вошел в систему. Сервер уведомляет клиент, что сообщение сервера доступно путем отправки пакета Внимания DSI, в котором сообщение Сервера укусило в AFPUserBytes поле установлено. (См. Определения AFPUserBytes.)

    Существует два типов сообщений сервера:

    • Завершение работы. Сервер может отправить сообщение завершения работы для объяснения, почему сервер закрывается, сколько времени это снизится и т.д. В дополнение к установке Сервера передают бит в AFPUserBytes поле пакета Внимания DSI, сервер устанавливает бит Завершения работы, чтобы указать, что сообщение завершения работы доступно.

    • Пользователь. Сервер может отправить сообщение определенному пользователю. Клиент проинформирован, что пользовательское сообщение доступно, когда сервер отправляет пакет Внимания DSI, в котором сообщение Сервера укусило в AFPUserBytes поле установлено, и Завершение работы укусило, не установлен.

    Максимальный размер сообщения составляет 255 байтов.

    Пользователь должен быть зарегистрирован на сервере для получения уведомлений о сообщении сервера. Иначе, никакие специальные права доступа не необходимы для использования этой команды.

    Обратите внимание на то, что в случае разъединенного сеанса, отправляя эту команду не инициирует переподключение.

    Таблица 38 описывает блок ответа для FPGetSrvrMsg команда.

    Блок Table 38Reply для FPGetSrvrMsg команда

    Имя и размер

    Данные

    MessageType (int16_t)

    Копия входного параметра.

    MessageBitmap (int16_t)

    Битовый массив, описывающий сообщение. Посмотрите Битовый массив FPGetSrvrMsg для списка возможных значений.

    ServerMessage (string)

    Сообщение от сервера.

    Если сообщение находится в формате UTF-8, это поле начинается с a uint16_t поле длины.

    Если сообщение не находится в формате UTF-8, это поле начинается с a uint8_t поле длины.

    Рисунок 48 показывает запрос и блоки ответа для FPGetSrvrMsg команда.

    Рисунок 48Request и ответ блокируют для FPGetSrvrMsg команда image: ../ART/afp_008.eps
  • Получает параметры сервера.

    Объявление

    Objective C

    uint8_t CommandCode uint8_t Pad

    Параметры

    CommandCode

    kFPGetSrvrParms (16).

    Pad

    Байт клавиатуры.

    Result

    kFPNoErr если никакая ошибка не произошла, kFPParamErr если ссылочный номер сеанса неизвестен, или kFPMiscErr если ошибка произошла, который не является определенным для AFP.

    ReplyBlock

    Если код результата kFPNoErr, сервер возвращает блок ответа. Посмотрите Таблицу 39 для формата блока ответа.

    Обсуждение

    VolName строка, HasPassword бит, и HasConfigInfo бит упаковывается, не дополняя в блоке ответа.

    Для AFP 2.x, эта команда возвращает имена томов в формате ANSI с максимальной длиной 27 байтов.

    Для AFP 3.x, эта команда возвращает имена томов в формате UTF-8 с однобайтовым байтом длины, указывающим любую длину до 255. Ранние версии Средства поиска, ограниченного устанавливающий имена томов в не больше, чем 27 символов, но этот предел, больше не осуществляются. Посмотрите Кодировку символов AFP в Руководстве по программированию файлового протокола Apple для дополнительных подробных данных о UTF-8 кодирование используемого AFP.

    Таблица 39 описывает блок ответа для FPGetSrvrParms команда.

    Блок Table 39Reply для FPGetSrvrParms команда

    Имя и размер

    Данные

    ServerTime (int32_t)

    Текущая дата и время на часах сервера.

    NumVolStructures (int16_t)

    Число VolStructure следующие структуры.

    VolStructures

    Массив VolStructure структуры, состоящие из следующих полей:

    • Flags (uint8_t) где бит 0 (HasConfigInfo) установлен, если объем имеет конфигурационную информацию и кусает 7 (HasPassword) если пароль установлен для объема, установлен

    • VolName (string) имя объема

    Рисунок 49 показывает запрос и блоки ответа для FPGetSrvrParms команда.

    Рисунок 49Request и ответ блокируют для FPGetSrvrParms команда image: ../ART/afp_057.eps
  • Получает информацию о пользователе.

    Объявление

    Objective C

    uint8_t CommandCode uint8_t Flags int32_t UserID int16_t Bitmap

    Параметры

    CommandCode

    kFPGetUserInfo (37).

    Flags

    Если самый низкий бит (0x1) установлен ( ThisUser флаг), информация получена о текущем пользователе и UserID поле проигнорировано.

    UserID

    ID пользователя, для которого должна быть получена информация. (Не допустимый, если ThisUser бит установлен в flags поле.)

    Это поле осуждается для соображений безопасности. ThisUser бит должен всегда устанавливаться в flags поле.

    Bitmap

    Битовый массив, описывающий, который IDs получить, где разрядный нуль (0x1) установлен получить Идентификатор пользователя пользователя, бит 1 (0x2) установлен получить Primary Group пользователя ID и укусил 2 (0x4) установлен получить UUID пользователя.

    Result

    kFPNoErr если не произошла никакая ошибка. Посмотрите Таблицу 40 для других возможных кодов результата.

    ReplyBlock

    Если код результата kFPNoErr, сервер возвращает блок ответа. Посмотрите Таблицу 41 для формата блока ответа.

    Обсуждение

    Сервер получает указанную информацию для указанного пользователя и упаковывает их, в растровом порядке, в блоке ответа.

    Эта команда может использоваться только для получения Идентификатора пользователя и Primary Group ID пользователя, который является клиентом этого сеанса, таким образом требуя что ThisUser бит быть установленным. UserID параметр предназначается для будущего использования.

    Таблица 40 перечисляет коды результата для FPGetUserInfo команда.

    Таблица 40Result кодирует для FPGetUserInfo команда

    Код результата

    Объяснение

    kFPAccessDenied

    Пользователю не требовали, чтобы права доступа получили информацию об указанном пользователе.

    kFPBitmapErr

    Попытка была предпринята для получения параметра, который не может быть получен с этой командой.

    kFPCallNotSupported

    Сервер не поддерживает эту команду.

    kFPItemNotFound

    Указанный Идентификатор пользователя неизвестен.

    kFPMiscErr

    Ошибка неAFP произошла.

    kFPParamErr

    ThisUser бит не установлен.

    kFPPwdExpiredErr

    Пароль пользователя истек. Пользователь обязан изменять его или ее пароль. Пользователь зарегистрирован, но может только изменить его или ее пароль или выйти из системы.

    kFPPwdNeedsChangeErr

    Пароль пользователя должен быть изменен. Пользователь обязан изменять его или ее пароль. Пользователь зарегистрирован, но может только изменить его или ее пароль или выйти из системы.

    Если эта команда возвращает код результата kFPPwdExpiredErr или kFPPwdNeedsChangeErr, клиент AFP должен вывести на экран объяснительное диалоговое окно и позволить пользователю изменять его или ее пароль.

    Таблица 41 описывает блок ответа для FPGetUserInfo команда.

    Блок Table 41Reply для FPGetUserInfo команда

    Имя и размер

    Данные

    Bitmap (int16_t)

    Копия входного параметра.

    UserInfo

    Запрошенная информация, упакованная в растровом порядке, начинаясь с самого низкого набора битов. Например, если UID и биты UUID установлены в битовом массиве ответа, то UID является первым в ответе, сопровождаемом UUID.

    Рисунок 50 показывает запрос и блоки ответа для FPGetUserInfo команда.

    Рисунок 50Request и ответ блокируют для FPGetUserInfo команда image: ../ART/afp_058.eps
  • Получает параметры объема.

    Объявление

    Objective C

    uint8_t CommandCode uint8_t Pad int16_t VolumeID int16_t Bitmap

    Параметры

    CommandCode

    kFPGetVolParms (17).

    Pad

    Байт клавиатуры.

    VolumeID

    ID объема для объема, параметры которого должны быть получены.

    Bitmap

    Битовый массив, описывающий параметры, которые должны быть возвращены. Установите бит желаемого параметра. Этот битовый массив совпадает с битовым массивом, используемым FPOpenVol команда. Для разрядных определений для этого битового массива посмотрите Битовый массив Объема.

    Result

    kFPNoErr если никакая ошибка не произошла, kFPParamErr если ссылочный номер сеанса или Объем ID неизвестны, kFPBitmapErr если указанному битовому массиву установили нераспознанные биты, или kFPMiscErr если ошибка произошла, который не является определенным для AFP.

    ReplyBlock

    Если код результата kFPNoErr, сервер возвращает блок ответа. Посмотрите Таблицу 42 для формата блока ответа.

    Обсуждение

    Эта команда получает параметры, описывающие объем, как указано Объемом объема ID.

    Сервер реагирует на эту команду путем возврата блока ответа, содержащего битовый массив для параметров объема и самих параметров. Все параметры переменной длины, такие как Имя тома, в конце блока. Сервер представляет параметры переменной длины в растровом порядке, поскольку фиксированная длина смещает (int16_t значения). Эти смещения измеряются от запуска параметров (не от запуска битового массива) к запуску параметров переменной длины. Параметры переменной длины тогда упаковываются после всех параметров фиксированной длины.

    Таблица 42 описывает блок ответа для FPGetVolParms команда.

    Блок Table 42Reply для FPGetVolParms команда

    Имя и размер

    Данные

    Bitmap (int16_t)

    Копия входного параметра.

    VolumeParameters

    Параметры объема упаковываются в растровом порядке.

    Рисунок 51 показывает запрос и блоки ответа для FPGetVolParms команда.

    Рисунок 51Request и ответ блокируют для FPGetVolParms команда image: ../Art/afp_059.eps

    Для расположения битового массива и параметров объема, посмотрите разделы “Volume Attributes Bitmap” и битовый массив объема.

  • Получает имена расширенных атрибутов для файла или каталога.

    Объявление

    Objective C

    uint8_t CommandCode uint8_t Pad int16_t VolumeID int32_t DirectoryID uint16_t Bitmap int16_t ReqCount int32_t StartIndex int32_t MaxReplySize uint8_t PathType string Pathname

    Параметры

    CommandCode

    kFPListExtAttrs (72).

    Pad

    Байт клавиатуры.

    VolumeID

    Идентификатор объема.

    DirectoryID

    Идентификатор каталога.

    Bitmap

    Битовый массив, описывающий желаемое поведение при получении имен расширенных атрибутов. Для этой команды kAttrDontFollow единственный допустимый бит. Для получения дополнительной информации посмотрите “Extended Attributes Bitmap”.

    ReqCount

    Зарезервированный для будущего использования. Для AFP 3.2, набора ReqCount обнулять. Серверы должны проигнорировать этот параметр.

    StartIndex

    Зарезервированный для будущего использования. Для AFP 3.2, набора StartIndex обнулять. Серверы должны проигнорировать этот параметр.

    MaxReplySize

    Максимальный размер блока ответа, включая размер Bitmap и DataLength параметры. Если MaxReplySize нуль, сервер должен возвратиться Bitmap и набор DataLength к размеру блока ответа (список расширенных названий атрибута), который был бы возвращен, фактически не отправляя имена расширенных атрибутов.

    PathType

    Тип имен в Pathname. Посмотрите Константы Типа тракта для возможных значений.

    Pathname

    Путь к желаемому файлу или каталогу. Pathname строка, если она содержит Короткие или Длинные Имена или AFPName, если она содержит путь UTF-8–encoded. Посмотрите раздел Character Encoding Понятий файлового протокола Apple в Руководстве по программированию файлового протокола Apple для дополнительных подробных данных о UTF-8 кодирование используемого AFP.

    Result

    kFPNoErr если не произошла никакая ошибка. Посмотрите Таблицу 43 для других возможных кодов результата.

    ReplyBlock

    Если код результата kFPNoErr, сервер возвращает блок ответа. Посмотрите “Reply block for the FPListExtAttrs command ” для формата блока ответа.

    Обсуждение

    Если код результата kFPNoErr, эта команда возвраты в ответе блокирует имена расширенных атрибутов для указанного файла или каталога.

    Поддержка этой команды, а также FPGetExtAttr, FPRemoveExtAttr и FPSetExtAttr требуется для поддержки расширенных атрибутов. Поддержка UTF-8 также требуется для поддержки расширенных атрибутов. Посмотрите раздел Character Encoding Понятий файлового протокола Apple в Руководстве по программированию файлового протокола Apple для дополнительных подробных данных о UTF-8 кодирование используемого AFP.

    Таблица 43 перечисляет возможные коды результата для FPListExtAttrs команда.

    Таблица 43Result кодирует для FPListExtAttrs команда

    Код результата

    Объяснение

    kFPAccessDenied

    Пользователю не требовали, чтобы права доступа перечислили расширенные названия атрибута для указанного файла или каталога.

    kFPBitmapErr

    Битовый массив является нулем или указывает значение, которое недопустимо для этой команды.

    kFPMiscErr

    Ошибка неAFP произошла.

    kFPObjectNotFound

    Входные параметры не указывают на существующий файл или каталог.

    kFPParamErr

    Параметр недопустим.

    Таблица 44 описывает блок ответа для FPListExtAttrs команда.

    Блок Table 44Reply для FPListExtAttrs команда

    Имя и размер

    Данные

    Bitmap (int16_t)

    Зарезервированный.

    DataLength (uint32_t)

    Длина следующих данных. Если MaxReplySize был обнулен, DataLength установлен в размер списка расширенных названий атрибута, которые были бы иначе возвращены.

    AttributeNames (string)

    Серия завершенных нулем, UTF-8 закодировал расширенные названия атрибута если MaxReplySize не был обнулен. Посмотрите раздел Character Encoding Понятий файлового протокола Apple в Руководстве по программированию файлового протокола Apple для дополнительных подробных данных о UTF-8 кодирование используемого AFP.

    Рисунок 37 показывает запрос и блоки ответа для FPListExtAttrs команда.

    Рисунок 52Request и ответ блокируют для FPListExtAttrs команда image: ../ART/afp_FPListExtendedAttr.eps
  • FPLogin FPLogin Осуждаемый в AFP 3.x. Используйте FPLoginExt вместо этого

    Устанавливает сеанс с сервером.

    Объявление

    Objective C

    uint8_t CommandCode string AFPVersion string UAM UserAuthInfo

    Параметры

    CommandCode

    kFPLogin (18).

    AFPVersion

    Строка, указывающая, который версия AFP использовать. Для возможных значений посмотрите “AFP Version Strings”.

    UAM

    Строка, указывающая, который UAM использовать. Для возможных значений посмотрите “AFP UAM Strings”.

    UserAuthInfo

    UAM-зависимая требуемая информация для аутентификации пользователя (может быть нуль). Тип данных UserAuthInfo зависит от UAM, указанного UAM.

    Result

    kFPNoErr если не произошла никакая ошибка. Посмотрите Таблицу 45 для возможных кодов результата.

    ReplyBlock

    Если код результата kFPNoErr, сервер возвращает блок ответа. Посмотрите Таблицу 46 для формата блока ответа.

    Обсуждение

    Эта команда устанавливает сеанс AFP с сервером AFP. Перед вызовом FPLogin, клиент AFP должен вызвать FPGetSrvrInfo получить версии AFP и UAMs, который поддерживает сервер. Из списка версий AFP и UAMs, возвращенного FPGetSrvrInfo, клиент AFP выбирает самую высокую версию AFP и самый безопасный UAM, что клиент поддерживает и обеспечивает их как AFPVersion и UAM параметры к FPLogin команда.

    Если сервер возвращает какой-либо код результата кроме kFPAuthContinue или kFPNoErr, сеанс не был установлен.

    Для более подробной информации о UAMs см. “Безопасность Файлового сервера” в разделе «Introduction».

    Сервер AFP проводит подсчет, входят в систему попытки, который сбрасывается для обнуления после каждого успешного входа в систему. Для каждой неработающей попытки входа в систему без предыдущего успешного входа в систему постепенно увеличивается количество. Когда максимальное количество неработающих попыток входа в систему достигнуто, учетная запись пользователя отключена. Любые попытки войти в систему после учетной записи отключены, приводят к коду результата kFPParamErr, указание, что пользователь неизвестен или что отключена его или ее учетная запись. Администратор должен включить учетную запись пользователя снова. AFP не уведомляет администратора, что была отключена учетная запись пользователя; пользователь должен уведомить администратора некоторыми другими средними значениями.

    Таблица 45 перечисляет коды результата для FPLogin команда.

    Таблица 45Result кодирует для FPLogin команда

    Код результата

    Объяснение

    kFPAuthContinue

    Аутентификация еще не завершена.

    kFPBadUAM

    Указанный UAM неизвестен.

    kFPBadVersNum

    Сервер не поддерживает указанную версию AFP.

    kFPCallNotSupported

    Сервер не поддерживает эту команду.

    kFPMiscErr

    Пользователь уже аутентифицируется.

    kFPNoServer

    Сервер не отвечает.

    kFPServerGoingDown

    Сервер закрывается.

    kFPUserNotAuth

    Аутентификация перестала работать.

    kFPNoMoreSessions

    Сервер не может обработать дополнительные соединения.

    После входа в систему клиент AFP должен сразу вызвать FPGetUserInfo видеть, истек ли пароль пользователя.

    Таблица 46 описывает блок ответа для FPLoginкоманда.

    Блок Table 46Reply для FPLogin команда

    Имя и размер

    Данные

    ID (int16_t)

    ID, возвращенный определенным UAMs, который будет передан FPLoginCont команда. (Допустимый только, когда kFPAuthContinue возвращается как код результата.)

    UserAuthInfo

    Значение, возвращенное определенным UAMs. (Допустимый только, когда kFPAuthContinue возвращается как код результата.)

    Рисунок 53 показывает запрос и блоки ответа для FPLogin команда.

    Рисунок 53Request и ответ блокируют для FPLogin команда image: ../ART/afp_060.eps

    Доступность

    Осуждаемый в AFP 3.x. Использовать

  • Продолжает процесс входа в систему и аутентификации пользователя, запущенный командой входа в систему.

    Объявление

    Objective C

    uint8_t CommandCode uint8_t Pad int16_t ID UserAuthInfo

    Параметры

    CommandCode

    kFPLoginCont (19).

    Pad

    Байт клавиатуры.

    ID

    Число, возвращенное предыдущим вызовом к FPLogin, FPLoginExt, или FPLoginCont.

    UserAuthInfo

    UAM-зависимая требуемая информация для аутентификации пользователя (может быть нуль). Тип данных UserAuthInfo зависит от UAM, указанного когда FPLogin или FPLoginExt был вызван.

    Result

    kFPNoErr если не произошла никакая ошибка. Посмотрите Таблицу 47 для возможных кодов результата.

    ReplyBlock

    Если код результата kFPNoErr или kFPAuthContinue, сервер может возвратить блок ответа, в зависимости от UAM. Посмотрите Таблицу 48 для формата блока ответа.

    Обсуждение

    Эта команда отправляет ID и UserAuthInfo параметры к серверу, использующему их для выполнения следующего шага в UAM. Если дополнительный обмен пакетами требуется, сервер возвращает код результата kFPAuthContinue. Иначе, это возвращается нет kFPNoErr (значение пользователя аутентифицировалось), или kFPUserNotAuth (значение аутентификации перестало работать). Если возвращается сервер kFPNoErr, сеанс допустим. Если возвращается сервер kFPUserNotAuth, сервер также закрывает сеанс.

    Таблица 47 перечисляет коды результата для FPLoginCont команда.

    Таблица 47Result кодирует для FPLoginCont команда

    Код результата

    Объяснение

    kFPAuthContinue

    Аутентификация еще не завершена.

    kFPMiscErr

    Ошибка неAFP произошла.

    kFPNoServer

    Сервер не отвечает.

    kFPParamErr

    Аутентификация перестала работать по нераскрытой причине.

    kFPUserNotAuth

    Пользователь не аутентифицировался, потому что пароль неправильный.

    kFPNoMoreSessions

    Сервер не может обработать дополнительные соединения.

    Таблица 48 описывает блок ответа для FPLoginCont команда.

    Блок Table 48Reply для FPLoginCont команда

    Имя и размер

    Данные

    ID (int16_t)

    ID, возвращенный определенным UAMs, который будет передан FPLoginCont команда. (Допустимый, только если kFPAuthContinue возвращается как код результата.)

    UserAuthInfo

    Значение, возвращенное определенным UAMs. (Допустимый, только если kFPAuthContinue или kFPNoErr возвращается как код результата.)

    Рисунок 54 показывает запрос и блоки ответа для FPLoginCont команда.

    Рисунок 54Request и ответ блокируют для FPLoginCont команда image: ../ART/afp_077.eps
  • Устанавливает сеанс с сервером с помощью домена Open Directory.

    Объявление

    Objective C

    uint8_t CommandCode uint8_t Pad int16_t Flags string AFPVersion string UAM uint8_t UserNameType AFPName UserName uint8_t PathType string Pathname uint8_t Pad UserAuthInfo

    Параметры

    CommandCode

    kFPLoginExt (63).

    Pad

    Байт клавиатуры.

    Flags

    Флаги, предоставляющие дополнительную информацию. (Никакие флаги в настоящее время не определяются.)

    AFPVersion

    Строка, указывающая, который версия AFP использовать. Для возможных значений посмотрите “AFP Version Strings”.

    UAM

    Строка, указывающая, который UAM использовать. Для возможных значений посмотрите “AFP UAM Strings”.

    UserNameType

    Тип имени в UserName; всегда 3.

    UserName

    Имя UTF-8–encoded пользователя.

    PathType

    Тип имен в PathName. Посмотрите Константы Типа тракта для возможных значений.

    Pathname

    Путь тот, для домена Open Directory, в который пользователь, указанный UserName может быть найден. Pathname строка, если она содержит Короткие или Длинные Имена или AFPName, если она содержит путь UTF-8–encoded.

    Pad

    Байт клавиатуры, который может требоваться для Pathname закончиться на ровной границе.

    UserAuthInfo

    UAM-зависимая требуемая информация для аутентификации пользователя (может быть нуль). Тип данных UserAuthInfo зависит от UAM, указанного UAM.

    Result

    kFPNoErr если не произошла никакая ошибка. Посмотрите Таблицу 49 для других возможных кодов результата.

    ReplyBlock

    Если код результата kFPNoErr или kFPAuthContinue, сервер возвращает блок ответа. Посмотрите Таблицу 50 для формата блока ответа.

    Обсуждение

    Эта команда устанавливает сеанс AFP с помощью указанного домена Open Directory, в котором может быть найдена информация о пользователе. Прежде, чем отправить эту команду, клиент AFP должен вызвать FPGetAuthMethods получить UAMs, который поддерживает домен Open Directory. Из списка UAMs, возвращенного FPGetAuthMethods, клиент AFP выбирает самый безопасный UAM, что он поддерживает и обеспечивает его в UAM параметр FPLoginExt команда.

    Если сервер возвращает какой-либо код результата кроме kFPAuthContinue или kFPNoErr, сеанс не был установлен.

    Для более подробной информации о UAMs см. “Безопасность Файлового сервера” в разделе «Introduction».

    Посмотрите раздел Character Encoding Понятий файлового протокола Apple в Руководстве по программированию файлового протокола Apple для дополнительных подробных данных о UTF-8 кодирование используемого AFP.

    Сервер AFP проводит подсчет, входят в систему попытки, который сбрасывается для обнуления после каждого успешного входа в систему. Поскольку каждое неработающее входит в систему попытка без предыдущего успешного журнала в, количество постепенно увеличивается. Когда максимальное количество неработающих входит в систему, попытки достигнуты, учетная запись пользователя отключена. Любые попытки войти в систему после учетной записи отключены результат в kFPParamErr указание, что пользователь неизвестен или что отключена его или ее учетная запись. Администратор должен включить учетную запись пользователя снова. AFP не уведомляет администратора, что была отключена учетная запись пользователя; пользователь должен уведомить администратора некоторыми другими средними значениями.

    Таблица 49 перечисляет коды результата для FPLoginExt команда.

    Таблица 49Result кодирует для FPLoginExt команда

    Код результата

    Объяснение

    kFPAuthContinue

    Аутентификация еще не завершена.

    kFPBadUAM

    Указанный UAM неизвестен.

    kFPBadVersNum

    Сервер не поддерживает указанную версию AFP.

    kFPMiscErr

    Пользователь уже аутентифицируется.

    kFPParamErr

    Указанный пользователь неизвестен, или учетная запись была отключена вследствие слишком многих попыток входа в систему.

    kFPNoServer

    Сервер не отвечает.

    kFPServerGoingDown

    Сервер закрывается.

    kFPUserNotAuth

    Аутентификация перестала работать.

    kFPNoMoreSessions

    Сервер не может обработать дополнительные соединения.

    Таблица 50 описывает блок ответа для FPLoginExt команда.

    Блок Table 50Reply для FPLoginExt команда

    Имя и размер

    Данные

    ID (int16_t)

    ID, возвращенный определенным UAMs, который будет передан команде FPLoginCont. (Допустимый только, когда kFPAuthContinue возвращается как код результата.)

    UserAuthInfo

    Значение, возвращенное определенным UAMs, когда kFPAuthContinue возвращается как код результата.

    Рисунок 55 показывает запрос и блоки ответа для FPLoginExt команда.

    Рисунок 55Request и ответ блокируют для FPLoginExt команда image: ../Art/afp_027.eps
  • Завершает сеанс с сервером.

    Объявление

    Objective C

    uint8_t CommandCode uint8_t Pad

    Параметры

    CommandCode

    kFPLogout (20).

    Pad

    Байт клавиатуры.

    Result

    kFPNoErr если никакая ошибка не произошла, kFPParamErr если ссылочный номер сеанса неизвестен, или kFPMiscErr если ошибка произошла, который не является определенным для AFP.

    ReplyBlock

    Ни один.

    Обсуждение

    Эта команда завершает сеансы, установленные FPLoginи FPLoginExt. Сервер сбрасывает и закрывает любые ветвления, открытые сеансом, освобождает все связанные с сеансом ресурсы и лишает законной силы ссылочный номер сеанса.

    Рисунок 56 показывает блок запроса для FPLogout команда.

    Блок рисунка 56Request для FPLogout команда image: ../Art/afp_061.eps
  • Отображает Идентификатор пользователя, Группа ID, UUID или GUID к имени.

    Объявление

    Objective C

    uint8_t CommandCode uint8_t Subfunction int32_t or int64_t ID

    Параметры

    CommandCode

    kFPMapID (21).

    Subfunction

    Подфункциональный код. Возможные подфункциональные коды перечислены в Константах FPMapID.

    Посмотрите раздел Character Encoding Понятий файлового протокола Apple в Руководстве по программированию файлового протокола Apple для дополнительных подробных данных о UTF-8 кодирование используемого AFP.

    ID

    Группа ID, Идентификатор пользователя, UUID или GUID, который будет отображен.

    Поле ID int32_t для пользователя и группы IDs, или int64_t для UUIDs или GUIDs.

    Result

    kFPNoErr если никакая ошибка не произошла, kFPParamErr если ссылочный номер сеанса или подфункциональный код неизвестны, kFPItemNotFound если ID не был найден, или kFPMiscErr если ошибка произошла, который не является определенным для AFP.

    ReplyBlock

    Если код результата kFPNoErr, сервер возвращает блок ответа. Блок ответа отличается в зависимости от подкоманды.

    Для всех подкоманд кроме kUserUUIDToUTF8Name и kGroupUUIDToUTF8Name, блок ответа состоит из строки, вызванной Name, содержа соответствующее имя ID. Имя может быть строкой до 255 символов Macintosh Roman или AFPName до 255 символов.

    Для kUserUUIDToUTF8Name и kGroupUUIDToUTF8Name, блок ответа следующие:

    • uint32_t objType; /* 1 if UID, 2 if GID */
    • uint32_t id; /* user or group ID */
    • uint8_t name[kAFPMaxFileNameBytes + 1];

    Обсуждение

    Сервер получает пользователя, или название группы в этом соответствует указанному Идентификатору пользователя, Группа ID, UUID или GUID.

    Subfunction параметр говорит серверу который база данных (пользователь или группа) искать сначала. Пользователь и группа, IDs прибывает из того же пула чисел, поэтому если ID был присвоен, FPMapID всегда возвращает пользователя или название группы. Подфункциональные коды описаны в Константах FPMapID.

    Рисунок 57 показывает запрос и блоки ответа для FPMapID команда.

    Рисунок 57Request и ответ блокируют для FPMapID команда image: ../ART/afp_034.eps
  • Отображает имя пользователя или название группы к Идентификатору пользователя, Группа ID, UUID или GUID.

    Объявление

    Objective C

    uint8_t CommandCode uint8_t Subfunction string Name

    Параметры

    CommandCode

    kFPMapName (22).

    Subfunction

    Подфункциональные коды. Подфункциональные коды описаны в Константах FPMapName.

    Посмотрите раздел Character Encoding Понятий файлового протокола Apple в Руководстве по программированию файлового протокола Apple для дополнительных подробных данных о UTF-8 кодирование используемого AFP.

    Name

    Имя, которое должно быть отображено на ID. Имя может быть строкой до 255 символов Macintosh Roman или AFPName до 255 символов.

    Result

    kFPNoErr если никакая ошибка не произошла, kFPParamErr если ссылочный номер сеанса или подфункциональный код неизвестны, kFPItemNotFound если ID не был найден, или kFPMiscErr если ошибка произошла, который не является определенным для AFP.

    ReplyBlock

    Если код результата kFPNoErr, сервер возвращает блок ответа. Блок ответа состоит из int32_t, вызванный ID, содержа ID, соответствующий входному имени.

    Обсуждение

    Сервер получает Идентификационный номер, соответствующий указанному пользователю или названию группы или возвращающий a kFPItemNotFound закончитесь код, если он не находит имя в своем списке допустимых имен.

    Subfunction параметр говорит серверу который база данных (пользователь или группа) искать сначала. Если у Вас есть пользователь и группа, которые и называют «Фредом», и Вы вызываете FPMapName, подфункциональный код определит, в которой базе данных (пользователь или группа) найдено соответствие.

    Рисунок 58 показывает запрос и блоки ответа для FPMapName команда.

    Рисунок 58Request и ответ блокируют для FPMapName команда image: ../ART/afp_035.eps
  • Перемещает CNode в другое расположение на объеме или переименовывает CNode.

    Объявление

    Objective C

    uint8_t CommandCode uint8_t Pad int16_t VolumeID int32_t SourceDirectoryID int32_t DestDirectoryID uint8_t SourcePathType string SourcePathname uint8_t DestPathType string DestPathname uint8_t NewType string NewName

    Параметры

    CommandCode

    kFPMoveAndRename (23).

    Pad

    Байт клавиатуры.

    VolumeID

    Объем ID.

    SourceDirectoryID

    Исходный Каталог наследователя ID.

    DestDirectoryID

    Целевой Каталог наследователя ID.

    SourcePathType

    Тип имен в SourcePathname. Посмотрите Константы Типа тракта для возможных значений.

    SourcePathname

    Путь файла или каталога, который будет перемещен (может быть нуль, если каталог перемещается). SourcePathname строка, если она содержит Короткие или Длинные Имена или AFPName, если она содержит путь UTF-8–encoded.

    DestPathType

    Тип имен в DestPathname. Посмотрите Константы Типа тракта для возможных значений.

    DestPathname

    Путь файла или каталога, который будет перемещен (может быть нуль, если каталог перемещается). DestPathname строка, если она содержит Короткие или Длинные Имена или AFPName, если она содержит путь UTF-8–encoded.

    NewType

    Тип имени в NewName. Посмотрите Константы Типа тракта для возможных значений.

    NewName

    Новое имя файла или каталога (может быть нуль). NewName строка, если она содержит Короткие или Длинные Имена или AFPName, если она содержит путь UTF-8–encoded.

    Result

    kFPNoErr если не произошла никакая ошибка. Посмотрите Таблицу 51 для других возможных кодов результата.

    ReplyBlock

    Если код результата kFPNoErr, сервер возвращает блок ответа. Блок ответа состоит из одного из следующих (в зависимости от запроса):

    • int32_t вызванный ID, содержащий Группу или Идентификатор пользователя, соответствующий входному имени.

    • int64_t вызванный ID, содержащий UUID или GUID, соответствующий входному имени.

    Обсуждение

    Эта команда копии и дополнительно переименовывает CNode и удаляет CNode из исходного родительского каталога. Если NewName параметр является нулем, перемещенный CNode сохраняет его настоящее имя. Иначе, сервер перемещает CNode, создавая Длинные или Краткие названия, как описано в разделе «Catalog Node Names» в Главе 1. Дата модификации CNODE и дата модификации источника и целевых родительских каталогов установлены в часы сервера. Родитель CNODE ID установлен в целевого Родителя ID. Все другие параметры остаются неизменными, и если CNode является каталогом, параметры всех происходящих каталогов и файлов остаются неизменными.

    FPMoveAndRename команда указывает место назначения перемещения путем указания Каталога наследователя ID и путь к целевому родительскому каталогу CNODE.

    . если CNode также, быть перемещенным является каталогом, все его потомки перемещены

    Для перемещения каталога у пользователя должен быть поисковый доступ ко всем наследователям, вниз к и включая источник и целевые родительские каталоги, а также доступ для записи к тем каталогам. Для перемещения файла у пользователя должен быть поисковый доступ ко всем наследователям, кроме источника и целевых родителей, а также доступа для чтения и доступа для записи к исходному родительскому каталогу и доступа для записи к целевому родительскому каталогу.

    Даже если обоими объемами управляет тот же сервер, CNode не может быть перемещен от одного объема до другого с этой командой.

    Посмотрите раздел Character Encoding Понятий файлового протокола Apple в Руководстве по программированию файлового протокола Apple для дополнительных подробных данных о UTF-8 кодирование используемого AFP.

    Таблица 51 перечисляет коды результата для FPMoveAndRename команда.

    Таблица 51Result кодирует для FPMoveAndRename команда

    Код результата

    Объяснение

    kFPAccessDenied

    Пользователю не требовали, чтобы права доступа переместили или переименовали указанный файл или каталог.

    kFPCantMove

    Попытка была предпринята для перемещения каталога в один из его происходящих каталогов.

    kFPInsideSharedErr

    Перемещаемый каталог содержит sharepoint и перемещается в каталог, который совместно используется или является потомком совместно использующегося каталога.

    kFPInsideTrashErr

    Общий каталог перемещается в Мусор; каталог перемещается в мусор, и это содержит совместно используемую папку.

    kFPMiscErr

    Ошибка неAFP произошла.

    kFPObjectExists

    Файл или каталог, указывающий имя NewName уже существует.

    kFPObjectLocked

    Каталогом, перемещаемым, переименованным, или перемещенным и переименованным, является отмеченный RenameInhibit; файлом, перемещаемым и переименованным, является отмеченный RenameInhibit.

    kFPObjectNotFound

    Входные параметры не указывают на существующий файл или каталог.

    kFPParamErr

    Ссылочный номер сеанса, Объем ID или тип пути неизвестен; путь или NewName недопустимо.

    kFPVolLocked

    Объемом является ReadOnly.

    Рисунок 59 показывает блок запроса для FPMoveAndRename команда.

    Блок рисунка 59Request для FPMoveAndRename команда image: ../ART/afp_062.eps
  • FPOpenDir FPOpenDir Осуждаемый в OS X

    Открывает каталог на переменном Каталоге объем ID и возвращает его Каталог ID.

    Объявление

    Objective C

    uint8_t CommandCode uint8_t Pad int16_t VolumeID int32_t DirectoryID uint8_t PathType string Pathname

    Параметры

    CommandCode

    kFPOpenDir (25).

    Pad

    Байт клавиатуры.

    VolumeID

    Объем ID.

    DirectoryID

    Каталог наследователя ID.

    PathType

    Тип имен в Pathname. Посмотрите Константы Типа тракта для возможных значений.

    Pathname

    Путь файла или каталога, который будет перемещен (может быть нуль, если каталог перемещается). Pathname строка, если она содержит Короткие или Длинные Имена или AFPName, если она содержит путь UTF-8–encoded. Посмотрите раздел Character Encoding Понятий файлового протокола Apple в Руководстве по программированию файлового протокола Apple для дополнительных подробных данных о UTF-8 кодирование используемого AFP.

    Result

    kFPNoErr если не произошла никакая ошибка. Посмотрите Таблицу 52 для других возможных кодов результата.

    ReplyBlock

    Если код результата kFPNoErr, сервер возвращает блок ответа. Блок ответа состоит из int32_t вызванный DirectoryID содержа Каталог ID открытого каталога.

    Обсуждение

    Если VolumeID указывает переменный Каталог объем ID, сервер генерирует Каталог ID для указанного каталога. Если VolumeID указывает фиксированный Каталог тип ID, сервер возвращает фиксированный Каталог ID, принадлежащий каталогу, указанному Pathname.

    Несмотря на то, что эта команда может получить Каталог ID для каталога на фиксированном Каталоге объем ID, рекомендуемый способ получить Каталог ID для каталога на фиксированном Каталоге объем ID состоит в том, чтобы вызвать FPGetFileDirParms.

    У пользователя должен быть поисковый доступ ко всем наследователям вниз к и включая родительский каталог указанного каталога.

    Таблица 52 перечисляет коды результата для FPOpenDir команда.

    Таблица 52Result кодирует для FPOpenDir команда

    Код результата

    Объяснение

    kFPAccessDenied

    Пользователю не требовали, чтобы права доступа открыли каталог.

    kFPMiscErr

    Ошибка неAFP произошла.

    kFPObjectNotFound

    Входные параметры не указывают на существующий каталог.

    kFPObjectTypeErr

    Входные параметры указывают на файл.

    kFPParamErr

    Ссылочный номер сеанса, Объем ID или тип пути неизвестен; путь недопустим.

    Рисунок 60 показывает запрос и блоки ответа для FPOpenDir команда.

    Рисунок 60Request и ответ блокируют для FPOpenDir команда image: ../ART/afp_063.eps

    Доступность

    Осуждаемый в OS X.

  • FPOpenDT FPOpenDT Осуждаемый в OS X v.10.6

    Открывает базу данных Desktop по определенному объему.

    Объявление

    Objective C

    uint8_t CommandCode uint8_t Pad int16_t VolumeID

    Параметры

    CommandCode

    kFPOpenDT (48).

    Pad

    Байт клавиатуры.

    VolumeID

    Объем ID.

    Result

    kFPNoErr если никакая ошибка не произошла, kFPParamErr если ссылочный номер сеанса или VolumeID неизвестно, или kFPMiscErr если ошибка произошла, который не является определенным для AFP.

    ReplyBlock

    Если код результата kFPNoErr, сервер возвращает блок ответа. Блок ответа состоит из int16_t, вызванного DTRefNum, содержа Настольное число ссылки на базу данных.

    Обсуждение

    Сервер открывает базу данных Desktop по выбранному объему и возвращает Настольное число ссылки на базу данных, которое уникально среди таких ссылочных номеров. Настольное число ссылки на базу данных должно использоваться во всех последующих командах базы данных Desktop, касающихся этого объема.

    Пользователь, должно быть, ранее вызвал FPOpenVol для этого объема.

    Рисунок 61 показывает запрос и блоки ответа для FPOpenDT команда.

    Рисунок 61Request и ответ блокируют для FPOpenDT команда image: ../ART/afp_064.eps

    Доступность

    Осуждаемый в OS X v.10.6.

  • Открывает ветвление существующего файла для чтения или записи.

    Объявление

    Objective C

    uint8_t CommandCode uint8_t Flag int16_t VolumeID int32_t DirectoryID int16_t Bitmap int16_t AccessMode uint8_t PathType string Pathname

    Параметры

    CommandCode

    kFPOpenFork (26).

    Flag

    Бит 7 из Flag параметр ResourceDataFlag бит, и это указывает, какое ветвление открыться, где 0 указывает, ветвь данных и 1 указывает ветвь ресурсов.

    VolumeID

    Объем ID.

    DirectoryID

    Каталог наследователя ID.

    Bitmap

    Битовый массив, описывающий параметры ветвления, которые будут возвращены. Установите бит, соответствующий каждому желаемому параметру. Этот битовый массив совпадает с параметром FileBitmap FPGetFileDirParms команда и может быть нулем. Для разрядных определений для битового массива Файла посмотрите Битовый массив Файла и Каталога.

    AccessMode

    Желаемый доступ и отклоняет режимы, указанные любой комбинацией следующих битов:

    0 = Читайте — позволяет ветвлению быть считанным.

    1 = Запишите — позволяет ветвлению быть записанным.

    4 = DenyRead — препятствует тому, чтобы другие читали ветвление, в то время как это открыто.

    5 = DenyWrite — препятствует тому, чтобы другие писали ветвление, в то время как это открыто.

    Для получения дополнительной информации о доступе и отклоните режимы, посмотрите Режимы Совместного доступа к файлам в Руководстве по программированию файлового протокола Apple.

    PathType

    Тип имен в Pathname. Посмотрите Константы Типа тракта для возможных значений.

    Pathname

    Путь к желаемому файлу (не может быть нуль). Pathname строка, если она содержит Короткие или Длинные Имена или AFPName, если она содержит путь UTF-8–encoded. Посмотрите Кодировку символов AFP в Руководстве по программированию файлового протокола Apple для дополнительных подробных данных о UTF-8 кодирование используемого AFP.

    Result

    kFPNoErr если не произошла никакая ошибка. Посмотрите Таблицу 53 для возможных кодов результата.

    ReplyBlock

    Если код результата kFPNoErr, сервер возвращает блок ответа. Посмотрите Таблицу 54 для формата блока ответа.

    Обсуждение

    Сервер открывает указанное ветвление, если у пользователя есть права доступа для требуемого режима доступа и если режим доступа не конфликтует с путями уже-открытого-доступа к ветвлению.

    Если ветвление открыто, возвраты сервера в ответе блокируют копию входного битового массива, открытого ссылочного номера ветвления для использования со всеми последующими командами, включающими открытое ветвление, и сопровождаемый параметрами файла, упакованными в растровом порядке.

    Параметры файла возвращаются, только если команда завершается без ошибки или если команда возвращается с a kFPDenyConflict код результата. В последнем случае сервер возвращает ссылку ветвления нуля.

    A kFPBitmapErr если попытка предпринята для получения продолжительности другого ветвления файла, код результата возвращается.

    Сервер должен сохранить параметры переменной длины, такие как Длинное Имя или Краткое название, в конце блока ответа. Чтобы сделать это, сервер представляет параметры переменной длины в растровом порядке как смещения фиксированной длины (целое число) к запуску параметров переменной длины. Фактические поля переменной длины тогда упаковываются после всех параметров фиксированной длины.

    Если ветвление открыто, и пользователь запросил атрибуты файла в битовом массиве файла, надлежащем DAlreadyOpen или RAlreadyOpen бит установлен.

    Для открытия ветвления для чтения или никакого доступа (когда никакой доступ для чтения или доступ для записи не требуют) у пользователя должен быть поисковый доступ ко всем наследователям, кроме родительского каталога, а также доступа для чтения к родительскому каталогу. Для получения информации о режимах доступа см. “Режимы Совместного доступа к файлам” в разделе «Introduction».

    Для открытия ветвления для доступа для записи объем не должен определяться для доступа только для чтения. Если оба ветвления в настоящее время пусты, у пользователя должен быть поисковый или доступ для записи ко всем наследователям, кроме родительского каталога, а также доступа для записи к родительскому каталогу. Если любое ветвление не пусто, и одно из ветвлений открывается для записи, у пользователя должен быть поисковый доступ ко всем наследователям, кроме родительского каталога, а также доступа для чтения и доступа для записи к родительскому каталогу.

    Пользователь, должно быть, ранее вызвал FPOpenVol для этого объема. Каждое ветвление должно быть открыто отдельно; уникальная ссылка ветвления возвращается для каждого ветвления.

    Таблица 53 перечисляет коды результата для FPOpenFork команда.

    Таблица 53Result кодирует для FPOpenFork команда

    Код результата

    Объяснение

    kFPAccessDenied

    Пользователю не требовали, чтобы права доступа открыли указанное ветвление.

    kFPBitmapErr

    Попытка была предпринята для получения параметра, который не может быть получен с этой командой (ветвление не открыто).

    kFPDenyConflict

    Файл или ветвление не могут быть открыты из-за отклонять конфликта режимов.

    kFPMiscErr

    Ошибка неAFP произошла.

    kFPObjectNotFound

    Входные параметры не указывают на существующий файл.

    kFPObjectLocked

    Попытка была предпринята для открытия файла для записи, которая является отмеченным WriteInhibit.

    kFPObjectTypeErr

    Входные параметры указывают на каталог.

    kFPParamErr

    Ссылочный номер сеанса, Объем ID или тип пути неизвестен; путь недопустим.

    kFPTooManyFilesOpen

    Сервер не может открыть другое ветвление.

    kFPVolLocked

    Попытка была предпринята для открытия для записи файла на объеме, который является отмеченным ReadOnly.

    Таблица 54 описывает блок ответа для FPOpenForkкоманда.

    Блок Table 54Reply для FPOpenFork команда

    Имя и размер

    Данные

    Bitmap (int16_t)

    Копия входного параметра.

    OForkRefNum (int16_t)

    Открытый ссылочный номер ветвления для использования при обращении к этому подцепляет на вилку при отправке последующих команд.

    FileParameters

    Требуемые параметры.

    Рисунок 62 показывает запрос и блоки ответа для FPOpenFork команда.

    Рисунок 62Request и ответ блокируют для FPOpenFork команда image: ../ART/afp_065.eps
  • Открывает объем.

    Объявление

    Objective C

    uint8_t CommandCode uint8_t Pad int16_t Bitmap string VolumeName 8 bytes Password

    Параметры

    CommandCode

    kFPOpenVol (24).

    Pad

    Байт клавиатуры.

    Bitmap

    Битовый массив, описывающий параметры, которые должны быть возвращены. Установите бит, соответствующий каждому желаемому параметру. Битовый массив совпадает с битовым массивом Объема, используемым FPGetVolParms команда и не может быть нулем. Для разрядных определений посмотрите Битовый массив Объема.

    VolumeName

    Имя объема, как возвращено FPGetSrvrParms.

    Password

    Дополнительный пароль тома.

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

    Возвраты kFPNoErr если не произошла никакая ошибка. Посмотрите Таблицу 55 для возможных кодов результата.

    Если код результата kFPNoErr, сервер возвращает блок ответа. Посмотрите Таблицу 56 для формата блока ответа.

    Обсуждение

    Эта команда должна быть сделана, прежде чем любая другая команда может быть сделана получить доступ к CNodes на указанном объеме.

    Если пароль требуется, чтобы получать доступ к объему, это отправляется как Password параметр в открытом тексте. Добавьте нулевые байты к паролю по мере необходимости для получения длины восьми байтов. Сравнение пароля чувствительно к регистру. Если предоставленный пароль не соответствует пароль, сохраненный объему, или если пароль не предоставляется, когда пароль требуется, сервер возвращает код результата kFPAccessDenied.

    Если пароли соответствуют, или если объем не защищен паролем, пакеты сервера, требуемые параметры в ответе блокируют пользователя, могут теперь отправить команды, связанные с CNodes на объеме.

    Bitmap параметр должен запросить, чтобы был возвращен Объем ID. Нет никакого другого способа получить Объем ID, требующийся большинством последующих команд, связанных с этим объемом.

    Таблица 55 перечисляет коды результата для FPOpenVol команда.

    Таблица 55Result кодирует для FPOpenVol команда

    Код результата

    Объяснение

    kFPAccessDenied

    Пароль не предоставляется или не соответствует.

    kFPBitmapErr

    Попытка была предпринята для получения параметра, который не может быть получен с этой командой. (Битовый массив является нулем.)

    kFPMiscErr

    Ошибка неAFP произошла.

    kFPObjectNotFound

    Входные параметры не указывают на существующий объем.

    kFPParamErr

    Ссылочный номер сеанса или имя тома неизвестны.

    Таблица 56 описывает блок ответа для FPOpenVol команда.

    Блок Table 56Reply для FPOpenVol команда

    Имя и размер

    Данные

    Bitmap (int16_t)

    Копия входного параметра.

    VolumeParameters

    Требуемые параметры, включая Объем ID, для открытого объема.

    Рисунок 63 показывает запрос и блоки ответа для FPOpenVol команда.

    Рисунок 63Request и ответ блокируют для FPOpenVol команда image: ../ART/afp_066.eps
  • Читает блок данных.

    Объявление

    Objective C

    uint8_t CommandCode uint8_t Pad int16_t OForkRefNum int32_t Offset int32_t ReqCount uint8_t NewLineMask uint8_t NewLineChar

    Параметры

    CommandCode

    kFPRead (27).

    Pad

    Байт клавиатуры.

    OForkRefNum

    Открытый ссылочный номер ветвления.

    Offset

    Число первого байта, который будет читать.

    ReqCount

    Число байтов для чтения.

    NewLineMask

    Маска для определения, где должно завершиться чтение.

    NewLineChar

    Символ для определения, где должно завершиться чтение.

    Result

    kFPNoErr если не произошла никакая ошибка. Посмотрите Таблицу 57 для возможных кодов результата.

    ReplyBlock

    Если код результата kFPNoErr, сервер возвращает блок ответа, содержащий считанные данные.

    Обсуждение

    Эта команда получает указанный диапазон байтов от открытого ветвления. Вызвать FPOpenFork открыть ветвление. Сервер начинает читать в числе байта, указанном Offset параметр. Чтение остановок, когда одно из следующего происходите:

    • Сервер встречается с символом, указанным комбинацией NewLineMask и NewLineChar параметры

    • Сервер достигает конца ветвления

    • Сервер встречается с запуском диапазона, заблокированного другим пользователем

    • Сервер читает число байтов, указанных ReqCount параметр

    Если сервер достигает конца ветвления или запуска заблокированного диапазона, это возвращает все чтение данных той точке и коду результата kFPEOFErr или kFPLockErr, соответственно.

    NewLineMask параметр является маской байта, которая должна быть логически ANDed с копией каждого побайтового чтения. Если результат соответствует NewLineChar параметр, чтение завершается. Используя a NewLineMask значение нуля по существу отключает опцию проверки Новой строки.

    Если пользователь читает байт, никогда не писавшийся в ветвление, результат не определен.

    Заблокируйте диапазон, который будет считан прежде, чем отправить эту команду. Механизм базовой передачи может вынудить запрос быть поврежденным в многократные меньшие запросы. Если диапазон не заблокирован, когда эта команда начинает выполнение, для другого пользователя возможно заблокировать некоторых или весь диапазон, прежде чем эта команда завершится, заставляя чтение успешно выполниться частично.

    Таблица 57 перечисляет коды результата для FPRead команда.

    Таблица 57Result кодирует для FPRead команда

    Код результата

    Объяснение

    kFPAccessDenied

    Ветвление не было открыто для доступа для чтения.

    kFPEOFErr

    Конец ветвления был достигнут.

    kFPLockErr

    Некоторые или весь требуемый диапазон заблокированы другим пользователем.

    kFPMiscErr

    Ошибка неAFP произошла.

    kFPParamErr

    Ссылочный номер сеанса или открытый ссылочный номер ветвления неизвестны; ReqCount или Смещение отрицательны; NewLineMask недопустимо.

    Рисунок 64 показывает запрос и блоки ответа для FPRead команда.

    Рисунок 64Request и ответ блокируют для FPRead команда image: ../Art/afp_067.eps

    Доступность

    Осуждаемый. Использовать

  • Читает блок данных.

    Объявление

    Objective C

    uint8_t CommandCode uint8_t Pad int16_t OForkRefNum int64_t Offset int64_t ReqCount

    Параметры

    CommandCode

    kFPReadExt (60).

    Pad

    Байт клавиатуры.

    OForkRefNum

    Открытый ссылочный номер ветвления.

    Offset

    Число первого байта, который будет читать.

    ReqCount

    Число байтов для чтения.

    Result

    kFPNoErr если не произошла никакая ошибка. Посмотрите Таблицу 58 для возможных кодов результата.

    ReplyBlock

    Если код результата kFPNoErr, сервер возвращает блок ответа, содержащий считанные данные.

    Обсуждение

    Эта команда получает указанный диапазон байтов от открытого ветвления. Вызвать FPOpenFork открыть ветвление.

    Эта команда отличается от FPRead команда в той этой команде подготовлена обработать большие значения, которые могут быть возвращены для файлов нахожение в объемах, больше, чем 4 ГБ в размере. Кроме того, эта команда не поддерживает NewlineMask и NewlineChar параметры это FPRead поддержки.

    Сервер начинает читать в числе байта, указанном Offset параметр. Чтение остановок, когда одно из следующего происходите:

    • Сервер достигает конца ветвления

    • Сервер встречается с запуском диапазона, заблокированного другим пользователем

    • Сервер читает число байтов, указанных ReqCount параметр

    Если сервер достигает конца ветвления или запуска заблокированного диапазона, это возвращает все чтение данных той точке и коду результата kFPEOFErr или kFPLockErr, соответственно.

    Если пользователь читает байт, никогда не писавшийся в ветвление, результат не определен.

    Заблокируйте диапазон, который будет считан прежде, чем отправить эту команду. Механизм базовой передачи может вынудить запрос быть поврежденным в многократные меньшие запросы. Если диапазон не заблокирован, когда эта команда начинает выполнение, для другого пользователя возможно заблокировать некоторых или весь диапазон, прежде чем эта команда завершится, заставляя чтение успешно выполниться частично.

    Таблица 58 перечисляет коды результата для FPReadExt команда.

    Таблица 58Result кодирует для FPReadExt команда

    Код результата

    Объяснение

    kFPAccessDenied

    Ветвление не было открыто для доступа для чтения.

    kFPEOFErr

    Конец ветвления был достигнут.

    kFPLockErr

    Некоторые или весь требуемый диапазон заблокированы другим пользователем.

    kFPMiscErr

    Ошибка неAFP произошла.

    kFPParamErr

    Ссылочный номер сеанса или открытый ссылочный номер ветвления неизвестны; ReqCount или Offset отрицательно.

    Рисунок 65 показывает запрос и блоки ответа для FPReadExt команда.

    Рисунок 65Request и ответ блокируют для FPReadExt команда image: ../ART/afp_025.eps
  • FPRemoveAPPL FPRemoveAPPL Осуждаемый в OS X v.10.6

    Удаляет APPL, отображающийся из базы данных Desktop объема.

    Объявление

    Objective C

    uint8_t CommandCode uint8_t Pad int16_t DTRefNum int32_t DirectoryID int32_t FileCreator uint8_t PathType string Pathname

    Параметры

    CommandCode

    kFPRemoveAPPL (54).

    Pad

    Байт клавиатуры.

    DTRefNum

    Настольное число ссылки на базу данных.

    DirectoryID

    Каталог наследователя ID.

    FileCreator

    Создатель файла приложения, соответствующего APPL, отображающемуся, который должен быть удален.

    PathType

    Тип имен в Pathname. Посмотрите Константы Типа тракта для возможных значений.

    Pathname

    Путь к желаемому файлу (не может быть нуль). Pathname строка, если она содержит Короткие или Длинные Имена или AFPName, если она содержит путь UTF-8–encoded. Посмотрите раздел Character Encoding Понятий файлового протокола Apple в Руководстве по программированию файлового протокола Apple для дополнительных подробных данных о UTF-8 кодирование используемого AFP.

    Result

    kFPNoErr если не произошла никакая ошибка. Посмотрите Таблицу 59 для возможных кодов результата.

    ReplyBlock

    Ни один.

    Обсуждение

    Сервер определяет местоположение в базе данных Desktop отображения APPL, соответствующего указанному приложению и создателю файла. Если отображение APPL найдено, оно удалено.

    У пользователя должен быть поисковый доступ ко всем наследователям, кроме родительского каталога, а также доступа для чтения и доступа для записи к родительскому каталогу.

    Пользователь, должно быть, ранее вызвал FPOpenDT для соответствующего объема. Кроме того, файл должен существовать в указанном каталоге, прежде чем будет отправлена эта команда.

    Таблица 59 перечисляет коды результата для FPRemoveAPPL команда.

    Таблица 59Result кодирует для FPRemoveAPPL команда

    Код результата

    Объяснение

    kFPAccessDenied

    Пользователю не требовали, чтобы права доступа использовали эту команду.

    kFPItemNotFound

    Никакое отображение APPL, соответствующее входным параметрам, не было найдено в базе данных Desktop.

    kFPMiscErr

    Ошибка неAFP произошла.

    kFPObjectNotFound

    Входные параметры не указывают на существующий файл.

    kFPParamErr

    Ссылочный номер сеанса или Настольное число ссылки на базу данных неизвестны.

    Рисунок 66 показывает запрос и блоки ответа для FPRemoveAPPL команда.

    Рисунок 66Request и ответ блокируют для FPRemoveAPPL команда image: ../ART/afp_068.eps

    Доступность

    Осуждаемый в OS X v.10.6.

  • FPRemoveComment FPRemoveComment Осуждаемый в OS X v.10.6

    Удаляет комментарий из базы данных Desktop объема.

    Объявление

    Objective C

    uint8_t CommandCode uint8_t Pad int16_t DTRefNum int32_t DirectoryID uint8_t PathType string Pathname

    Параметры

    CommandCode

    kFPRemoveComment (57).

    Pad

    Байт клавиатуры.

    DTRefNum

    Настольное число ссылки на базу данных.

    DirectoryID

    Каталог наследователя ID.

    PathType

    Тип имен в Pathname. Посмотрите Константы Типа тракта для возможных значений.

    Pathname

    Путь к CNode, комментарий которого удаляется (не может быть нуль). Pathname строка, если она содержит Короткие или Длинные Имена или AFPName, если она содержит путь UTF-8–encoded. Посмотрите раздел Character Encoding Понятий файлового протокола Apple в Руководстве по программированию файлового протокола Apple для дополнительных подробных данных о UTF-8 кодирование используемого AFP.

    Result

    kFPNoErr если не произошла никакая ошибка. Посмотрите Таблицу 60 для возможных кодов результата.

    ReplyBlock

    Ни один.

    Обсуждение

    Если комментарий связан с каталогом, который не пуст, у пользователя должен быть поисковый доступ ко всем наследователям, включая родительский каталог, плюс доступ для записи к родительскому каталогу. Если комментарий связан с пустым каталогом, у пользователя должен быть поисковый или доступ для записи ко всем наследователям, включая родительский каталог, плюс доступ для записи к родительскому каталогу.

    Если комментарий связан с файлом, который не пуст, у пользователя должен быть поисковый доступ ко всем наследователям, кроме родительского каталога, плюс доступ для чтения и доступ для записи к родительскому каталогу. Если комментарий связан с пустым файлом, у пользователя должен быть поисковый или доступ для записи ко всем наследователям, кроме родительского каталога, плюс доступ для записи к родительскому каталогу.

    Пользователь, должно быть, ранее вызвал FPOpenDT для соответствующего объема.

    Таблица 60 перечисляет коды результата дляFPRemoveComment команда.

    Таблица 60Result кодирует для FPRemoveComment команда

    Код результата

    Объяснение

    kFPAccessDenied

    Пользователю не требовали, чтобы права доступа использовали эту команду.

    kFPItemNotFound

    Комментарий не был найден в базе данных Desktop.

    kFPMiscErr

    Ошибка неAFP произошла.

    kFPObjectNotFound

    Входные параметры не указывают на существующий файл или каталог.

    kFPParamErr

    Ссылочный номер сеанса, Настольное число ссылки на базу данных или тип пути неизвестны; путь недопустим.

    Рисунок 67 показывает запрос и блоки ответа для FPRemoveComment команда.

    Рисунок 67Request и ответ блокируют для FPRemoveComment команда image: ../ART/afp_069.eps

    Доступность

    Осуждаемый в OS X v.10.6.

  • Удаляет расширенный атрибут.

    Объявление

    Objective C

    uint8_t CommandCode uint8_t Pad int16_t VolumeID int32_t DirectoryID uint16_t Bitmap uint8_t PathType string Pathname uint8_t Pad uint16_t NameLength string Name

    Параметры

    CommandCode

    kFPRemoveExtAttr (71).

    Pad

    Байт клавиатуры.

    VolumeID

    Идентификатор объема.

    DirectoryID

    Идентификатор каталога.

    Bitmap

    Битовый массив, указывающий желаемое поведение при удалении расширенного атрибута. Для этой команды, kAttrDontFollow единственный допустимый бит. Для получения дополнительной информации посмотрите “Extended Attributes Bitmap”.

    PathType

    Тип имен в Pathname. Посмотрите Константы Типа тракта для возможных значений.

    Pathname

    Путь к желаемому файлу или каталогу. Pathname строка, если она содержит Короткие или Длинные Имена или AFPName, если она содержит путь UTF-8–encoded.

    Pad

    Дополнительный байт клавиатуры в случае необходимости для дополнения к ровной границе.

    NameLength

    Длина в байтах следующего расширенного названия атрибута.

    Name

    Имя UTF-8–encoded расширенного атрибута, который должен быть удален.

    Result

    kFPNoErr если не произошла никакая ошибка. Посмотрите Таблицу 61 для других возможных кодов результата.

    Обсуждение

    Эта команда удаляет указанный расширенный атрибут.

    Поддержка этой команды, а также FPGetExtAttr, FPListExtAttrs, и FPSetExtAttr требуется для поддержки расширенных атрибутов. Поддержка UTF-8 также требуется для поддержки расширенных атрибутов. Посмотрите раздел Character Encoding Понятий файлового протокола Apple в Руководстве по программированию файлового протокола Apple для дополнительных подробных данных о UTF-8 кодирование используемого AFP.

    Таблица 61 перечисляет возможные коды результата для FPRemoveExtAttr команда.

    Таблица 61Result кодирует для FPRemoveExtAttr команда

    Код результата

    Объяснение

    kFPAccessDenied

    Пользователю не требовали, чтобы права доступа удалили расширенный атрибут для указанного файла или каталога.

    kFPBitmapErr

    Битовый массив является нулем или указывает значение, которое недопустимо для этой команды.

    kFPMiscErr

    Ошибка неAFP произошла.

    kFPObjectNotFound

    Входные параметры не указывают на существующий файл или каталог.

    kFPParamErr

    Параметр недопустим.

    Рисунок 68 показывает блок запроса для FPRemoveExtAttr команда.

    Блок рисунка 68Request для FPRemoveExtAttr команда image: ../ART/afp_FPRemoveExtAttr.eps
  • Переименовывает файл или каталог.

    Объявление

    Objective C

    uint8_t CommandCode uint8_t Pad int16_t VolumeID int32_t DirectoryID uint8_t PathType string Pathname uint8_t NewType string NewName

    Параметры

    CommandCode

    kFPRename (28).

    Pad

    Байт клавиатуры.

    VolumeID

    Объем ID.

    DirectoryID

    Каталог наследователя ID.

    PathType

    Тип имен в Pathname. Посмотрите Константы Типа тракта для возможных значений.

    Pathname

    Путь к CNode, имя которого изменяется (не может быть нуль). Pathname строка, если она содержит Короткие или Длинные Имена или AFPName, если она содержит путь UTF-8–encoded.

    NewType

    Тип имен в NewName. Посмотрите Константы Типа тракта для возможных значений.

    NewName

    Путь к CNode, включая его новое имя (не может быть нуль). NewName строка, если она содержит Короткие или Длинные Имена или AFPName, если она содержит путь UTF-8–encoded.

    Result

    kFPNoErr если не произошла никакая ошибка. Посмотрите Таблицу 62 для возможных кодов результата.

    ReplyBlock

    Ни один.

    Обсуждение

    Сервер присваивает новое имя к файлу или каталогу. Другое имя (Длинный или Короткий) сгенерировано, как описано в разделе «Catalog Node Names» в Главе 1. Дата модификации родительского каталога назначена к часам сервера.

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

    Посмотрите раздел Character Encoding Понятий файлового протокола Apple в Руководстве по программированию файлового протокола Apple для дополнительных подробных данных о UTF-8 кодирование используемого AFP.

    Таблица 62 перечисляет коды результата для FPRename команда.

    Таблица 62Result кодирует для FPRename команда

    Код результата

    Объяснение

    kFPAccessDenied

    Пользователю не требовали, чтобы права доступа использовали эту команду.

    kFPCantRename

    Попытка была предпринята для переименования объема или корневого каталога.

    kFPMiscErr

    Ошибка неAFP произошла.

    kFPObjectExists

    Файл или каталог, указывающий имя NewName уже существует.

    kFPObjectLocked

    Файлом или каталогом является отмеченный RenameInhibit.

    kFPObjectNotFound

    Входные параметры не указывают на существующий файл или каталог.

    kFPParamErr

    Ссылочный номер сеанса, Объем ID или тип пути неизвестен; путь или NewName недопустимо.

    kFPVolLocked

    Объемом является ReadOnly

    Рисунок 69 показывает блок запроса для FPRename команда.

    Блок рисунка 69Request для FPRename команда image: ../ART/afp_070.eps
  • Получает параметры для файла Идентификатором файла.

    Объявление

    Objective C

    uint8_t CommandCode uint8_t Pad int16_t VolumeID int32_t FileID int16_t Bitmap

    Параметры

    CommandCode

    kFPResolveID (41).

    Pad

    Байт клавиатуры.

    VolumeID

    Объем ID.

    FileID

    Идентификатор файла, который будет разрешен.

    Bitmap

    Битовый массив, описывающий параметры для возврата. Установите бит, соответствующий каждому желаемому параметру. Этот битовый массив совпадает с FileBitmap параметр FPGetFileDirParms команда. Для разрядных определений для этого битового массива посмотрите Битовый массив Файла и Каталога.

    Result

    kFPNoErr если не произошла никакая ошибка. Посмотрите Таблицу 63 для возможных кодов результата.

    ReplyBlock

    Если код результата kFPNoErr, сервер возвращает блок ответа. Посмотрите Таблицу 64 для формата блока ответа.

    Обсуждение

    Параметры, возвращенные этой командой, могут быть любым параметром, указанным в FPGetFileDirParms команда.

    У пользователя должны быть Только для чтения или полномочие Чтения и Записи использовать эту команду.

    Таблица 63 перечисляет коды результата для FPResolveID команда.

    Таблица 63Result кодирует для FPResolveID команда

    Код результата

    Объяснение

    kFPAccessDenied

    Пользователю не требовали, чтобы права доступа использовали эту команду.

    kFPBadIDErr

    Идентификатор файла не допустим.

    kFPCallNotSupported

    Сервер не поддерживает эту команду.

    kFPIDNotFound

    Идентификатор файла не был найден. (Никакой поток файла не существует.)

    kFPMiscErr

    Ошибка неAFP произошла.

    kFPParamErr

    Ссылочный номер сеанса, Объем ID или Идентификатор файла неизвестен.

    Таблица 64 описывает блок ответа для FPResolveID команда.

    Блок Table 64Reply для FPResolveID команда

    Имя и размер

    Данные

    Bitmap (int16_t)

    Копия входного битового массива.

    FileParameters

    Требуемые параметры файла.

    Рисунок 69 показывает запрос и блоки ответа для FPResolveID команда.

    Рисунок 70Request и ответ блокируют для FPResolveID команда image: ../ART/afp_011.eps
  • Устанавливает UUID, Группа UUID и ACL для файла или каталога и удаляет ACL из файла или каталога.

    Объявление

    Objective C

    uint8_t CommandCode uint8_t Pad int16_t VolumeID int32_t DirectoryID uint16_t Bitmap uint8_t Pathtype string Pathname uint8_t Pad AdditionalInformation

    Параметры

    CommandCode

    kFPSetACL (74).

    Pad

    Байт клавиатуры.

    VolumeID

    Идентификатор объема.

    DirectoryID

    Идентификатор каталога.

    Bitmap

    Биты, указывающие значения, которые должны быть установлены. Указать kFileSec_UUID установить UUID указанного файла или каталога. Указать kFileSec_GRPUUID установить Группу UUID указанного файла или каталога. Указать kFileSec_ACL установить ACL указанного файла или каталога или kFileSec_REMOVEACL удалить ACL файла или каталога.

    Если отправка этой команды является частью создания нового элемента, установите kFileSec_Inherit бит. Когда сервер получает FPSetACL команда та, в который kFileSec_Inherit бит установлен в Bitmap параметр, сервер сканирует текущий элемент, ища элементы списка управления доступом (ACEs) в который KAUTH_ACE_INHERITED бит установлен в ace_flags поле. Сервер копирует любой в настоящее время наследованный ACEs до конца входящего списка ACEs и устанавливает ACL на элементе. Для объявлений этих констант посмотрите Битовый массив Списка управления доступом.

    PathType

    Тип имен в Pathname. Посмотрите Константы Типа тракта для возможных значений.

    Pathname

    Путь домена Open Directory, для которого должны быть получены UAMs. Pathname строка, если она содержит Короткие или Длинные Имена или AFPName, если она содержит путь UTF-8–encoded. Посмотрите раздел Character Encoding Понятий файлового протокола Apple в Руководстве по программированию файлового протокола Apple для дополнительных подробных данных о UTF-8 кодирование используемого AFP.

    Pad

    Байт клавиатуры в случае необходимости для дополнения к ровной границе.

    AdditionalInformation

    Если kFileSec_UUID установлен в Bitmap параметр, первый элемент в этом параметре является UUID, который должен быть установлен. Если kFileSec_GRPUUID установлен, следующий элемент в этом параметре является Группой UUID, который должен быть установлен. Если kFileSec_ACL установлен, следующий элемент в этом параметре является a kauth_acl структура. Для получения информации об этой структуре посмотрите раздел Access Control List Structure. Если kFileSec_REMOVEACL установлен в Bitmap параметр, этот параметр не содержит a kauth_acl структура.

    Result

    kFPNoErr если не произошла никакая ошибка. Посмотрите Таблицу 65 для других возможных кодов результата.

    Обсуждение

    В зависимости от битов, установленных в Bitmap параметр, это наборы команд UUID, Группа UUID и ACL для указанного файла или каталога или удаляет ACL указанного файла или каталога.

    Поддержка этой команды, а также FPAccess и FPGetACL требуется чтобы к контрольным спискам доступа к поддержке (ACLs). Поддержка UTF-8 и UUIDs также требуется для поддержки ACLs. Посмотрите раздел Character Encoding Понятий файлового протокола Apple в Руководстве по программированию файлового протокола Apple для дополнительных подробных данных о UTF-8 кодирование используемого AFP.

    Таблица 65 перечисляет коды результата для FPSetACL команда.

    Таблица 65Result кодирует для FPSetACL команда

    Код результата

    Объяснение

    kFPAccessDenied

    Пользователю не требовали, чтобы права доступа установили ACL для указанного файла или каталога.

    kFPMiscErr

    Ошибка неAFP произошла.

    kFPObjectNotFound

    Входные параметры не указывают на существующий файл или каталог.

    kFPParamErr

    Параметр недопустим.

    Рисунок 35 показывает блок запроса для FPSetACL команда.

    Блок рисунка 71Request для FPSetACL команда image: ../ART/afp_FPSetACL.eps
  • Устанавливает параметры для каталога.

    Объявление

    Objective C

    uint8_t CommandCode uint8_t Pad int16_t VolumeID int32_t DirectoryID int16_t Bitmap uint8_t PathType string Pathname DirectoryParameters

    Параметры

    CommandCode

    kFPSetDirParms (29).

    Pad

    Байт клавиатуры.

    VolumeID

    Объем ID.

    DirectoryID

    Каталог наследователя ID.

    Bitmap

    Битовый массив, описывающий параметры для установки. Установите бит, соответствующий каждому желаемому параметру. Этот битовый массив совпадает с DirectoryBitmap параметр FPGetFileDirParms команда. Для разрядных определений для этого битового массива посмотрите Битовый массив Файла и Каталога.

    PathType

    Тип имени в Pathname. Посмотрите Константы Типа тракта для возможных значений.

    Pathname

    Путь к желаемому каталогу. Pathname строка, если она содержит Короткие или Длинные Имена или AFPName, если она содержит путь UTF-8–encoded. Посмотрите раздел Character Encoding Понятий файлового протокола Apple в Руководстве по программированию файлового протокола Apple для дополнительных подробных данных о UTF-8 кодирование используемого AFP.

    DirectoryParameters

    Параметры, которые будут установлены, упакованные в растровом порядке.

    Result

    kFPNoErr если не произошла никакая ошибка. Посмотрите Таблицу 66 для возможных кодов результата.

    ReplyBlock

    Ни один.

    Обсуждение

    Это наборы команд или очищают определенные параметры и атрибуты, которые характерны и для файлов и для каталогов. Параметры являются Невидимыми атрибутами и Системными атрибутами, Датой создания, Датой Модификации, Резервной Датой, Информацией Средства поиска и полномочиями UNIX.

    Параметры должны быть упакованы, в растровом порядке, в блоке запроса. Параметры переменной длины, такие как Длинное Имя и Краткое название, должны быть сохранены в конце блока. Чтобы сделать это, параметры переменной длины представлены в растровом порядке, поскольку фиксированная длина смещает (целые числа). Эти смещения измеряются от запуска параметров к запуску параметров переменной длины. Фактические параметры переменной длины тогда упаковываются после всех параметров фиксированной длины.

    Изменение прав доступа каталога сразу влияет на другие открытые сеансы. Если у пользователя нет прав доступа для установки одного из параметров, a kFPAccessDenied код результата возвращается, и никакие параметры не устанавливаются.

    Чтобы установить права доступа каталога, Владелец ID, Группа, ID, или изменить DeleteInhibit, RenameInhibit, WriteInhibit или Невидимые атрибуты, пользователь должен иметь поисковый или доступ для записи ко всем наследователям, включая родительский каталог этого каталога, и пользователь должен быть владельцем каталога. Для установки любого параметра кроме тех упомянутых выше для пустого каталога у пользователя должен быть поисковый или доступ для записи ко всем наследователям, кроме родительского каталога, а также доступа для записи к родительскому каталогу. Для установки любого параметра кроме тех упомянутых выше для каталога, который не пуст у пользователя должен быть поисковый доступ ко всем наследователям, включая родительский каталог, а также доступ для записи к родительскому каталогу.

    Эта команда не может использоваться для определения имени каталога; вместо этого, используйте FPRename. Эта команда не может использоваться для установки Родительского каталога каталога ID; вместо этого, используйте FPMoveAndRename. Эта команда не может использоваться для установки Каталога каталога количество Потомков или ID.

    Таблица 66 перечисляет коды результата для FPSetDirParms команда.

    Таблица 66Result кодирует для FPSetDirParms команда

    Код результата

    Объяснение

    kFPAccessDenied

    Пользователю не требовали, чтобы права доступа использовали эту команду.

    kFPBitmapErr

    Попытка была предпринята для установки параметра, который не может быть установлен этой командой; битовый массив является нулем.

    kFPMiscErr

    Ошибка неAFP произошла.

    kFPObjectNotFound

    Входные параметры не указывают на существующий каталог.

    kFPObjectTypeErr

    Входные параметры указывают на файл.

    kFPParamErr

    Ссылочный номер сеанса, Объем ID или тип пути неизвестен; путь, Владелец ID или Группа ID недопустим.

    kFPVolLocked

    Объемом является ReadOnly.

    Рисунок 72 показывает блок запроса для FPSetDirParms команда.

    Блок рисунка 72Request для FPSetDirParms команда image: ../ART/afp_071.eps
  • Устанавливает значение расширенного атрибута.

    Объявление

    Objective C

    uint8_t CommandCode uint8_t Pad int16_t VolumeID int32_t DirectoryID uint16_t Bitmap int64_t Offset uint8_t PathType string Pathname uint8_t Pad uint16_t NameLength string Name uint32_t AttributeDataLength string AttributeData

    Параметры

    CommandCode

    kFPSetExtAttr (70).

    Pad

    Байт клавиатуры.

    VolumeID

    Идентификатор объема.

    DirectoryID

    Идентификатор каталога.

    Bitmap

    Битовый массив, указывающий желаемое поведение при установке значения расширенного атрибута. Для получения дополнительной информации посмотрите “Extended Attributes Bitmap” для подробных данных.

    Offset

    Всегда нуль; зарезервированный для будущего использования.

    PathType

    Тип имен в Pathname. Посмотрите Константы Типа тракта для возможных значений.

    Pathname

    Путь к желаемому файлу или каталогу. Pathname строка, если она содержит Короткие или Длинные Имена или AFPName, если она содержит путь UTF-8–encoded.

    Pad

    Дополнительный байт клавиатуры в случае необходимости для дополнения к ровной границе.

    NameLength

    Длина в байтах следующего расширенного названия атрибута.

    Name

    Имя UTF-8–encoded расширенного атрибута, который должен быть установлен.

    AttributeDataLength

    Длина в байтах следующих расширенных данных атрибута.

    AttributeData

    Оцените, в который должен быть установлен расширенный атрибут.

    Result

    kFPNoErr если не произошла никакая ошибка. Посмотрите Таблицу 67 для других возможных кодов результата.

    Обсуждение

    Это наборы команд значение указанного расширенного атрибута. Если расширенный атрибут уже не существует, он создается.

    Поддержка этой команды, а также FPGetExtAttr, FPListExtAttrs и FPRemoveExtAttr требуется для поддержки расширенных атрибутов. Поддержка UTF-8 также требуется для поддержки расширенных атрибутов. Посмотрите раздел Character Encoding Понятий файлового протокола Apple в Руководстве по программированию файлового протокола Apple для дополнительных подробных данных о UTF-8 кодирование используемого AFP.

    Таблица 67 перечисляет возможные коды результата для FPSetExtAttr команда.

    Таблица 67Result кодирует для FPSetExtAttr команда

    Код результата

    Объяснение

    kFPAccessDenied

    Пользователю не требовали, чтобы права доступа установили расширенный атрибут для файла или каталога.

    kFPBitmapErr

    Битовый массив является нулем или указывает значение, которое недопустимо для этой команды.

    kFPMiscErr

    Ошибка неAFP произошла.

    kFPObjectNotFound

    Входные параметры не указывают на существующий файл или каталог.

    kFPParamErr

    Параметр недопустим.

    Рисунок 73 показывает блок запроса для FPSetExtAttr команда.

    Блок рисунка 73Request для FPSetExtAttr команда image: ../ART/afp_FPSetExtendedAttr.eps
  • Устанавливает параметры для файла или каталога.

    Объявление

    Objective C

    uint8_t CommandCode uint8_t Pad int16_t VolumeID int32_t DirectoryID int16_t Bitmap uint8_t PathType string Pathname FileDirParameters

    Параметры

    CommandCode

    kFPSetFileDirParms (35).

    Pad

    Байт клавиатуры.

    VolumeID

    Объем ID.

    DirectoryID

    Каталог наследователя ID.

    Bitmap

    Битовый массив, описывающий параметры для установки. Установите бит, соответствующий каждому желаемому параметру. Этот битовый массив может совпасть с DirectoryBitmap или FileBitmap параметр FPGetFileDirParms команда, но эта команда может только установить параметры, которые характерны для обоих битовых массивов. Для разрядных определений для этого битового массива посмотрите Битовый массив Файла и Каталога.

    PathType

    Тип имени в Pathname. Посмотрите Константы Типа тракта для возможных значений.

    Pathname

    Путь к желаемому файлу или каталогу. Pathname строка, если она содержит Короткие или Длинные Имена или AFPName, если она содержит путь UTF-8–encoded. Посмотрите раздел Character Encoding Понятий файлового протокола Apple в Руководстве по программированию файлового протокола Apple для дополнительных подробных данных о UTF-8 кодирование используемого AFP.

    FileDirParameters

    Параметры, которые будут установлены, упакованные в растровом порядке.

    Result

    kFPNoErr если не произошла никакая ошибка. Посмотрите Таблицу 68 для возможных кодов результата.

    ReplyBlock

    Ни один.

    Обсуждение

    Это наборы команд или очищают определенные параметры и атрибуты, которые характерны и для файлов и для каталогов. Параметры являются Невидимыми атрибутами и Системными атрибутами, Датой создания, Датой Модификации, Резервной Датой, Информацией Средства поиска и полномочиями UNIX.

    Параметры должны быть упакованы, в растровом порядке, в блоке запроса. Параметры переменной длины, такие как Длинное Имя и Краткое название, должны быть сохранены в конце блока. Чтобы сделать это, параметры переменной длины представлены в растровом порядке, поскольку фиксированная длина смещает (целые числа). Эти смещения измеряются от запуска параметров к запуску параметров переменной длины. Фактические параметры переменной длины тогда упаковываются после всех параметров фиксированной длины.

    Если необходимо, нулевой байт должен быть добавлен между Pathname и DirectoryParameters в запросе блокируют для создания DirectoryParameters начните на ровной границе.

    Если параметр Атрибутов включен, Установить/Очистить бит указывает, что указанные атрибуты должны быть установлены (1) или очистились (0). Поэтому не возможно установить некоторые атрибуты и очистить другие атрибуты в той же команде.

    Если эта команда изменяет атрибуты CNODE или назначает даты CNODE (кроме даты модификации), Информация Средства поиска или полномочия UNIX, дата модификации CNode назначена к часам сервера. Если эта команда изменяет Невидимый атрибут CNODE, дата модификации родительского каталога CNODE назначена к часам сервера.

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

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

    Для файлов вызвать FPSetFileParms устанавливать параметры и атрибуты это FPSetFileDirParms не может установить. Для каталогов вызвать FPSetDirParms устанавливать параметры и атрибуты это FPSetFileDirParms не может установить.

    Таблица 68 перечисляет коды результата для FPSetFileDirParms команда.

    Таблица 68Result кодирует для FPSetFileDirParms команда

    Код результата

    Объяснение

    kFPAccessDenied

    Пользователю не требовали, чтобы права доступа использовали эту команду.

    kFPBitmapErr

    Попытка была предпринята для установки параметра, который не может быть установлен этой командой; битовый массив является нулем.

    kFPMiscErr

    Ошибка неAFP произошла.

    kFPObjectNotFound

    Входные параметры не указывают на существующий файл или каталог.

    kFPParamErr

    Ссылочный номер сеанса, Объем ID или тип пути неизвестен; путь недопустим.

    kFPVolLocked

    Объемом является ReadOnly.

    Рисунок 74 показывает блок запроса для FPSetFileDirParms команда.

    Блок рисунка 74Request для FPSetFileDirParms команда image: ../ART/afp_072.eps
  • Устанавливает параметры для файла.

    Объявление

    Objective C

    uint8_t CommandCode uint8_t Pad int16_t VolumeID int32_t DirectoryID int16_t Bitmap uint8_t PathType string Pathname FileParameters

    Параметры

    CommandCode

    kFPSetFileParms (30).

    Pad

    Байт клавиатуры.

    VolumeID

    Объем ID.

    DirectoryID

    Каталог наследователя ID.

    Bitmap

    Битовый массив, описывающий параметры для установки. Установите бит, соответствующий каждому желаемому параметру. Этот битовый массив может совпасть с параметром FileBitmap FPGetFileDirParms команда. Для разрядных определений для этого битового массива посмотрите Битовый массив Файла и Каталога.

    PathType

    Тип имени в Pathname. Посмотрите Константы Типа тракта для возможных значений.

    Pathname

    Путь к желаемому файлу или каталогу. Pathname строка, если она содержит Короткие или Длинные Имена или AFPName, если она содержит путь UTF-8–encoded. Посмотрите раздел Character Encoding Понятий файлового протокола Apple в Руководстве по программированию файлового протокола Apple для дополнительных подробных данных о UTF-8 кодирование используемого AFP.

    FileParameters

    Параметры, которые будут установлены, упакованные в растровом порядке.

    Result

    kFPNoErr если не произошла никакая ошибка. Посмотрите Таблицу 69 для возможных кодов результата.

    ReplyBlock

    Ни один.

    Обсуждение

    Параметры должны быть упакованы, в растровом порядке, в блоке запроса. Параметры переменной длины должны быть сохранены в конце блока. Чтобы сделать это, параметры переменной длины представлены в растровом порядке, поскольку фиксированная длина смещает (целые числа). Эти смещения измеряются от запуска параметров к запуску параметров переменной длины. Фактические параметры переменной длины тогда упаковываются после всех параметров фиксированной длины.

    Если необходимо, нулевой байт должен быть добавлен между Pathname и FileParameters в запросе блокируют для создания FileParameters начните на ровной границе.

    Следующие параметры могут быть установлены или очищены: Атрибуты (все атрибуты кроме DAlreadyOpen, RAlreadyOpen, и CopyProtect), Дата создания, Дата Модификации, Резервная Дата, Информация Средства поиска и полномочия UNIX.

    Если параметр Атрибутов включен, Установить/Очистить бит указывает, что указанные атрибуты должны быть установлены (1) или очистились (0). Поэтому не возможно установить некоторые атрибуты и очистить другие атрибуты в том же вызове.

    Если эта команда изменяет Невидимый атрибут файла, дата модификации родительского каталога файла назначена к часам сервера. Если эта команда изменяет Атрибуты файла или назначает какие-либо даты (кроме даты модификации), или Информация Средства поиска, дата модификации файла назначена к часам сервера.

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

    Эта команда не может использоваться для определения имени файла; вместо этого, используйте FPRename. Эта команда не может использоваться для установки Родительского каталога файла ID; вместо этого, используйте FPMoveAndRename. Эта команда не может использоваться для установки продолжительностей ветвления файла; вместо этого, вызовите FPSetForkParms. Эта команда не может использоваться для установки Узла файла ID.

    Таблица 69 перечисляет коды результата для FPSetFileParms команда.

    Таблица 69Result кодирует для FPSetFileParms команда

    Код результата

    Объяснение

    kFPAccessDenied

    Пользователю не требовали, чтобы права доступа использовали эту команду.

    kFPBitmapErr

    Попытка была предпринята для установки параметра, который не может быть установлен этой командой; битовый массив является нулем.

    kFPMiscErr

    Ошибка неAFP произошла.

    kFPObjectNotFound

    Входные параметры не указывают на существующий файл.

    kFPObjectTypeErr

    Входные параметры указывают на каталог.

    kFPParamErr

    Ссылочный номер сеанса, Объем ID или тип пути неизвестен; путь является недопустимым или нулевым.

    Рисунок 75 показывает блок запроса для FPSetFileParms команда.

    Блок рисунка 75Request для FPSetFileParms команда image: ../ART/afp_073.eps
  • Устанавливает продолжительность ветвления.

    Объявление

    Objective C

    uint8_t CommandCode uint8_t Pad int16_t OForkRefNum int16_t Bitmap int32_t or int64_t ForkLen

    Параметры

    CommandCode

    kFPSetForkParms (31).

    Pad

    Байт клавиатуры.

    OForkRefNum

    Открытый ссылочный номер ветвления.

    Bitmap

    Битовый массив, описывающий параметры для установки. Установите бит, соответствующий каждому желаемому параметру. Этот битовый массив совпадает с FileBitmap из FPGetFileDirParms команда, но только Длина Ветви данных, Длина Ветви ресурсов, Расширенная Длина Ветви данных и Расширенные параметры Длины Ветви ресурсов могут быть установлены. Для разрядных определений для этого битового массива посмотрите Битовый массив Файла и Каталога.

    ForkLen

    Новое значение конца ветвления. Это значение составляет или 32 бита или 64 бита в длине, в зависимости от того, устанавливаете ли Вы длину или расширенный параметр длины.

    Result

    kFPNoErr если не произошла никакая ошибка. Посмотрите Таблицу 70 для возможных кодов результата.

    ReplyBlock

    Ни один.

    Обсуждение

    Bitmap и ForkLen параметры передаются серверу, изменяющему продолжительность ветвления, указанного OForkRefNum. Сервер возвращает a kFPBitmapErr закончитесь код, если команда пытается установить продолжительность другого ветвления файла или если это пытается установить какой-либо другой параметр файла.

    Сервер возвращает a kFPLockErr закончитесь код, если бы попытка предпринята для усечения ветвления в пути, который устранил бы диапазон или часть диапазона, заблокированного другим пользователем.

    Ветвление должно быть открыто для записи пользователем.

    Эта команда не может определить имя файла; вместо этого, используйте FPRename. Эта команда не может установить Родительский каталог файла ID; вместо этого, используйте FPMoveAndRename. Эта команда не может установить номер документа файла.

    Таблица 70 перечисляет коды результата для FPSetForkParms команда.

    Таблица 70Result кодирует для FPSetForkParms команда

    Код результата

    Объяснение

    kFPAccessDenied

    Пользователю не требовали, чтобы права доступа использовали эту команду.

    kFPBitmapErr

    Попытка была предпринята для установки параметра, который не может быть установлен этой командой; битовый массив является нулем.

    kFPDiskFull

    Больше пространства не существует на объеме.

    kFPLockErr

    Конфликт блокировки диапазона существует.

    kFPMiscErr

    Ошибка неAFP произошла.

    kFPParamErr

    Ссылочный номер сеанса или ссылочный номер ветвления недопустимы.

    kFPVolLocked

    Объемом является ReadOnly.

    Рисунок 76 показывает блок запроса для FPSetForkParms команда.

    Блок рисунка 76Request для FPSetForkParms команда image: ../ART/afp_074.eps
  • Назначает резервную дату объема.

    Объявление

    Objective C

    uint8_t CommandCode uint8_t Pad int16_t VolumeID int16_t Bitmap Date BackupDate

    Параметры

    CommandCode

    kFPSetVolParms (32).

    Pad

    Байт клавиатуры.

    VolumeID

    Объем ID.

    Bitmap

    Битовый массив, описывающий параметры, которые будут установлены. Этот параметр совпадает с Bitmap параметр для FPGetVolParms команда, но только Резервная Дата укусила, может быть установлен. Для разрядных определений для этого битового массива посмотрите Битовый массив Объема.

    BackupDate

    Новая резервная дата.

    Result

    kFPNoErr если не произошла никакая ошибка. Посмотрите Таблицу 71 для возможных кодов результата.

    ReplyBlock

    Ни один.

    Обсуждение

    Это наборы команд резервная дата объема.

    Таблица 71 перечисляет коды результата для FPSetVolParms команда.

    Таблица 71Result кодирует для FPSetVolParms команда

    Код результата

    Объяснение

    kFPAccessDenied

    Пользователю не требовали, чтобы права доступа использовали эту команду.

    kFPBitmapErr

    Попытка была предпринята для установки параметра, который не может быть установлен этой командой; битовый массив является нулем.

    kFPMiscErr

    Ошибка неAFP произошла.

    kFPParamErr

    Ссылочный номер сеанса неизвестен.

    kFPVolLocked

    Объемом является ReadOnly.

    Рисунок 77 показывает блок запроса для FPSetVolParms команда.

    Блок рисунка 77Request для FPSetVolParms команда image: ../ART/afp_075.eps
  • Команда Spotlight RPC.

    Объявление

    Objective C

    #<Jazz::CodeLine:0x000000034a3f78>

    Обсуждение

    Эта команда (код команды 76) является частной командой, используемой Центром внимания, ищущим на сервере AFP. Эта команда не документируется.

  • Сила изменяется на каталог, который будет сброшен к диску.

    Объявление

    Objective C

    uint8_t funcCode; uint8_t pad; int16_t volID; int32_t dirID;

    Параметры

    funcCode

    kFPSyncDir (78)

    pad

    Клавиатура выравнивания.

    volID

    Объем ID объема, содержащего каталог для сбрасывания.

    dirID

    Каталог ID для сбрасывания.

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

    Блок ответа указывает, успешно выполнился ли вызов или нет. Это может возвратиться kFPNoErr (успех), kFPObjectNotFound (недопустимый volID поскольку sharepoint или каталог не являются в этом sharepoint), kFPParamErr (недопустимый dirID указанный), или kFPAccessDenied (недостаточные полномочия).

    Обсуждение

    FPSyncDir передает стабильное хранение, любые данные и метаданные, связанные с файлами и каталогами, содержавшимися в иерархии, базировались в указанном каталоге.

    Успешный ответ на эту команду указывает, что предшествующие изменения длительны (как в «D» семантики ACID). Этот вызов требуется, чтобы поддерживать Машину времени по AFP.

  • Сила изменяется на файл, который будет сброшен к диску.

    Объявление

    Objective C

    uint8_t funcCode; uint8_t pad; int16_t forkRefNum;

    Параметры

    funcCode

    kFPSyncFork (79)

    pad

    Клавиатура выравнивания.

    forkRefNum

    Ссылочный номер открытого ветвления для сбрасывания.

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

    Блок ответа указывает, успешно выполнился ли вызов или нет. Это может возвратиться kFPNoErr (успех), kFPObjectNotFound (недопустимый sharepoint объем ID или файл не является в этом sharepoint), kFPParamErr (недопустимый forkRefNum указанный или слишком много открытых ветвлений), или kFPAccessDenied (недостаточные полномочия).

    Обсуждение

    FPSyncFork должен гарантировать, что все предшествующие записи к указанному ветвлению (включая метаданные файла) завершены и записаны в стабильное хранение.

    Успешный ответ на эту команду указывает, что предшествующие изменения длительны (как в «D» семантики ACID). Этот вызов требуется, чтобы поддерживать Машину времени по AFP.

  • Пишет блок данных в открытое ветвление.

    Объявление

    Objective C

    uint8_t CommandCode uint8_t Flag int16_t OForkRefNum int32_t Offset int32_t ReqCount ForkData

    Параметры

    CommandCode

    kFPWrite (33).

    Flag

    Бит 7 StartEndFlag бит, и это указывает ли Offset относительно начала или конца ветвления. Значение нуля указывает, что запуск относительно начала ветвления; значение 1 указывает, что запуск относительно конца ветвления.

    OForkRefNum

    Открытый ссылочный номер ветвления.

    Offset

    Байтовое смещение с начала или конца ветвления, указывающего, где должна начаться запись; отрицательная величина указывает байт в ветвлении относительно конца ветвления.

    ReqCount

    Число байтов, которые будут записаны.

    ForkData

    Данные, которые будут записаны.

    Как историческая сноска, в устаревшем ASP (не-TCP) версии, это поле не было частью блока запроса. Вместо этого данные были переданы к серверу в промежуточной АТС пакетов ASP.

    Result

    kFPNoErr если не произошла никакая ошибка. Посмотрите Таблицу 72 для возможных кодов результата.

    ReplyBlock

    Если код результата kFPNoErr, сервер возвращает блок ответа, состоящий из int32_t, вызванного LastWritten, содержа число байта только мимо последнего записанного байта.

    Обсуждение

    Сервер пишет данные в открытое ветвление, запускающееся в числе байтов с начала или конца ветвления, как указано Offset. StartEndFlag бит указывает, должен ли блок данных быть записан при смещении относительно начала или конца ветвления. Когда смещение относительно конца ветвления, данные могут быть записаны, не зная точный конец ветвления, которое полезно, когда многократные писатели изменяют ветвление одновременно. Сервер возвращает число байта только мимо последнего записанного байта.

    Эта команда отличается от FPWriteExt команда в этом FPWriteExt команда подготовлена обработать большие значения, которые могут требоваться для записи в файлы, находящиеся в объемах, больше, чем 4 ГБ в размере.

    Если блок данных, который будет записан, расширяется вне конца ветвления, ветвление расширяется. Если часть диапазона заблокирована другим пользователем, сервер возвращает a kFPLockErr закончитесь кодируют, и не пишет данных в ветвление.

    Дата Модификации файла не изменяется, пока ветвление не закрывается.

    Ветвление должно быть открыто для записи пользователем, отправляющим эту команду.

    Заблокируйте диапазон прежде, чем отправить эту команду. Механизм базовой передачи может вынудить запрос быть поврежденным в многократные меньшие запросы. Если диапазон не заблокирован, когда эта команда начинает выполнение, для другого пользователя возможно заблокировать некоторых или весь диапазон, прежде чем эта команда завершится, заставляя запись успешно выполниться частично.

    Таблица 72 перечисляет коды результата для FPWrite команда.

    Таблица 72Result кодирует для FPWrite команда

    Код результата

    Объяснение

    kFPAccessDenied

    Ветвление не открыто для записи этим пользователем.

    kFPDiskFull

    Никакое пространство не существует на объеме.

    kFPLockErr

    Некоторые или весь требуемый диапазон заблокированы другим пользователем.

    kFPMiscErr

    Ошибка неAFP произошла.

    kFPParamErr

    Ссылочный номер сеанса или открытый ссылочный номер ветвления неизвестны.

    Рисунок 78 показывает запрос и блоки ответа для FPWrite команда.

    Рисунок 78Request и ответ блокируют для FPWrite команда image: ../ART/afp_079.eps

    Доступность

    Осуждаемый. Использовать

  • Пишет блок данных в открытое ветвление.

    Объявление

    Objective C

    uint8_t CommandCode uint8_t Flag int16_t OForkRefNum int64_t Offset int64_t ReqCount ForkData

    Параметры

    CommandCode

    kFPWriteExt (61).

    Flag

    Бит 7 из Flag параметр StartEndFlag бит, и это указывает ли Offset относительно начала или конца ветвления. Значение нуля указывает, что запуск относительно начала ветвления; значение 1 указывает, что запуск относительно конца ветвления.

    OForkRefNum

    Открытый ссылочный номер ветвления.

    Offset

    Байтовое смещение с начала или конца ветвления, указывающего, где должна начаться запись; отрицательная величина указывает байт в ветвлении относительно конца ветвления.

    ReqCount

    Число байтов, которые будут записаны.

    ForkData

    Данные, которые будут записаны.

    Как историческая сноска, в устаревшем ASP (не-TCP) версии, это поле не было частью блока запроса. Вместо этого данные были переданы к серверу в промежуточной АТС пакетов ASP.

    Result

    kFPNoErr если не произошла никакая ошибка. Посмотрите Таблицу 73for возможные коды результата.

    ReplyBlock

    Если код результата kFPNoErr, сервер возвращает блок ответа, состоящий из int32_t, вызванного LastWritten, содержа число байта только мимо последнего записанного байта.

    Обсуждение

    Сервер пишет данные в открытое ветвление, запускающееся в числе байтов с начала или конца ветвления, как указано Offset.

    Эта команда отличается от FPWrite команда в той этой команде подготовлена обработать большие значения, которые могут требоваться для записи в файлы, находящиеся в объемах, больше, чем 4 ГБ в размере.

    StartEndFlag бит указывает, должен ли блок данных быть записан при смещении относительно начала или конца ветвления. Когда смещение относительно конца ветвления, данные могут быть записаны, не зная точный конец ветвления, которое полезно, когда многократные писатели изменяют ветвление одновременно. Сервер возвращает число байта только мимо последнего записанного байта.

    Если блок данных, который будет записан, расширяется вне конца ветвления, ветвление расширяется. Если часть диапазона заблокирована другим пользователем, сервер возвращает a kFPLockErr закончитесь кодируют, и не пишет данных в ветвление.

    Дата Модификации файла не изменяется, пока ветвление не закрывается.

    Ветвление должно быть открыто для записи пользователем, отправляющим эту команду.

    Заблокируйте диапазон прежде, чем отправить эту команду. Механизм базовой передачи может вынудить запрос быть поврежденным в многократные меньшие запросы. Если диапазон не заблокирован, когда эта команда начинает выполнение, для другого пользователя возможно заблокировать некоторых или весь диапазон, прежде чем эта команда завершится, вызывая запись к успеху частично.

    Таблица 73 перечисляет коды результата для FPWriteExt команда.

    Таблица 73Result кодирует для FPWriteExt команда

    Код результата

    Объяснение

    kFPAccessDenied

    Ветвление не открыто для записи этим пользователем.

    kFPDiskFull

    Никакое пространство не существует на объеме.

    kFPLockErr

    Некоторые или весь требуемый диапазон заблокированы другим пользователем.

    kFPMiscErr

    Ошибка неAFP произошла.

    kFPParamErr

    Ссылочный номер сеанса или открытый ссылочный номер ветвления неизвестны.

    Рисунок 79 показывает запрос и блоки ответа для FPWriteExt команда.

    Рисунок 79Request и ответ блокируют для FPWriteExt команда image: ../ART/afp_026.eps
  • Уведомляет сервер, что засыпает клиент.

    Объявление

    Objective C

    uint8_t CommandCode uint8_t Pad uint32_t Flags

    Параметры

    CommandCode

    kFPZzzzz (122).

    Flags

    Зарезервированный.

    ReplyBlock

    Ни один.

    Обсуждение

    Если AFP sharepoint смонтирован, когда клиент засыпает (например, неактивный сон или сон требования такой как тогда, когда крышка PowerBook закрывается), клиент отправляет FPZzzzz команда. Эта команда уведомляет сервер AFP, что клиент засыпает и что сервер не должен больше отправлять пакеты клиенту. То, когда клиент, просыпается, это отправит пакеты AFP в сервер, уведомляющий сервер, что теперь бодрствует клиент.

    Сервер AFP должен иметь установку в течение максимального времени, когда клиент может спать — обычно 24 часа. Если клиент спал дольше, чем максимальное время сна, сервер предполагает, что клиент был разъединен и может освободить связанные с клиентом ресурсы на сервере.

    FPZzzzz команда поддерживается AFP 2.3 и позже по AFP/TCP только.

    Рисунок 80 показывает блок запроса для FPZzzzz команда.

    Блок рисунка 80Request для FPZzzzz команда image: ../ART/afp_095.eps

    Если поддержки сервера расширенная информация о сне (kSupportsExtSleep в битовом массиве флагов сервера — видят Битовый массив Флагов Сервера), то, прежде чем клиент засыпает, это отправляет команду FPZzzzz с Flag полевой набор к 1. Когда сервер получает эту команду с Flag набор к 1, это должно отключить щекотать таймеры и щекотать контроль.

    Когда клиент просыпается, это отправляет другого FPZzzzz команда, на сей раз с Flag полевой набор к 2. Это указывает к серверу, что теперь бодрствует клиент. Когда сервер получает эту команду сна с Flag набор к 2, это должно повторно включить щекотать таймеры и щекотать контроль.

  • Открывает сеанс DSI.

    Объявление

    Objective C

    uint8_t flags; uint8_t command; uint16_t requestID; union { uint32_t errorCode; uint32_t writeOffset; }; uint32_t totalDataLength; uint32_t reserved; struct optionsPayload { uint8_t optionType; uint8_t optionLength; uint8_t optionData[]; } Options[];

    Параметры

    flags

    Указывает, является ли пакет запросом или ответом.

    • 0x00 = запрос

    • 0x01 = ответ

    command

    Код команды (4).

    requestID

    Запрос ID. Посмотрите DSIHeader для получения дополнительной информации.

    writeOffset

    Обнуленный (0).

    errorCode

    На ответе, произошедший код ошибки.

    totalDataLength

    Набор к длине optionPayload блоб данных.

    reserved

    Зарезервированный. Обнуленный (0).

    optionsPayload

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

    Обсуждение

    Обычно, DSIOpenSession запрос команды является первым запросом, выпущенным клиентом после того, как это установит соединение с сервером AFP. (Клиент может также отправить a DSIGetStatus запрос команды. В этом случае сервер AFP сразу разъединяет соединение после поставки требуемой информации о статусе.) DSIOpenSession запрос команды открывает сеанс DSI и поставляет запросу начальной буквы клиента ID.

    Часть данных a DSIOpenSession пакет может содержать опции, определенные клиентом (запрос) или сервер (ответ). Опции должны соответствовать формату, показанному на рисунке 81.

    Формат опции рисунок 81AFP DSIOpenSession image: ../Art/AFP_DSIOpenSession_option_format.png

    Таблица 74 описывает каждое поле в части опции DSIOpenSession пакет.

    Таблица 74Fields в части опции DSIOpenSession пакет

    Поле

    Цель

    optionType

    8-разрядное значение без знака, указывающее тип информации, содержится optionData полем. Определяются два типа:

    • enum
    • {
    • kRequestQuanta = 0x00,
    • kServerReplayCacheSize = 0x02
    • };
    • 0x00 = квант запроса к серверу. Отправленный сервером клиенту, чтобы указать, что optionData поле содержит размер самого большого пакета запроса, который может принять сервер. Длина опции составляет четыре байта.

    • 0x02 = максимальный размер кэша воспроизведения поддерживается. Отправленный сервером клиенту для указания максимального количества элементов, которые поддерживает кэш воспроизведения сервера. Длина опции составляет четыре байта.

    optionLength

    8-разрядное значение без знака, содержащее продолжительность переменной длины optionData следующее поле.

    optionData

    Значение переменной длины, отправленное в сетевом порядке байтов (старший значащий байт сначала) представление числа байтов сервер и клиент, может принять в запросе и пакетах внимания, соответственно, но не включая длину заголовка DSI и команды AFP. Длина поля Option является переменной, но для максимальной производительности, это должно быть кратное число 4 байтов.

  • Передает запрос протокола AFP серверу.

    Объявление

    Objective C

    uint8_t flags; uint8_t command; uint16_t requestID; union { uint32_t errorCode; uint32_t writeOffset; }; uint32_t totalDataLength; uint32_t reserved; uint8_t afpRequestPayload[];

    Параметры

    flags

    Указывает, является ли пакет запросом или ответом.

    • 0x00 = запрос

    • 0x01 = ответ

    command

    Код команды (2).

    requestID

    Запрос ID. Посмотрите DSIHeader для получения дополнительной информации.

    writeOffset

    Обнуленный (0).

    errorCode

    На ответе, произошедший код ошибки.

    totalDataLength

    Набор к длине AFP запрашивает полезную нагрузку.

    reserved

    Зарезервированный. Обнуленный (0).

    afpRequestPayload

    Полезная нагрузка пакета — блок переменной длины данных опции, содержащих запрос AFP.

    Обсуждение

    Как только клиент открывает сеанс DSI, DSI готов принять и обработать DSICommand запросы от клиента. Когда это получает a DSICommand запрос, DSI удаляет заголовок, сохраняет контекст запроса в своем внутреннем состоянии и передает данные (запрос AFP) к серверу AFP.

    Когда DSI получает ответ, он использует команду и требуемые поля в заголовке DSI ответа для соответствия ответа его соответствующему запросу и контексту запроса, чтобы отправить ответ клиенту. Как только DSI отправляет ответ клиенту, DSI предъявляет претензии в отношении хранения, выделенного для контекста запроса.

  • Передает AFP FPWrite, FPWriteExt, или FPAddIcon запросите к серверу.

    Объявление

    Objective C

    uint8_t flags; uint8_t command; uint16_t requestID; union { uint32_t errorCode; uint32_t writeOffset; }; uint32_t totalDataLength; uint32_t reserved; uint8_t afpRequestPayload[];

    Параметры

    flags

    Указывает, является ли пакет запросом или ответом.

    • 0x00 = запрос

    • 0x01 = ответ

    command

    Код команды (6).

    requestID

    Запрос ID. Посмотрите DSIHeader для получения дополнительной информации.

    writeOffset

    Набор к числу байтов в пакете, представляющем информацию о команде AFP. Сервер использует эту информацию для сбора части команды AFP пакета, прежде чем это примет, что пишут фактические данные.

    Например, когда клиент отправляет команду FPWrite для записи данных по серверу, смещение прилагаемых данных должно быть 12.

    errorCode

    На ответе, произошедший код ошибки.

    totalDataLength

    Набор к длине AFP запрашивает полезную нагрузку.

    reserved

    Зарезервированный. Обнуленный (0).

    afpRequestPayload

    Полезная нагрузка пакета — блок переменной длины данных опции, содержащих запрос AFP.

    Обсуждение

    DSIWrite запрос команды содержит FPWrite, FPWriteExt, или FPAddIcon запрос и связанные данные. Объем данных, который будет записан, может быть до размера кванта запроса к серверу, описанного ранее в DSIOpenSession.

    Сервер AFP может или может не быть готов принять данные, таким образом, DSI только вперед часть запроса AFP к серверу AFP, с помощью смещения прилагаемых данных в заголовке DSI для определения длины заголовка AFP.

    Как только это обрабатывает заголовок и решает, что клиенту потребовали, чтобы полномочия записали данные, сервер AFP получает данные, которые будут записаны из DSI. Как только сервер AFP отклоняет просьбу, или DSI находит, что все данные были записаны, DSI избавляется от данных и предъявляет претензии в отношении хранения, связанного с ним.

  • Отправленный сервером для уведомления клиента изменения состояния.

    Объявление

    Objective C

    uint8_t flags; uint8_t command; uint16_t requestID; union { uint32_t errorCode; uint32_t writeOffset; }; uint32_t totalDataLength; uint32_t reserved; uint8_t attentionPayload[];

    Параметры

    flags

    Указывает, является ли пакет запросом или ответом.

    • 0x00 = запрос

    • 0x01 = ответ

    command

    Код команды (8).

    requestID

    Запрос ID. Посмотрите DSIHeader для получения дополнительной информации.

    writeOffset

    Обнуленный (0).

    errorCode

    На ответе, произошедший код ошибки.

    totalDataLength

    Набор к длине optionPayload блоб данных.

    reserved

    Зарезервированный. Обнуленный (0).

    attentionPayload

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

    Обсуждение

    Сервер AFP использует стандартные пакеты потока данных для отправки DSIAttention пакеты клиенту. Код внимания сохранен как часть данных в пакете DSI. Когда клиент открыл сеанс, размер кода внимания и любых других данных внимания не может быть больше, чем размер, указанный квантом внимания. Квантовый размер внимания по умолчанию 2. См. Определения AFPUserBytes для получения дополнительной информации.

  • Уведомляет сервер, что клиент все еще жив или наоборот.

    Объявление

    Objective C

    uint8_t flags; uint8_t command; uint16_t requestID; union { uint32_t errorCode; uint32_t writeOffset; }; uint32_t totalDataLength; uint32_t reserved;

    Параметры

    flags

    Указывает, является ли пакет запросом или ответом. Всегда нуль (0) потому что Щекотание не требует ответа.

    command

    Код команды (5).

    requestID

    Запрос ID. Посмотрите DSIHeader для получения дополнительной информации.

    writeOffset

    Обнуленный (0).

    errorCode

    На ответе, произошедший код ошибки.

    totalDataLength

    Набор к нулю (0).

    reserved

    Зарезервированный. Обнуленный (0).

    Обсуждение

    DISTickle команда обеспечивает путь к серверам AFP и клиентам для обнаружения тайм-аутов, вызванных аварийным завершением сеансов DSI и соединений потока данных. По умолчанию сервер AFP отправляет a DSITickle пакет запроса команды каждые 30 секунд клиенту, если сервер AFP не отправил никакие другие данные клиенту за предыдущие 30 секунд. Аналогично, клиент отправляет a DSITickle пакет запроса команды каждые 30 секунд клиенту, если клиент-сервер не отправил никакие другие данные в сервер AFP за предыдущие 30 секунд.

    Если сервер AFP не получает данных от клиента в течение двух минут, сервер AFP завершает сеанс с клиентом. Аналогично, если клиент не получает данных от сервера в течение двух минут, клиент завершает сеанс с сервером AFP. Вместо того, чтобы использовать таймер для определения, когда отправить a DSITickle команда, много клиентских реализаций отправляют a DSITickle команда каждый раз, когда они получают a DSITickle команда от сервера AFP.

  • Закрывает сеанс DSI.

    Объявление

    Objective C

    uint8_t flags; uint8_t command; uint16_t requestID; union { uint32_t errorCode; uint32_t writeOffset; }; uint32_t totalDataLength; uint32_t reserved;

    Параметры

    flags

    Всегда нуль (0) указать, что это содержит запрос. Клиент не ожидает ответа.

    command

    Код команды (1).

    requestID

    Запрос ID. Посмотрите DSIHeader для получения дополнительной информации.

    writeOffset

    Обнуленный (0).

    errorCode

    На ответе, произошедший код ошибки.

    totalDataLength

    Обнуленный (0).

    reserved

    Зарезервированный. Обнуленный (0).

    Обсуждение

    Закрыть сеанс, клиент AFP или сервер отправляет a DSICloseSession запрос команды. Не ожидая ответа, отправителя DSICloseSession команда закрывает сеанс AFP и предъявляет претензии в отношении всех ресурсов, выделенных к сеансу. Тогда это разъединяет соединение потока данных.

  • Передает AFP FPGetSrvrInfo запросите к серверу.

    Объявление

    Objective C

    uint8_t flags; uint8_t command; uint16_t requestID; union { uint32_t errorCode; uint32_t writeOffset; }; uint32_t totalDataLength; uint32_t reserved;

    Параметры

    flags

    Указывает, является ли пакет запросом или ответом.

    • 0x00 = запрос

    • 0x01 = ответ

    command

    Код команды (3).

    requestID

    Запрос ID. Посмотрите DSIHeader для получения дополнительной информации.

    writeOffset

    Обнуленный (0).

    errorCode

    На ответе, произошедший код ошибки.

    totalDataLength

    Набор к длине statusPayload блоб данных.

    reserved

    Зарезервированный. Обнуленный (0).

    Обсуждение

    После заголовка команды выше, пакет DSI содержит полезную нагрузку, состоящую из FPGetSrvrInfo пакет запроса или ответный пакет.

    В контексте коммуникации потока данных клиент должен установить сеанс с сервером для обмена информацией с ним, но в контексте ASP, клиент может отправить ASPGetStatus команда к серверу, не устанавливая сеанс. Поддерживать ASPGetStatus, сервер AFP поддерживает DSIGetStatus команда на ее порту прослушивания.

    Для получения информации о состоянии ASP клиент должен установить соединение на порту прослушивания сервера. Клиент тогда отправляет a DSIGetStatus команда к серверу. Сервер тогда возвращает информацию о статусе клиенту и сразу разъединяет соединение.

Типы данных

Типы данных протокола AFP

  • Структура описывает полномочия UNIX для файлов и каталогов, находящихся на объеме, поддерживающем полномочия UNIX.

    Объявление

    Objective C

    struct FPUnixPrivs { uint32_t uid; uint32_t gid; uint32_t permissions; uint32_t ua_permissions; };

    Поля

    uid

    Идентификатор пользователя владельца файла или каталога.

    gid

    Группа ID владельца файла или каталога.

    permissions

    Полный набор битов полномочий файла или каталога, включая выполняют биты. Когда клиент изменяет полномочия на сервере, этот битовый массив используется. (Это может также использоваться для обнаружения символьных ссылок при помощи S_IFMT биты, описанные в <sys/stat.h>.)

    ua_permissions

    Права доступа пользователя к файлу или каталогу. Этот битовый массив находится в том же формате как права доступа AFP. Посмотрите Битовый массив Прав доступа для получения дополнительной информации.

    Обсуждение

    A FPUnixPrivs когда Вы вызываете, структура возвращается FPGetFileDirParms и укажите, что Вы хотите получить права UNIX для файла или каталога.

  • Структура, описывающая список управления доступом (ACL) файла или каталога.

    Объявление

    Objective C

    struct kauth_acl { u_int32_t acl_entrycount; u_int32_t acl_flags; struct kauth_ace acl_ace[]; };

    Поля

    acl_entrycount

    Число acl_ace структуры.

    acl_flags

    Посмотрите Базовую Основу документация ACL для определений.

    acl_ace

    acl_ace структура. Посмотрите Базовую Основу документация ACL для описания этой структуры.

    Обсуждение

    Структура Списка управления доступом возвращается FPGetACL команда и набор FPSetACL команда.

Типы данных транспортного уровня DSI

  • DSI предварительно ожидает заголовок DSI, показанный на рисунке 82 каждому пакету запроса AFP и ответному пакету.

    Объявление

    Objective C

    struct { uint8_t flags; uint8_t command; uint16_t requestID; union { uint32_t errorCode; uint32_t writeOffset; }; uint32_t totalDataLength; uint32_t reserved; };

    Поля

    flags

    8-разрядное значение, позволяющее серверу AFP определять тип пакета. Следующие типы пакетов определяются:

    • 0x00 = запрос

    • 0x01 = ответ

    command

    8-разрядное значение, содержащее значение, представляющее команду DSI.

    requestID

    16-разрядное значение, содержащее запрос ID на для каждого подключения (сеанс) основание. ID запроса сгенерирован узлом, выпустившим запрос. В ответ пакеты, запрос ID используется для определения местоположения соответствующего запроса.

    Запрос IDs должен быть сгенерирован в последовательном порядке и может быть от 0 к 65535 в значении. Запрос ID после 65535 обертки к 0. Клиент генерирует начальный запрос ID и отправляет его в сервер в a DSIOpenSession команда. Сервер использует следующий алгоритм для предупреждения следующего запроса клиента ID:

    • if (LastReqID == 65536) LastReqID = 0;
    • else LastReqID = LastReqID + 1;
    • ExpectedReqID = LastReqID;

    Серверы начинают генерировать, запрашивают IDs в нуле (0).

    writeOffset

    В пакетах запроса это поле проигнорировано сервером для всех команд кроме DSIWrite. Для будущей совместимости клиенты должны обнулить это поле для всех команд кроме DSIWrite.

    В пакетах запроса, в которых команда DSIWrite, это поле содержит смещение данных, которое является числом байтов в пакете, представляющем информацию о команде AFP. Сервер использует эту информацию для сбора части команды AFP пакета, прежде чем это примет, что пишут фактические данные.

    Например, когда клиент отправляет FPWrite команда для записи данных по серверу смещение прилагаемых данных должно быть 12.

    errorCode

    В ответ пакеты, это поле содержит код ошибки.

    totalDataLength

    32-разрядное значение без знака, указывающее общую длину данных, следующих за заголовком DSI.

    reserved

    32-разрядное поле зарезервировано для будущего использования. Клиенты должны обнулить это поле.

    Обсуждение

    Рисунок 82 дает визуальное представление формата заголовка.

    Формат заголовка рисунка 82DSI image: ../Art/AFP_DSI_header_format.png

Константы

Константы протокола AFP

  • Битовый массив для получения и установки списков управления доступом (ACLs).

    Объявление

    Objective C

    enum { kFileSec_UUID = 0x01, kFileSec_GRPUUID = 0x02, kFileSec_ACL = 0x04, kFileSec_REMOVEACL = 0x08, kFileSec_Inherit = 0x10 };

    Константы

    • kFileSec_UUID

      kFileSec_UUID

      Установите этот бит, чтобы получить или установить UUID.

    • kFileSec_GRPUUID

      kFileSec_GRPUUID

      Установите этот бит, чтобы получить или установить Группу UUID.

    • kFileSec_ACL

      kFileSec_ACL

      Установите этот бит, чтобы получить или установить ACL.

    • kFileSec_REMOVEACL

      kFileSec_REMOVEACL

      Установите этот бит для удаления ACL. Этот бит не допустим, когда используется с FPGetACL.

    • kFileSec_Inherit

      kFileSec_Inherit

      Установите это обдумало любые элементы списка управления доступом уже наследованный (ACEs). Эта константа используется только с FPSetACL команда.

    Обсуждение

    Используйте битовый массив Списка управления доступом с FPGetACL и FPSetACL команды для управления поведением тех команд.

  • Строки, идентифицирующие различные версии AFP.

    Объявление

    Objective C

    #define kAFPVersion_2_1 "AFPVersion 2.1" #define kAFPVersion_2_2 "AFP2.2" #define kAFPVersion_2_3 "AFP2.3" #define kAFPVersion_3_0 "AFPX03" #define kAFPVersion_3_1 "AFP3.1" #define kAFPVersion_3_2 "AFP3.2" #define kAFPVersion_3_3 "AFP3.3"

    Константы

    • kAFPVersion_2_1

      kAFPVersion_2_1

      Версия 2.1 AFP.

    • kAFPVersion_2_2

      kAFPVersion_2_2

      Версия 2.2 AFP.

    • kAFPVersion_2_3

      kAFPVersion_2_3

      Версия 2.3 AFP. Указывает поддержку FPZzzzz команда.

    • kAFPVersion_3_0

      kAFPVersion_3_0

      Версия 3.0 AFP. OS X v.10.0 и 10.1.

    • kAFPVersion_3_1

      kAFPVersion_3_1

      Версия 3.1 AFP. OS X v.10.2 и 10.3.

    • kAFPVersion_3_2

      kAFPVersion_3_2

      Версия 3.2 AFP. OS X v.10.4 и 10.5.

    • kAFPVersion_3_3

      kAFPVersion_3_3

      Версия 3.3 AFP. Указывает поддержку кэша воспроизведения на сервере и поддержку FPSyncDir и FPSyncFork.

    Обсуждение

    Строки версии AFP возвращаются FPGetSrvrInfo команда. Клиенты AFP отправили Строку версии AFP в качестве параметра в FPLogin и FPLoginExt команды.

  • Строки, идентифицирующие различные версии UAM.

    Объявление

    Objective C

    #define kNoUserAuthStr "No User Authent" #define kClearTextUAMStr "Cleartxt Passwrd" #define kRandNumUAMStr "Randnum Exchange" #define kTwoWayRandNumUAMStr "2-Way Randnum" #define kDHCAST128UAMStr "DHCAST128" #define kDHX2UAMStr "DHX2" #define kKerberosUAMStr "Client Krb v2" #define kReconnectUAMStr “Recon1”

    Константы

    • kNoUserAuthStr

      kNoUserAuthStr

      UAM, не требующий аутентификации пользователя.

    • kClearTextPwdStr

      kClearTextPwdStr

      Пароль в виде открытого текста UAM.

    • kRandNumUAMStr

      kRandNumUAMStr

      Exchange случайного числа UAM.

      Устаревший. Больше поддерживаемый в OS X.

    • kTwoWayRandNumUAMStr

      kTwoWayRandNumUAMStr

      Двухсторонний Exchange случайного числа UAM.

    • kDHCAST128UAMStr

      kDHCAST128UAMStr

      Exchange Diffie-Hellman UAM.

    • kDHX2UAMStr

      kDHX2UAMStr

      Diffie-Hellman Exchange 2 UAM.

    • kKerberosUAMStr

      kKerberosUAMStr

      Kerberos UAM.

    • kReconnectUAMStr

      kReconnectUAMStr

      Переподключение UAM.

    Обсуждение

    AFP строки UAM возвращается FPGetSrvrInfo команда. Клиенты AFP отправили AFP строку UAM в качестве параметра к FPLogin и FPLoginExt команды.

  • Значения для Type параметр FPGetSessionToken команда.

    Объявление

    Objective C

    enum { kLoginWithoutID = 0, kLoginWithID = 1, kReconnWithID = 2, kLoginWithTimeAndID = 3, kReconnWithTimeAndID = 4, kRecon1Login = 5, kRecon1ReconnectLogin = 6, kRecon1RefreshToken = 7, kGetKerberosSessionKey = 8 };

    Константы

    • kLoginWithoutID

      kLoginWithoutID

      FPGetSessionToken блок параметра не содержит ID параметр; указанный клиентами AFP, поддерживающими версию AFP до AFP 3.1.

    • kLoginWithID

      kLoginWithID

      Осуждаемый. Использовать kLoginWithTimeAndID вместо этого.

    • kReconnWithID

      kReconnWithID

      Осуждаемый. Использовать kReconnWithTimeAndID вместо этого.

    • kLoginWithTimeAndID

      kLoginWithTimeAndID

      FPGetSessionToken блок параметра содержит ID и параметр метки времени. Команда отправляется, чтобы указать, что клиент хочет, чтобы был отброшен ее старый сеанс.

    • kReconnWithTimeAndID

      kReconnWithTimeAndID

      FPGetSessionToken блок параметра содержит ID и параметр метки времени. Команда отправляется, чтобы указать, что клиент успешно повторно соединил и хочет, чтобы сеанс был обновлен с новым значением ID.

    • kRecon1Login

      kRecon1Login

      Используемый после входа в систему получают учетные данные, которые могут использоваться, чтобы повторно соединить использование Переподключения UAM. Указание kRecon1Login говорит серверу уничтожать любые старые сеансы, которые могут быть связаны с ID параметр к FPGetSessionToken команда.

    • kRecon1ReconnectLogin

      kRecon1ReconnectLogin

      Используемый для получения нового маркера переподключения после пересоединения использования Переподключения UAM.

    • kRecon1RefreshToken

      kRecon1RefreshToken

      Используемый для получения новых учетных данных, когда текущие учетные данные собираются истечь.

    • kGetKerberosSessionKey

      kGetKerberosSessionKey

      Используемый для получения сеансового ключа Kerberos v5.

    Обсуждение

    Значение Type параметр определяет поведение сервера, когда это получаетFPGetSessionToken команда.

  • Значения, используемые для параметра MessageBitmap FPGetSrvrMsg команда.

    Объявление

    Objective C

    kSrvrMsg = 0x1 kUTF8SrvrMsg = 0x2

    Константы

  • Значения, используемые в Subfunction параметр FPMapID команда.

    Объявление

    Objective C

    enum { kUserIDToName = 1, kGroupIDToName = 2, kUserIDToUTF8Name = 3, kGroupIDToUTF8Name = 4, kUserUUIDToUTF8Name = 5, kGroupUUIDToUTF8Name = 6 };

    Константы

    • kUserIDToName

      kUserIDToName

      Причины FPMapID отобразить указанный Идентификатор пользователя на его соответствующее имя пользователя Макинтоша Романа.

    • kGroupIDToName

      kGroupIDToName

      Причины FPMapID отобразить указанную Группу ID на его соответствующее название группы Макинтоша Романа.

    • kUserIDToUTF8Name

      kUserIDToUTF8Name

      Причины FPMapID отобразить указанный Идентификатор пользователя на его соответствующее имя пользователя в кодировании UTF-8.

    • kGroupIDToUTF8Name

      kGroupIDToUTF8Name

      Причины FPMapID отобразить указанную Группу ID на его соответствующее название группы в кодировании UTF-8.

    • kUserUUIDToUTF8Name

      kUserUUIDToUTF8Name

      Причины FPMapID отобразить указанного Пользователя UUID на его соответствующее имя пользователя в кодировании UTF-8.

    • kGroupUUIDToUTF8Name

      kGroupUUIDToUTF8Name

      Причины FPMapID отобразить указанную Группу UUID на его соответствующее название группы в кодировании UTF-8.

    Обсуждение

    Эти константы используются с FPMapID команда для указания пути, которым должно произойти отображение. Посмотрите раздел Character Encoding Понятий файлового протокола Apple в Руководстве по программированию файлового протокола Apple для дополнительных подробных данных о UTF-8 кодирование используемого AFP.

  • Значения, используемые в Subfunction параметр FPMapID команда.

    Объявление

    Objective C

    enum { kNameToUserID = 1, kNameToGroupID = 2, kUTF8NameToUserID = 3, kUTF8NameToGroupID = 4, kUTF8NameToUserUUID = 5, kUTF8NameToGroupUUID = 6 };

    Константы

    • kNameToUserID

      kNameToUserID

      Причины FPMapName отобразить указанное имя пользователя Макинтоша Романа на его соответствующий Идентификатор пользователя.

    • kNameToGroupID

      kNameToGroupID

      Причины FPMapName отобразить указанное римское Название группы Macintosh на его соответствующую Группу ID.

    • kUTF8NameToUserID

      kUTF8NameToUserID

      Причины FPMapName отобразить указанное UTF-8-encoded имя пользователя на его соответствующий Идентификатор пользователя.

    • kUTF8NameToGroupID

      kUTF8NameToGroupID

      Причины FPMapName отобразить указанное UTF-8-encoded название группы на его соответствующую Группу ID.

    • kUTF8NameToUserUUID

      kUTF8NameToUserUUID

      Причины FPMapName отобразить указанное UTF-8-encoded имя пользователя на его соответствующего пользователя UUID.

    • kUTF8NameToGroupUUID

      kUTF8NameToGroupUUID

      Причины FPMapName отобразить указанное UTF-8-encoded имя пользователя на его соответствующую Группу UUID.

    Обсуждение

    Эти константы используются с FPMapName команда для указания пути, которым должно произойти отображение. Посмотрите раздел Character Encoding Понятий файлового протокола Apple в Руководстве по программированию файлового протокола Apple для дополнительных подробных данных о UTF-8 кодирование используемого AFP.

  • Константы, указывающие тип имен в a Pathname параметр

    Объявление

    Objective C

    enum { kFPShortName = 1, kFPLongName = 2, kFPUTF8Name = 3 };

    Константы

    • kFPShortName

      kFPShortName

      Указывает это a Pathname параметр содержит Краткие названия.

    • kFPLongName

      kFPLongName

      Указывает это a Pathname параметр содержит Длинные Имена.

    • kFPUTF8Name

      kFPUTF8Name

      Указывает это a Pathname параметр содержит AFPName, состоящий из четырехбайтового текста, кодирующего подсказку, следовал за два байта длиной, сопровождаемым UTF-8–encoded путем.

    Обсуждение

    Эти константы используются в PathType параметр для многих команд AFP для указания типа имен, появляющихся в связанном Pathname параметр. Посмотрите раздел Character Encoding Понятий файлового протокола Apple в Руководстве по программированию файлового протокола Apple для дополнительных подробных данных о UTF-8 кодирование используемого AFP.

  • Константы, используемые при создании файлов.

    Объявление

    Objective C

    enum { kFPSoftCreate = 0, kFPHardCreate = 0x80 };

    Константы

    • kFPSoftCreate

      kFPSoftCreate

      Указывает мягкое создание.

    • kFPLongCreate

      kFPLongCreate

      Указывает указывает трудное создание.

    Обсуждение

    Эти константы используются в Flag параметр для FPCreateFile команда.

  • Права доступа укусили определения.

    Объявление

    Objective C

    #define KAUTH_VNODE_GENERIC_ALL (1<<21) #define KAUTH_VNODE_GENERIC_EXECUTE (1<<22) #define KAUTH_VNODE_GENERIC_WRITE (1<<23) #define KAUTH_VNODE_GENERIC_READ (1<<24)

    Константы

    • KAUTH_VNODE_GENERIC_ALL

      KAUTH_VNODE_GENERIC_ALL

      Право Windows NT, включающее все права, указанные KAUTH_VNODE_GENERIC_EXECUTE, KAUTH_VNODE_GENERIC_WRITE, и KAUTH_VNODE_GENERIC_READ.

    • KAUTH_VNODE_GENERIC_EXECUTE

      KAUTH_VNODE_GENERIC_EXECUTE

      Право Windows NT, в Windows 2000 ставшее правом считать атрибуты, считало полномочия, пересекает папки и выполняет файлы.

    • KAUTH_VNODE_GENERIC_WRITE

      KAUTH_VNODE_GENERIC_WRITE

      Право Windows NT, в Windows 2000 ставшее правильным к правам доступа для чтения, создает подкаталог в каталоге, пишет данные в файле, создает файлы в каталоге, добавляет данные к файлу, пишет атрибуты, и запись расширила атрибуты.

    • KAUTH_VNODE_GENERIC_READ

      KAUTH_VNODE_GENERIC_READ

      Право Windows NT, в Windows 2000 ставшее правильным перечислить каталоги, считало данные файла, считало атрибуты, считало расширенные атрибуты и права доступа для чтения.

    Обсуждение

    Эти определения сделаны в kauth.h. Используйте эти определения для указания прав доступа при вызове FPAccess, проанализировать права доступа, возвращенные FPGetACL, и установить права доступа при вызове FPSetExtAttr.

  • 32-разрядное значение, биты которого указывают возможность Владельца каталога, Группы и Всех для чтения, пишет и ищет каталог.

    Объявление

    Objective C

    enum { kSPOwner = 0x1, kRPOwner = 0x2, kWROwner = 0x4, kSPGroup = 0x100, kRPGroup = 0x200, kWRGroup = 0x400, kSPOther = 0x10000, kRPOther = 0x20000, kWROther = 0x40000, kSPUser = 0x1000000, kRPUser = 0x2000000, kWRUser = 0x4000000, kBlankAcess = 0x10000000, kUserIsOwner = 0x80000000 };

    Константы

    • kSPOwner

      kSPOwner

      Первоначально выдержанный за поисковое разрешение. В OS X этот бит используется для, выполняют разрешение для владельца.

    • kRPOwner

      kRPOwner

      Считайте разрешение для владельца.

    • kWPOwner

      kWPOwner

      Запишите разрешение для владельца.

    • kSPGroup

      kSPGroup

      Первоначально выдержанный за поисковое разрешение. В OS X этот бит используется для, выполняют разрешение для группы владения.

    • kRPGroup

      kRPGroup

      Считайте разрешение для группы владения.

    • kWPGroup

      kWPGroup

      Запишите разрешение для группы владения.

    • kSPOther

      kSPOther

      Первоначально выдержанный за поисковое разрешение. В OS X этот бит используется для, выполняют разрешение для пользователей, которые не являются ни владельцем, ни в группе владения.

    • kRPOther

      kRPOther

      Считайте разрешение для пользователей, которые не являются ни владельцем, ни в группе владения.

    • kWPOther

      kWPOther

      Запишите разрешение для пользователей, которые не являются ни владельцем, ни в группе владения.

    • kSPUser

      kSPUser

      Первоначально выдержанный за поисковое разрешение. В OS X этот бит используется для, выполняются, разрешение для в настоящее время входило в систему пользователь.

    • kRPUser

      kRPUser

      Читайте разрешение для в настоящее время входило в систему пользователь.

    • kWPUser

      kWPUser

      Запишите, что разрешение для в настоящее время входило в систему пользователь.

    • kBlankAcess

      kBlankAcess

      То, когда пустые права доступа укусили, установлено для каталога, его другие биты права доступа проигнорированы, и биты права доступа родителя каталога применяются к каталогу, включая присоединение группы родителя.

    • kUserIsOwner

      kUserIsOwner

      Набор к 1, если текущий пользователь является владельцем файла или каталога. Также набор к 1, если, если файл или каталог не принадлежит зарегистрированному пользователю.

    Обсуждение

    Вызвать FPGetFileDirParms получить битовый массив Прав доступа.

    Рисунок 83 показывает битовый массив Прав доступа.

    Битовый массив Прав рисунка 83Access image: ../Art/afp_093.eps
  • 16-разрядное значение, биты которого используются, чтобы получить и установить параметры каталога и файл.

    Объявление

    Objective C

    enum { kFPAttributeBit = 0x1, kFPParentDirIDBit = 0x2, kFPCreateDateBit = 0x4, kFPModDateBit = 0x8, kFPBackupDateBit = 0x10, kFPFinderInfoBit = 0x20, kFPLongNameBit = 0x40, kFPShortNameBit = 0x80, kFPNodeIDBit = 0x100, /* Bits that apply only to directories: */ kFPOffspringCountBit = 0x0200, kFPOwnerIDBit = 0x0400, kFPGroupIDBit = 0x0800, kFPAccessRightsBit = 0x1000, /* Bits that apply only to files (same bits as previous group ): */ kFPDataForkLenBit = 0x0200, kFPRsrcForkLenBit = 0x0400, kFPExtDataForkLenBit = 0x0800 , // In AFP version 3.0 and later kFPLaunchLimitBit = 0x1000, /* Bits that apply to everything except where noted: */ kFPProDOSInfoBit = 0x2000 // Deprecated; AFP version 2.2 and earlier kFPUTF8NameBit = 0x2000 , // AFP version 3.0 and later kFPExtRsrcForkLenBit = 0x4000 , // Files only; AFP version 3.0 and later kFPUnixPrivsBit = 0x8000 // AFP version 3.0 and later kFPUUID = 0x10000 // Directories only; AFP version 3.2 and later (with ACL support ) };

    Константы

    • kFPAttributeBit

      kFPAttributeBit

      Если элемент является файлом и kFPAttributeBit установлен в запросе, ответ содержит a uint16_t значение, содержащее биты, определяется битовым массивом атрибутов файла.. Если элемент является каталогом и kFPAttributeBit установлен в запросе, ответ содержит a uint16_t значение, содержащее биты, определенные каталогом, приписывает битовый массив. Эти битовые массивы описаны в Битовом массиве Атрибутов Файла и Каталога.

    • kFPParentDirIDBit

      kFPParentDirIDBit

      Получает уникальный идентификатор каталога включения (a uint32_t значение).

    • kFPCreateDateBit

      kFPCreateDateBit

      Получает дату создания в формате даты Macintosh (uint32_t содержа число секунд с полуночи 01.01.1904). Посмотрите Разовые датой Значения в Руководстве по программированию файлового протокола Apple для получения дополнительной информации.

    • kFPModDateBit

      kFPModDateBit

      Получает дату последнего изменения в формате даты Macintosh (uint32_t содержа число секунд с полуночи 01.01.1904). Посмотрите Разовые датой Значения в Руководстве по программированию файлового протокола Apple для получения дополнительной информации.

    • kFPBackupDateBit

      kFPBackupDateBit

      Получает дату последнего резервного копирования в формате даты Macintosh (uint32_t содержа число секунд с полуночи 01.01.1904). Посмотрите Разовые датой Значения в Руководстве по программированию файлового протокола Apple для получения дополнительной информации.

    • kFPFinderInfoBit

      kFPFinderInfoBit

      Получает информационные данные Средства поиска (32 байта). Эти данные доступны для файлов и каталогов на HFS или HFS + объемы. Это не интерпретируется сервером AFP или клиентским программным обеспечением всегда.

    • kFPLongNameBit

      kFPLongNameBit

      Получает длинное имя. (Формат является строкой Паскаля до 32 символов.) Посмотрите Имена узла Каталога для получения дополнительной информации.

    • kFPShortNameBit

      kFPShortNameBit

      Получает краткое название. (Формат является строкой Паскаля до 12 символов.) Посмотрите Имена узла Каталога для получения дополнительной информации.

    • kFPNodeIDBit

      kFPNodeIDBit

      Получает узел ID (a uint32_t значение). (В OS X это получено путем вызова PBGetCatInfoSync или PBGetCatInfoAsync.)

    • kFPOffspringCountBit

      kFPOffspringCountBit

      Для каталогов, получает число файлов и папок в каталоге (a uint32_t значение). Для файлов этот бит kFPDataForkLenBit.

    • kFPOwnerIDBit

      kFPOwnerIDBit

      Для каталогов, получает владельца ID (a uint32_t значение). См. Безопасность Файлового сервера AFP для получения дополнительной информации.

      Для файлов этот бит kFPRsrcForkLenBit.

    • kFPGroupIDBit

      kFPGroupIDBit

      Для каталогов, получает группу ID (a uint32_t значение). См. Безопасность Файлового сервера AFP для получения дополнительной информации.

      Для файлов этот бит kFPExtDataForkLenBit.

    • kFPAccessRightsBit

      kFPAccessRightsBit

      Для каталогов, получает битовый массив прав доступа, a uint32_t значение, описывающее права доступа для владельца каталога, присоединения группы и Всех. Этот битовый массив также включает UARights сводный байт. Для файлов этот бит kFPLaunchLimitBit. Для получения дополнительной информации посмотрите Битовый массив Прав доступа.

    • kFPDataForkLenBit

      kFPDataForkLenBit

      Для файлов, получает длину ветви данных (в a uint32_t). Если длина ветви данных больше, чем 4 ГБ, указывая, что этот бит возвращает фактическую длину ветви данных. Если длина ветви данных больше, чем 4 ГБ, указывая, что этот бит возвращает 4 ГБ.

      Для каталогов этот бит kFPOffspringCountBit.

    • kFPRsrcForkLenBit

      kFPRsrcForkLenBit

      Для файлов, получает длину ветви ресурсов (в a uint32_t). Если длина ветви ресурсов больше, чем 4 ГБ, указывая, что этот бит возвращает фактическую длину ветви данных. Если длина ветви данных больше, чем 4 ГБ, указывая, что этот бит возвращает 4 ГБ.

      Для каталогов этот бит kFPOwnerIDBit.

    • kFPExtDataForkLenBit

      kFPExtDataForkLenBit

      Для файлов, получает длину ветви данных (в a uint64_t). Для каталогов этот бит kFPGroupIDBit.

    • kFPLaunchLimitBit

      kFPLaunchLimitBit

      Устаревший. Для файлов, используемых для ограничения числа параллельных копий приложения. Не поддерживаемый в OS X. Для каталогов этот бит kFPAccessRightsBit.

    • kFPProDOSInfoBit

      kFPProDOSInfoBit

      Для версий AFP 2.2 и ранее, используемый серией Apple II для получения имени ProDOS для файла. Этот флаг был снова использован в AFP 3.0 и позже для kFPUTF8NameBit. Сервер AFP в OS X не поддерживает этот флаг или клиенты ProDOS.

    • kFPUTF8NameBit

      kFPUTF8NameBit

      Получает имя файла в кодировании UTF-8. Заменяет устаревшее kFPProDOSInfoBit флаг. Посмотрите Имена узла Каталога для получения дополнительной информации.

    • kFPExtRsrcForkLenBit

      kFPExtRsrcForkLenBit

      Для файлов, получает длину ветви ресурсов (в a uint64_t). Не допустимый для каталогов.

    • kFPUnixPrivsBit

      kFPUnixPrivsBit

      Получает права UNIX для каталога. Это значение составляет 16 байтов FPUnixPrivs структура.

    • kFPUUID

      kFPUUID

      Для каталогов, получает UUID для каталога. Не допустимый для файлов.

    Обсуждение

    Битовый массив Файла и Каталога отличается немного по поведению в зависимости от того, применяется ли это к файлу или к каталогу. Эти два значения для каждого бита проиллюстрированы следующими числами.

    Битовый массив Файла используется при вызове FPGetFileDirParms для указания параметров файла, Вы хотите добраться. Это также используется при вызове FPSetFileParms и FPSetFileDirParms устанавливать параметры файла.

    Рисунок 84 описывает битовый массив Файла.

    Битовый массив рисунка 84File image: ../Art/afp_091.eps

    Битовый массив Каталога используется при вызове FPGetFileDirParms для указания параметров каталога, Вы хотите добраться. Это также используется при вызове FPSetDirParms и FPSetFileDirParms устанавливать параметры каталога.

    Рисунок 85 описывает битовый массив Каталога.

    Битовый массив рисунка 85Directory image: ../Art/afp_089.eps
  • 16-разрядное значение, биты которого предоставляют дополнительную информацию о файле.

    Объявление

    Objective C

    enum { kFPInvisibleBit = 0x01, kFPMultiUserBit = 0x02 , // for files kAttrIsExpFolder = 0x02 , // for directories kFPSystemBit = 0x04, kFPDAlreadyOpenBit = 0x08 , // for files kAttrMounted = 0x08 , // for directories kFPRAlreadyOpenBit = 0x10 , // for files kAttrInExpFolder = 0x10 , // for directories kFPWriteInhibitBit = 0x20, kFPBackUpNeededBit = 0x40, kFPRenameInhibitBit = 0x80, kFPDeleteInhibitBit = 0x100, kFPCopyProtectBit = 0x400, kFPSetClearBit = 0x8000 };

    Константы

    • kFPInvisibleBit

      kFPInvisibleBit

      Файл или каталог не должен быть сделан видимым пользователю. Этот бит, получают и устанавливают использование finderInfo структура данных как kInvisible (0x4000). Это отправляется в AFP с помощью поля атрибутов FPSetFileDirParms.

    • kAttrIsExpFolder

      kAttrIsExpFolder

      Каталог является точкой доли. Этот каталог и все каталоги в нем, указывают пользователю, что права доступа допустимы (например, путем отображения снабженных вкладками папок или значков папок Dropbox или путем включения пункта меню Sharing). Ни один из каталогов вне совместно используемой (экспортируемой) области не показывает права доступа на локальных компьютерах, несмотря на то, что у них может все еще быть допустимая информация о праве доступа, которую только администратор видит или изменяет. Этот бит является битом только для чтения. Это не может быть установлено FPSetFileDirParms.

      Этот бит проигнорирован клиентами OS X. Если каталог является точкой доли, сервер OS X действительно устанавливает этот бит.

    • kFPMultiUserBit

      kFPMultiUserBit

      Говорит клиенту, что многочисленные пользователи могут запустить приложение от многократных клиентов AFP одновременно. Несмотря на то, что все еще поддерживается в клиенте, этот бит является прежде всего, представляющим исторический интерес для Mac OS 9 приложений. Этот бит, получают и устанавливают использование kIsShared (0x0040) бит finderInfo структура данных, и отправляется в AFP с помощью поля атрибутов. В Сервере OS X этот флаг проигнорирован и всегда устанавливается в true (1).

    • kFPSystemBit

      kFPSystemBit

      Указывает, что папка является системным каталогом или файлом; определение “системного каталога или файла” оставляют локальному компьютеру. Проигнорированный в Mac OS 9 и позже.

    • kAttrMounted

      kAttrMounted

      Каталог смонтирован пользователем, который не является администратором. Значок для такой папки указывает пользователю локального компьютера, что этот каталог является точкой доли, и что удаленному пользователю в настоящее время монтировали его. Этот бит является битом только для чтения. Это не может быть установлено FPSetFileDirParms.

      Этот бит проигнорирован клиентами OS X. Если точка монтирования открыта многократными клиентами, сервер OS X действительно устанавливает этот бит..

    • kAttrInExpFolder

      kAttrInExpFolder

      Каталог находится в совместно используемой области. Этот каталог и все каталоги в этом каталоге, указывают пользователю, что права доступа допустимы. Этот каталог не может быть совместно использован, потому что точка доли не может существовать в другой точке доли. Этот бит является битом только для чтения. Это не может быть установлено FPSetFileDirParms.

      Этот бит проигнорирован клиентами OS X. Если каталог в sharepoint, сервер OS X действительно устанавливает этот бит.

    • kFPDAlreadyOpenBit

      kFPDAlreadyOpenBit

      Ветвь данных уже открыта. Клиентская реализация OS X игнорирует этот флаг, но Mac OS 9 клиентов не может. Если ветвь данных файла открыта многократными клиентами, сервер OS X действительно устанавливает этот бит. Эти данные получены из nodeFlags поле FSCatalogInfo.

    • kFPRAlreadyOpenBit

      kFPRAlreadyOpenBit

      Ветвь ресурсов уже открыта. Клиентская реализация OS X игнорирует эти флаги, но Mac OS 9 клиентов не может. Если ветвь ресурсов файла открыта многократными клиентами, сервер OS X действительно устанавливает этот бит. Эти данные получены из nodeFlags поле FSCatalogInfo.

    • kFPWriteInhibitBit

      kFPWriteInhibitBit

      Указывает, что файл не может быть записан в. Это установлено если SF_IMMUTABLE (неизменный суперпользователь) или UR_IMMUTABLE (неизменный владелец), флаги установлены. (Удалите запрещение и переименуйте запрещение, также установлены, если установлены эти флаги.)

    • kFPBackUpNeededBit

      kFPBackUpNeededBit

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

      Этот бит проигнорирован клиентами OS X и не поддерживается в Клиенте AppleShare 3.8 и позже или в OS X.

    • kFPRenameInhibitBit

      kFPRenameInhibitBit

      Каталог не может быть переименован. Это установлено если SF_IMMUTABLE (неизменный суперпользователь) или UR_IMMUTABLE (неизменный владелец), флаги установлены. (Запишите запрещение и удалите запрещение, также установлены, если установлены эти флаги.)

    • kFPDeleteInhibitBit

      kFPDeleteInhibitBit

      Каталог не может быть удален. Это установлено если SF_IMMUTABLE (неизменный суперпользователь) или UR_IMMUTABLE (неизменный владелец), флаги установлены. (Запишите запрещение и переименуйте запрещение, также установлены, если установлены эти флаги.)

    • kFPCopyProtectBit

      kFPCopyProtectBit

      Устаревший. Обозначенный, что не должно быть позволено копирование файла. Не поддерживаемый в OS X.

    • kFPSetClearBit

      kFPSetClearBit

      При вызове FPSetDirParms и FPSetFileDirParms, если этот бит установлен в 1, атрибуты, связанные с любым 1 битом в битовом массиве, установлены. Если этот бит установлен в 0, атрибуты, связанные с любым 1 битом в битовом массиве, очищены. Не возможно установить некоторые атрибуты и очистить другие атрибуты в том же вызове.

    Обсуждение

    Используйте биты в битовом массиве Атрибутов файла для запрещения записи, переименования или удаления файла. Другие биты в битовом массиве Атрибутов файла указывают, должен ли файл быть скопирован, может ли файл быть скопирован, невидим ли файл или системный файл, открыты ли ветвь данных файла или ветвь ресурсов, и может ли файл быть открыт одновременно многочисленными пользователями. При вызове FPSetFileParms и FPSetFileDirParms для установки Атрибутов файла используйте Установить/Очистить бит (укусил 15) указать, устанавливаете ли Вы или очищаете атрибут файла.

    Рисунок 86 описывает битовый массив Атрибутов для файла.

    Рисунок 86File приписывает битовый массив image: ../Art/afp_092.eps

    Используйте биты в битовом массиве Атрибутов Каталога для запрещения переименования или удаления каталога. Другие биты в битовом массиве Атрибутов Каталога указывают, должен ли каталог быть скопирован, смонтирован ли каталог пользователем, невидим ли каталог или системный каталог, и является ли каталог в совместно используемой области или является точкой доли. При вызове FPSetDirParms и FPGetFileDirParms для установки Атрибутов Каталога используйте Установить/Очистить бит (укусил 15) указать, устанавливаете ли Вы или очищаете атрибут каталога.

    Рисунок 87 описывает битовый массив Атрибутов для каталога.

    Рисунок 87Directory приписывает битовый массив image: ../Art/afp_090.eps
  • Константы, управляющие поведением при установке расширенных атрибутов.

    Объявление

    Objective C

    enum { kXAttrNoFollow = 0x1, kXAttrCreate = 0x2, kXAttrReplace = 0x4 };

    Константы

    • kXAttrNoFollow

      kXAttrNoFollow

      Если установлено, не идите по символьным ссылкам.

    • kXAttrCreate

      kXAttrCreate

      Если установлено, FPSetExtAttr сбои, если уже существует расширенный атрибут.

    • kXAttrReplace

      kXAttrReplace

      Если установлено, FPSetExtAttr сбои, если не существует расширенный атрибут.

    Обсуждение

    Используйте эти константы в Растровом параметре FPGetExtAttr, FPSetExtAttr, и FPRemoveExtAttr команды для получения установите и удалите расширенные атрибуты.

  • 16-разрядное значение, описывающее возможности сервера.

    Объявление

    Objective C

    enum { kSupportsCopyfile = 0x01, kSupportsChgPwd = 0x02, kDontAllowSavePwd = 0x04, kSupportsSrvrMsg = 0x08, kSrvrSig = 0x10, kSupportsTCP = 0x20, kSupportsSrvrNotify = 0x40, kSupportsReconnect = 0x80, kSupportsDirServices = 0x100, kSupportsUTF8SrvrName = 0x200, kSupportsUUIDs = 0x400, kSupportsExtSleep = 0x800, kSupportsSuperClient = 0x8000 };

    Константы

    • kSupportsCopyfile

      kSupportsCopyfile

      Указывает, что сервер поддерживает FPCopyFile.

    • kSupportsChgPwd

      kSupportsChgPwd

      Указывает, что сервер позволяет пользователю изменять пароли через AFP (использование FPChangePassword).

    • kDontAllowSavePwd

      kDontAllowSavePwd

      Устаревший. Набор, если клиент не должен позволять пользователю сохранять его или ее пароль для объемов, смонтированных при системном запуске. Диалоговое окно выбора элемента может все еще позволить пользователю сохранять его или ее имя. Однако, когда этот бит установлен, кнопка, предлагающая ту опцию, не выведена на экран. Не используемый в OS X.

    • kSupportsSrvrMsg

      kSupportsSrvrMsg

      Указывает, что сервер поддерживает сообщения сервера (использование FPGetSrvrMsg).

    • kSrvrSig

      kSrvrSig

      Указывает, что сервер поддерживает дополнительное ServerSignature параметр в FPGetSrvrInfo используемый для идентификации сервера. Подпись сервера является 16-байтовым числом, однозначно определяющим сервер. Клиент использует эту подпись, чтобы определить, регистрируется ли она уже в сервер. (Эта функция важна, когда сервер сконфигурирован для размещения в разных сетях.)

    • kSupportsTCP

      kSupportsTCP

      Указывает, что сервер поддерживает AFP по TCP/IP.

    • kSupportsSrvrNotify

      kSupportsSrvrNotify

      Поддержки сервера, отправляющие пакеты Внимания DSI с «образцом» Уведомления Сервера (0011). Посмотрите DSIAttention для получения дополнительной информации.

    • kSupportsReconnect

      kSupportsReconnect

      Указывает, что сервер поддерживает переподключение UAM и FPGetSessionToken и FPDisconnectOldSession команды. Посмотрите Переподключение и Повторно соединяющиеся Сеансы в Руководстве по программированию файлового протокола Apple для получения дополнительной информации о пересоединении.

    • kSupportsDirServices

      kSupportsDirServices

      Указывает что поддержки сервера с помощью службы каталогов (обычно Kerberos).

    • kSupportsUTF8SrvrName

      kSupportsUTF8SrvrName

      Указывает, что сервер поддерживает имена серверов в кодировании UTF-8. Если этот флаг установлен, FPGetSrvrInfo ответный пакет находится в кодировании UTF-8.

    • kSupportsUUIDs

      kSupportsUUIDs

      Указывает, что сервер поддерживает Универсально Уникальные идентификаторы (UUIDs).

    • kSupportsExtSleep

      kSupportsExtSleep

      Указывает, что сервер поддерживает расширенную функциональность сна. Посмотрите FPZzzzz для получения дополнительной информации.

    • kSupportsSuperClient

      kSupportsSuperClient

      Устаревший. (До OS X это указало, что сервер мог обработать многократные выдающиеся запросы.)

    Обсуждение

    Битовый массив Флагов Сервера возвращается FPGetSrvrInfo команда.

  • 16-разрядное значение, биты которого используются, чтобы получить и установить параметры объема.

    Объявление

    Objective C

    enum { kFPVolAttributeBit = 0x1, kFPVolSignatureBit = 0x2, kFPVolCreateDateBit = 0x4, kFPVolModDateBit = 0x8, kFPVolBackupDateBit = 0x10, kFPVolIDBit = 0x20, kFPVolBytesFreeBit = 0x40, kFPVolBytesTotalBit = 0x80, kFPVolNameBit = 0x100, kFPVolExtBytesFreeBit = 0x200, kFPVolExtBytesTotalBit = 0x400, kFPVolBlockSizeBit = 0x800 };

    Константы

    • kFPVolAttributeBit

      kFPVolAttributeBit

      Если установлено в 1, блок ответа содержит a uint16_t значение, содержащее биты, определяется Битовым массивом Атрибутов Объема.

    • kFPVolSignatureBit

      kFPVolSignatureBit

      Возвращает подпись объема. Подпись объема идентифицирует тип объема (плоский, фиксированный Каталог ID или переменный Каталог ID).

      Табличные 75Volume типы

      Значение

      Описание

      1

      Плоский (никакие поддерживаемые каталоги)

      2

      Фиксированный каталог ID

      3

      Переменный каталог ID (осужден)

      Для получения дополнительной информации посмотрите раздел Apple Filing Protocol Concepts in Apple Filing Protocol Programming Guide.

    • kFPVolCreateDateBit

      kFPVolCreateDateBit

      Дата объем создавалась в формате даты Macintosh (uint32_t содержа число секунд с полуночи 01.01.1904). Этот параметр не может быть изменен клиентом AFP.

    • kFPVolModDateBit

      kFPVolModDateBit

      Дата объем была в последний раз изменена в формате даты Macintosh (uint32_t содержа число секунд с полуночи 01.01.1904). Этот параметр не может быть изменен клиентом AFP.

    • kFPVolBackupDateBit

      kFPVolBackupDateBit

      Дата объем была в последний раз скопирована в формате даты Macintosh (uint32_t содержа число секунд с полуночи 01.01.1904). Установленный резервными программами каждый раз содержание объема копируется. Когда объем создается, Резервная Дата назначена к 0x80000000 (самое раннее представимое разовое датой значение). Этот параметр не может быть изменен клиентом AFP.

    • kFPVolIDBit

      kFPVolIDBit

      Объем ID (uint32_t). Для каждого сеанса между сервером и клиентом AFP, сервер присваивает Объем ID каждому из его объемов. Это значение уникально среди объемов данного сервера для того сеанса. Этот параметр не может быть изменен клиентом AFP.

    • kFPVolBytesFreeBit

      kFPVolBytesFreeBit

      Число свободных байтов на объеме AFP как a uint32_t значение. Если объем составляет больше чем 4 ГБ, это значение может не отразить фактическое свободное пространство. В целом необходимо использовать kFPVolExtBytesFreeBit вместо этого. Это значение сохраняется сервером и не может быть изменено клиентом AFP. Этот параметр не может быть изменен клиентом AFP.

    • kFPVolBytesTotalBit

      kFPVolBytesTotalBit

      Общее количество байтов (свободный + используемый) на объеме AFP как a uint32_t значение. Если объем составляет больше чем 4 ГБ, это значение может не отразить фактическое общее пространство. В целом необходимо использовать kFPVolExtBytesTotalBit вместо этого. Этот параметр не может быть изменен клиентом AFP.

    • kFPVolNameBit

      kFPVolNameBit

      Имя тома как строка. Имя тома идентифицирует объем сервера для пользователя клиента AFP, таким образом, это должно быть уникально среди всех объемов, которыми управляет сервер. Все восьмиразрядные символы ASCII, кроме нуля (0x00) и двоеточие (0x3A), разрешены в имени тома. Это имя не используется непосредственно для указания файлов и каталогов на объеме. Вместо этого клиент AFP отправляет команду AFP для получения определенного идентификатора объема, который она тогда использует при отправке последующих команд AFP. Для получения дополнительной информации посмотрите Понятия файлового протокола Apple в Руководстве по программированию файлового протокола Apple.

    • kFPVolExtBytesFreeBit

      kFPVolExtBytesFreeBit

      Число свободных байтов на объеме AFP как a uint64_t значение. Этот параметр не может быть изменен клиентом AFP.

    • kFPVolExtBytesTotalBit

      kFPVolExtBytesTotalBit

      Общее количество байтов (свободный + используемый) на объеме AFP как a uint64_t значение. Этот параметр не может быть изменен клиентом AFP.

    • kFPVolBlockSizeBit

      kFPVolBlockSizeBit

      Размер логического блока объема AFP. Этот параметр не может быть изменен клиентом AFP.

    Обсуждение

    Битовый массив Объема используется при вызове FPGetVolParms для указания параметров объема, Вы хотите добраться. Это также используется при вызове FPSetVolParms назначать резервную дату объема, которая является единственным параметром Объема, который может установить клиент AFP. Рисунок 88 описывает битовый массив Объема.

    Битовый массив рисунка 88Volume image: ../Art/afp_087.eps
  • 16-разрядное значение, биты которого описывают, как смонтирован объем и поддерживает ли это определенные функции AFP.

    Объявление

    Objective C

    enum { kReadOnly = 0x01, kHasVolumePassword = 0x02, kSupportsFileIDs = 0x04, kSupportsCatSearch = 0x08, kSupportsBlankAccessPrivs = 0x10, kSupportsUnixPrivs = 0x20, kSupportsUTF8Names = 0x40, kNoNetworkUserIDs = 0x80, kDefaultPrivsFromParent = 0x100, kNoExchangeFiles = 0x200, kSupportsExtAttrs = 0x400, kSupportsACLs = 0x800, kCaseSensitive = 0x1000, kSupportsTMLockSteal = 0x2000 };

    Константы

    • kReadOnly

      kReadOnly

      Объем является объемом только для чтения.

    • kHasVolumePassword

      kHasVolumePassword

      Объем имеет пароль. Этот бит совпадает с HasPassword бит возвратился для каждого объема FPGetSrvrParms.

    • kSupportsFileIDs

      kSupportsFileIDs

      Поддержки объема, получая идентификаторы файла. В целом, если идентификаторы файла поддерживаются на одном объеме, они поддерживаются на всех объемах, но этот бит позволяет серверу быть более выборочным, при необходимости.

    • kSupportsCatSearch

      kSupportsCatSearch

      Поддержки объема, ищущие дерево каталога с FPCatSearch и FPCatSearchExt команды. Поддержка FPCatSearch и FPCatSearchExt является дополнительным. Этот бит позволяет серверу делать эту возможность доступной на основе на объем.

    • kSupportsBlankAccessPrivs

      kSupportsBlankAccessPrivs

      Если установлено, объем имеет Пробел Поддержек, который укусили Права доступа, это, когда установлено для каталога, заставляет каталог наследовать свои права доступа из его родительского каталога.

    • kSupportsUnixPrivs

      kSupportsUnixPrivs

      Объем поддерживает UNIX (owner/group/other) модель полномочий.

    • kSupportsUTF8Names

      kSupportsUTF8Names

      Объем поддерживает UTF-8–encoded имена пользователей, названия группы и пути.

    • kNoNetworkUserIDs

      kNoNetworkUserIDs

      Если это будет установлено сервером, то клиент будет всегда использовать отображенные полномочия. См. Безопасность Файлового сервера AFP в Руководстве по программированию файлового протокола Apple для получения дополнительной информации об отображении полномочия.

    • kDefaultPrivsFromParent

      kDefaultPrivsFromParent

      Недавно создаваемые каталоги наследовали полномочия по умолчанию из родительского каталога.

    • kNoExchangeFiles

      kNoExchangeFiles

      Объем не поддерживает FPExchangeFiles Команда AFP.

    • kSupportsExtAttrs

      kSupportsExtAttrs

      Поддержки объема расширили атрибуты.

    • kSupportsACLs

      kSupportsACLs

      Объем поддерживает списки управления доступом.

    • kCaseSensitive

      kCaseSensitive

      Объем поддерживает чувствительные к регистру имена файлов.

    • kSupportsTMLockSteal

      kSupportsTMLockSteal

      Объем поддерживает кражу блокировки Машины времени. Посмотрите Time Machine Network Interface Specification (TMNIS) для получения дополнительной информации.

    Обсуждение

    Рисунок 89 описывает битовый массив Атрибутов для объема.

    Рисунок 89Volume приписывает битовый массив image: ../ART/afp_088.eps

    Посмотрите раздел Character Encoding Понятий файлового протокола Apple в Руководстве по программированию файлового протокола Apple для дополнительных подробных данных о UTF-8 кодирование используемого AFP.

  • Текстовые кодировки поддерживаются AFP.

    Объявление

    Objective C

    enum { kTextEncodingMacRoman = 0, kTextEncodingMacJapanese = 1, kTextEncodingMacChineseTrad = 2, kTextEncodingMacKorean = 3, kTextEncodingMacArabic = 4, kTextEncodingMacHebrew = 5, kTextEncodingMacGreek = 6, kTextEncodingMacCyrillic = 7, kTextEncodingMacDevanagari = 9, kTextEncodingMacGurmukhi = 10, kTextEncodingMacGujarati = 11, kTextEncodingMacOriya = 12, kTextEncodingMacBengali = 13, kTextEncodingMacTamil = 14, kTextEncodingMacTelugu = 15, kTextEncodingMacKannada = 16, kTextEncodingMacMalayalam = 17, kTextEncodingMacSinhalese = 18, kTextEncodingMacBurmese = 19, kTextEncodingMacKhmer = 20, kTextEncodingMacThai = 21, kTextEncodingMacLaotian = 22, kTextEncodingMacGeorgian = 23, kTextEncodingMacArmenian = 24, kTextEncodingMacChineseSimp = 25, kTextEncodingMacTibetan = 26, kTextEncodingMacMongolian = 27, kTextEncodingMacEthiopic = 28, kTextEncodingMacCentralEurRoman = 29, kTextEncodingMacVietnamese = 30, kTextEncodingMacExtArabic = 31, kTextEncodingMacSymbol = 33, kTextEncodingMacDingbats = 34, kTextEncodingMacTurkish = 35, kTextEncodingMacCroatian = 36, kTextEncodingMacIcelandic = 37, kTextEncodingMacRomanian = 38, kTextEncodingMacCeltic = 39, kTextEncodingMacGaelic = 40, kTextEncodingMacKeyboardGlyphs = 41, kTextEncodingMacUnicode = 126, kTextEncodingMacFarsi = 140, kTextEncodingMacUkrainian = 152, kTextEncodingMacInuit = 236, kTextEncodingMacVT100 = 252, kTextEncodingMacHFS = 255, kTextEncodingUnicodeDefault = 256, kTextEncodingUnicodeV1_1 = 257, kTextEncodingISO10646_1993 = 257, kTextEncodingUnicodeV2_0 = 259, kTextEncodingUnicodeV2_1 = 259, kTextEncodingUnicodeV3_0 = 260, kTextEncodingISOLatin1 = 513, kTextEncodingISOLatin2 = 514, kTextEncodingISOLatin3 = 515, kTextEncodingISOLatin4 = 516, kTextEncodingISOLatinCyrillic = 517, kTextEncodingISOLatinArabic = 518, kTextEncodingISOLatinGreek = 519, kTextEncodingISOLatinHebrew = 520, kTextEncodingISOLatin5 = 521, kTextEncodingISOLatin6 = 522, kTextEncodingISOLatin7 = 525, kTextEncodingISOLatin8 = 526, kTextEncodingISOLatin9 = 527, kTextEncodingDOSLatinUS = 1024, kTextEncodingDOSGreek = 1029, kTextEncodingDOSBalticRim = 1030, kTextEncodingDOSLatin1 = 1040, kTextEncodingDOSGreek1 = 1041, kTextEncodingDOSLatin2 = 1042, kTextEncodingDOSCyrillic = 1043, kTextEncodingDOSTurkish = 1044, kTextEncodingDOSPortuguese = 1045, kTextEncodingDOSIcelandic = 1046, kTextEncodingDOSHebrew = 1047, kTextEncodingDOSCanadianFrench = 1048, kTextEncodingDOSArabic = 1049, kTextEncodingDOSNordic = 1050, kTextEncodingDOSRussian = 1051, kTextEncodingDOSGreek2 = 1052, kTextEncodingDOSThai = 1053, kTextEncodingDOSJapanese = 1056, kTextEncodingDOSChineseSimplif = 1057, kTextEncodingDOSKorean = 1058, kTextEncodingDOSChineseTrad = 1059, kTextEncodingWindowsLatin1 = 1280, kTextEncodingWindowsANSI = 1280, kTextEncodingWindowsLatin2 = 1281, kTextEncodingWindowsCyrillic = 1282, kTextEncodingWindowsGreek = 1283, kTextEncodingWindowsLatin5 = 1284, kTextEncodingWindowsHebrew = 1285, kTextEncodingWindowsArabic = 1286, kTextEncodingWindowsBalticRim = 1287, kTextEncodingWindowsVietnamese = 1288, kTextEncodingWindowsKoreanJohab = 1296, kTextEncodingUS_ASCII = 1536, kTextEncodingJIS_X0201_76 = 1568, kTextEncodingJIS_X0208_83 = 1569, kTextEncodingJIS_X0208_90 = 1570 };

Константы транспортного уровня DSI

  • AFPUserBytes байты составляют 2-байтовый код внимания, отправленный в пакете Внимания DSI клиенту AFP. В этом разделе описываются AFPUserBytes значения.

    Объявление

    Objective C

    enum { kShutDownNotifyMask = 0x8000, kAllowReconnectMask = 0x4000, kMsgNotifyMask = 0x2000, kDisconnectNotifyMask = 0x1000, };

    Константы

    • kShutDownNotifyMask

      kShutDownNotifyMask

      Бит 15: Завершение работы или Внимание укусили. Этот бит используется, когда сервер закрывается, или разъединяются один или несколько пользователей.

    • kAllowReconnectMask

      kAllowReconnectMask

      Бит 14: Катастрофический отказ Сервера укусил. Сервер обнаружил внутреннюю ошибку, и сеанс сразу закроется с минимальным сбрасыванием файлов. Может быть некоторая потеря данных. Это условие никогда не сопровождается сервером, обмениваются сообщениями и очень вряд ли произойдет.

    • kMsgNotifyMask

      kMsgNotifyMask

      Бит 13: сообщение Сервера укусило. Существует сообщение сервера, что клиент должен запросить путем вызова FPGetSrvrMsg с MsgType «Сервера». Для получения дополнительной информации посмотрите раздел «FPGetSrvrMsg» (страница 55). Клиент должен запросить сообщение как можно скорее после получения этого кода внимания. Иначе, сообщение сервера, которое это получает, могло устареть.

    • kDisconnectNotifyMask

      kDisconnectNotifyMask

      Бит 12: не Повторно соединяйте бит. Этот бит установлен, когда пользователь разъединяется, так, чтобы код переподключения клиента не пытался повторно соединить сеанс. Этот бит не установлен для нормальных завершений работы сервера и не установлен, когда сервер теряет питание или когда существует перерыв в сетевых кабельных соединениях. Этот механизм позволяет администраторам закрывать сервер для целей резервирования, переводить сервер в рабочее состояние и позволять разъединенным клиентам повторно соединяться прозрачно. Когда число минут является любым значением кроме нуля, этот бит проигнорирован.

    Обсуждение

    AFPUserBytes расположение битового поля показано на рисунке 90.

    Рисунок 90AFPUserBytes расположение битового поля image: ../Art/AFPUserBytes.png

    Рисунок 91 показывает, как определяются биты кода внимания для байтов AFPUserBytes.

    Рисунок 91AFPUserBytes биты кода внимания image: ../Art/AFPUserBytes_attention_codes.png

    Таблица 76 перечисляет допустимые комбинации для битов кода внимания.

    Табличные 76Valid комбинации для AFPUserBytes Биты Кода внимания

    Комбинация

    Значение

    1000

    Сервер закрывается в определяемом числе минут, или пользователь будет разъединен в определяемом числе минут. Никакое сообщение не сопровождает это завершение работы. Этот код внимания может использоваться, когда сервер закрывается (т.е. когда администратор выходит из файловой службы).

    1001

    Сервер закрывается, или пользователь будет разъединен в определяемом числе минут. Никакое сообщение не сопровождает это завершение работы. Этот код внимания используется после пользовательского разъединения (например, когда администратор обнаруживает злоумышленника и разъединяет его или ее).

    1010

    Сервер закрывается, или пользователь будет разъединен в определяемом числе минут. Сообщение сопровождает это завершение работы. Рабочая станция должна сразу подчиниться FPGetSrvrMsg команда, чтобы получить и вывести на экран сообщение. Этот код внимания может использоваться на завершение работы сервера (т.е. когда администратор выходит из файловой службы).

    0100

    Сервер закрывается сразу, возможно вследствие внутренней ошибки, и может выполнить только минимальное сбрасывание. Сообщение никогда не сопровождает этот код внимания.

    1011

    Сервер закрывается, или пользователь будет разъединен в определяемом числе минут. Сообщение сопровождает это завершение работы. Рабочая станция должна сразу подчиниться FPGetSrvrMsg команда, чтобы получить и вывести на экран сообщение. Это - один из кодов, используемых после пользовательского разъединения (например, когда администратор обнаруживает злоумышленника и разъединяет его или ее).

    0100

    Сервер теряет работоспособность сразу (возможно из-за внутренней ошибки) и может выполнить только минимальное сбрасывание. Число минут проигнорировано. Никакое сообщение никогда не сопровождает такой код внимания.

    0010

    Сервер имеет сообщение сервера в наличии для этой рабочей станции. Рабочая станция должна сразу представить команду FPGetSrvrMsg, чтобы получить и вывести на экран сообщение. Расширенный битовый массив резервируется для использования Apple Computer только.

    0011

    Уведомление сервера (представленный в AFP 2.2). Сервер уведомляет клиент события, касающегося текущего сеанса. Бит 0 в расширенном битовом массиве указывает, что изменилась дата модификации одного из объемов, смонтированных от сервера. Клиент должен выйти FPGetVolParms команда для каждого объема смонтировалась от сервера.

    0001

    Зарезервированный. Расширенный битовый массив резервируется для использования Apple Computer только.

    0000

    Зарезервированный. Расширенный битовый массив резервируется для использования Apple Computer только.

    Обратите внимание на то, что для некоторых допустимых комбинаций двоичных разрядов, более низкие 12 битов AFPUserBytes интерпретируются как число минут, прежде чем действие, описанное комбинацией двоичных разрядов, будет иметь место. Это значение может быть числом в диапазоне от 0 до 4 094 ($FFE) включительно. Значение 4 095 ($FFF) означает, что отменяется действие.

Коды результата

Коды результата, определенные для файлового протокола Apple, перечислены в таблице ниже.

  • Никакая ошибка (успех).

    Значение

    0

    Описание

    Никакая ошибка (успех).

  • Сервер не может обработать дополнительные сеансы.

    Значение

    - 1068

    Описание

    Сервер не может обработать дополнительные сеансы.

    Эта ошибка обычно указывает, что сервер ограничивает максимальное количество параллельных клиентов, и что это максимальное количество было бы превышено путем удостаивания этого запроса входа в систему.

  • Сеанс ASP закрылся.

    Значение

    - 1072

    Описание

    Сеанс ASP закрылся.

  • Пользователю не требовали, чтобы права доступа использовали команду.

    Значение

    - 5000

    Описание

    Пользователю не требовали, чтобы права доступа использовали команду.

  • Аутентификация еще не завершена.

    Значение

    - 5001

    Описание

    Аутентификация еще не завершена.

  • Указанный UAM неизвестен

    Значение

    - 5002

    Описание

    Указанный UAM неизвестен

  • Сервер не поддерживает указанную версию AFP.

    Значение

    - 5003

    Описание

    Сервер не поддерживает указанную версию AFP.

  • Попытка была предпринята, чтобы получить или установить параметр, который не может быть получен или установлен с этой командой, или требуемый битовый массив является нулем

    Значение

    - 5004

    Описание

    Попытка была предпринята, чтобы получить или установить параметр, который не может быть получен или установлен с этой командой, или требуемый битовый массив является нулем

  • Попытка была предпринята для перемещения каталога в один из его происходящих каталогов.

    Значение

    - 5005

    Описание

    Попытка была предпринята для перемещения каталога в один из его происходящих каталогов.

  • Указанное ветвление не может быть открыто из-за отклонять конфликта режимов.

    Значение

    - 5006

    Описание

    Указанное ветвление не может быть открыто из-за отклонять конфликта режимов.

  • Каталог не пуст.

    Значение

    - 5007

    Описание

    Каталог не пуст.

  • Больше пространства не существует на объеме

    Значение

    - 5008

    Описание

    Больше пространства не существует на объеме

  • Больше соответствий или конца ветвления не достигли.

    Значение

    - 5009

    Описание

    Больше соответствий или конца ветвления не достигли.

  • Когда попытка твердого создает, файл уже существует и открыт.

    Значение

    - 5010

    Описание

    Когда попытка твердого создает, файл уже существует и открыт.

  • Объем является плоским и не поддерживает каталоги.

    Значение

    - 5011

    Описание

    Объем является плоским и не поддерживает каталоги.

  • Указанное отображение APPL, комментарий или значок не были найдены в базе данных Desktop; указанный ID неизвестен.

    Значение

    - 5012

    Описание

    Указанное отображение APPL, комментарий или значок не были найдены в базе данных Desktop; указанный ID неизвестен.

    Начинаясь в AFP 3.4, коде ошибки POSIX ENOATTR карты на этот код ошибки. В предшествующих версиях AFP, ENOATTR ошибка была отображена на “kFPMiscErr” код ошибки.

  • Некоторые или весь требуемый диапазон заблокированы другим пользователем; конфликт диапазона блокировки существует.

    Значение

    - 5013

    Описание

    Некоторые или весь требуемый диапазон заблокированы другим пользователем; конфликт диапазона блокировки существует.

  • Ошибка неAFP произошла.

    Значение

    - 5014

    Описание

    Ошибка неAFP произошла.

  • Максимальное количество блокировки сервера было достигнуто.

    Значение

    - 5015

    Описание

    Максимальное количество блокировки сервера было достигнуто.

  • Сервер не отвечает.

    Значение

    - 5016

    Описание

    Сервер не отвечает.

  • Файл или каталог уже существует.

    Значение

    - 5017

    Описание

    Файл или каталог уже существует.

  • Входные параметры не указывают на существующий каталог, файл или объем.

    Значение

    - 5018

    Описание

    Входные параметры не указывают на существующий каталог, файл или объем.

  • Значение

    - 5019

    Описание

    Ссылочный номер сеанса, Настольное число ссылки на базу данных, открытый ссылочный номер ветвления, Объем ID, Каталог ID, Идентификатор файла, Группа ID или подфункция неизвестны; диапазон байта запускается перед нулем байта; путь недопустим; тип пути неизвестен; имя пользователя является нулем, превышает предел длины имени пользователя UAM или не существует, MaxReplySize является слишком маленьким для содержания единственной структуры потомков, ThisUser укусил, не установлен, аутентификация, отказавшая по нераскрытой причине, указанный пользователь неизвестен, или учетная запись была отключена вследствие слишком многих попыток входа в систему; ReqCount или Смещение отрицательны; NewLineMask недопустимо.

  • Попытка разблокировать диапазон, заблокированный другим пользователем или это не заблокировано вообще.

    Значение

    - 5020

    Описание

    Попытка разблокировать диапазон, заблокированный другим пользователем или это не заблокировано вообще.

  • Пользователь попытался заблокировать некоторых или весь диапазон, который уже заблокировал пользователь.

    Значение

    - 5021

    Описание

    Пользователь попытался заблокировать некоторых или весь диапазон, который уже заблокировал пользователь.

  • Сеанс закрывается.

    Значение

    - 5022

    Описание

    Сеанс закрывается.

  • Неработающий UAM (указанный старый пароль не соответствует); никакой пользователь еще не зарегистрирован для указанного сеанса; аутентификация перестала работать; пароль является неправильным.

    Значение

    - 5023

    Описание

    Неработающий UAM (указанный старый пароль не соответствует); никакой пользователь еще не зарегистрирован для указанного сеанса; аутентификация перестала работать; пароль является неправильным.

  • Сервер не поддерживает эту команду.

    Значение

    - 5024

    Описание

    Сервер не поддерживает эту команду.

  • Входные параметры указывают на неправильный тип объекта.

    Значение

    - 5025

    Описание

    Входные параметры указывают на неправильный тип объекта.

  • Сервер не может открыть другое ветвление.

    Значение

    - 5026

    Описание

    Сервер не может открыть другое ветвление.

  • Сервер закрывается.

    Значение

    - 5027

    Описание

    Сервер закрывается.

  • Попытка была предпринята для переименования объема или корневого каталога.

    Значение

    - 5028

    Описание

    Попытка была предпринята для переименования объема или корневого каталога.

  • Входные параметры не указывают на существующий каталог.

    Значение

    - 5029

    Описание

    Входные параметры не указывают на существующий каталог.

  • Размер нового значка отличается от размера существующего значка.

    Значение

    - 5030

    Описание

    Размер нового значка отличается от размера существующего значка.

  • Объем Только для чтения.

    Значение

    - 5031

    Описание

    Объем Только для чтения.

  • Значение

    - 5032

    Описание

    Файлом или каталогом является отмеченный DeleteInhibit; каталогом, перемещаемым, переименованным, или перемещенным и переименованным, является отмеченный RenameInhibit; файлом, перемещаемым и переименованным, является отмеченный RenameInhibit; была предпринята попытка для открытия файла для записи, которая является отмеченным WriteInhibit; была предпринята попытка для переименования файла или каталога, который является отмеченным RenameInhibit.

  • Каталог содержит точку доли.

    Значение

    - 5033

    Описание

    Каталог содержит точку доли.

  • Идентификатор файла не был найден. (Никакой поток файла не существует.)

    Значение

    - 5034

    Описание

    Идентификатор файла не был найден. (Никакой поток файла не существует.)

  • Файл уже имеет Идентификатор файла.

    Значение

    - 5035

    Описание

    Файл уже имеет Идентификатор файла.

  • Неправильный объем.

    Значение

    - 5036

    Описание

    Неправильный объем.

  • Каталог изменился.

    Значение

    - 5037

    Описание

    Каталог изменился.

  • Два объекта, которые должны отличаться, являются тем же объектом.

    Значение

    - 5038

    Описание

    Два объекта, которые должны отличаться, являются тем же объектом.

  • Идентификатор файла не допустим.

    Значение

    - 5039

    Описание

    Идентификатор файла не допустим.

  • Пользователь попытался изменить его или ее пароль на тот же в настоящее время устанавливающийся пароль.

    Значение

    - 5040

    Описание

    Пользователь попытался изменить его или ее пароль на тот же в настоящее время устанавливающийся пароль.

  • Пароль пользователя короче, чем минимальная длина пароля сервера, или пользователь попытался изменить пароль на пароль, который короче, чем минимальная длина пароля сервера.

    Значение

    - 5041

    Описание

    Пароль пользователя короче, чем минимальная длина пароля сервера, или пользователь попытался изменить пароль на пароль, который короче, чем минимальная длина пароля сервера.

  • Пароль пользователя истек.

    Значение

    - 5042

    Описание

    Пароль пользователя истек.

  • Перемещаемый каталог содержит точку доли и перемещается в каталог, который совместно используется или является потомком совместно использующегося каталога.

    Значение

    - 5043

    Описание

    Перемещаемый каталог содержит точку доли и перемещается в каталог, который совместно используется или является потомком совместно использующегося каталога.

  • Общий каталог перемещается в Мусор; каталог перемещается в мусор, и это содержит совместно используемую папку.

    Значение

    - 5044

    Описание

    Общий каталог перемещается в Мусор; каталог перемещается в мусор, и это содержит совместно используемую папку.

  • Пароль пользователя должен быть изменен.

    Значение

    - 5045

    Описание

    Пароль пользователя должен быть изменен.

  • Новый пароль не соответствует политике паролей сервера.

    Значение

    - 5046

    Описание

    Новый пароль не соответствует политике паролей сервера.

  • Выделенное дисковое пространство превышено.

    Значение

    - 5047

    Описание

    Выделенное дисковое пространство превышено.