Этот документ описывает команды Apple Filing Protocol (AFP), типы данных и константы, которые могут использоваться для передачи с файловым сервером AFP. AFP позволяет пользователям многократных компьютеров совместно использовать файлы легко и эффективно по сети.
В этой ссылке на протокол, ссылках на a string тип указывает строку Паскаля. Первый байт строки Паскаля указывает длину строки (0-255) и сопровождается максимум на 255 байтов текста. Строки Паскаля не завершаются нулем.
Дополнительные сведения, вместе с полным списком различий между различными версиями протокола AFP см. в сопутствующем руководстве по программированию.
Путь к файлу или каталогу, для которого запрашивается доступ. Pathname строка, если она содержит Короткие или Длинные Имена или AFPName, если она содержит путь UTF-8–encoded. Посмотрите раздел Character Encoding Понятий файлового протокола Apple в Руководстве по программированию файлового протокола Apple для дополнительных подробных данных о UTF-8 кодирование используемого AFP.
Result
kFPNoErr если предоставляется доступ. Посмотрите Таблицу 2 для других возможных кодов результата.
Обсуждение
Запрос отправлен к серверу, определяющему, предоставить ли доступ.
Путь к приложению, соответствующему добавляемому отображению 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 команда.
Путь к файлу или каталогу, с которым должен быть связан комментарий. Pathname строка, если она содержит Короткие или Длинные Имена или AFPName, если она содержит путь UTF-8–encoded. Посмотрите раздел Character Encoding Понятий файлового протокола Apple в Руководстве по программированию файлового протокола Apple для дополнительных подробных данных о UTF-8 кодирование используемого AFP.
Comment
Данные комментария, которые будут связаны с указанным файлом или каталогом.
Result
kFPNoErr если не произошла никакая ошибка. Посмотрите Таблицу 3 для других возможных кодов результата.
ReplyBlock
Ни один.
Обсуждение
Эта команда хранит данные комментария в базе данных Desktop и связывает комментарий с указанным файлом или каталогом. Если комментарий более длинен, чем 199 байтов, комментарий является усеченным к 199 байтам, не возвращая ошибку.
Добавить комментарий к каталогу, который не пуст, пользовательский доступ поиска потребностей ко всем наследователям включая родительский каталог каталога, а также доступ для записи к родительскому каталогу. Для добавления комментария к пустому каталогу пользователю нужен поисковый или доступ для записи ко всем наследователям кроме родительского каталога каталога, а также доступ для записи к родительскому каталогу.
Добавить комментарий к файлу, который не пуст, пользовательский доступ поиска потребностей ко всем наследователям кроме родительского каталога файла, а также доступ для чтения и доступ для записи к родительскому каталогу. Для добавления комментария к пустому файлу пользователю нужен поисковый или доступ для записи ко всем наследователям кроме родительского каталога файлов, а также доступ для записи к родительскому каталогу.
Пользователь, должно быть, ранее вызвал FPOpenDT для соответствующего объема. Кроме того, указанный файл или каталог должен присутствовать в указанном каталоге, прежде чем будет отправлена эта команда.
Таблица 3 перечисляет коды результата для FPAddComment команда.
Создатель файла связался со значком, который должен быть добавлен.
FileType
Тип файла связался со значком, который должен быть добавлен.
IconType
Тип значка, который должен быть добавлен.
Pad
Байт клавиатуры.
IconTag
Данные меток, которые будут сохранены значком.
BitmapSize
Размер битового массива для этого значка.
Result
kFPNoErr если никакая ошибка не произошла, kFPParamErr если путь недопустим, если ссылочный номер сеанса или Настольное число ссылки на базу данных неизвестны или kFPIconTypeError если размер нового значка отличается от размера существующего значка, или kFPMiscErr если ошибка произошла, который не является определенным для AFP.
ReplyBlock
Ни один.
Обсуждение
Эта команда добавляет значок для указанного создателя файла и типа значков к базе данных Desktop и связывает данные меток со значком. Если значок того же создателя файла и типа значков уже существует в базе данных, значок заменяется. Однако, если размер нового значка отличается от старого значка, сервер возвращает a kFPIconTypeError код результата.
Пользователь, должно быть, ранее вызвал FPOpenDT для соответствующего объема.
Рисунок 4 показывает блок запроса для FPAddIcon команда.
Блок рисунка 4Request для FPAddIcon команда
Доступность
Осуждаемый. Настольный Менеджер базы данных больше не существует в Mac OS v.10.6 и позже.
Бит 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 команда
Ссылочный номер сеанса или открытый ссылочный номер ветвления неизвестны; комбинация StartEndFlag укусила, и Смещение указывает диапазон, запускающийся перед нулем байта.
Бит 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 команда
Открытый ссылочный номер ветвления неизвестен; комбинация StartEndFlag укусила, и параметры Смещения указывает диапазон, запускающийся перед нулем байта.
Максимальное количество соответствий для возврата.
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 показывает параметры, которые может искать эта команда, когда это ищет каталоги только.
Рисунок 7ParametersFPCatSearch поиски при поиске каталогов только
Рисунок 8 показывает параметры, которые может искать эта команда, когда это ищет файлы только.
Рисунок 8ParametersFPCatSearch поиски при поиске файлов только
Рисунок 9 показывает параметры, которые может искать эта команда, когда это ищет и каталоги и файлы.
Рисунок 9ParametersFPCatSearch поиски при поиске каталогов и файлов
Прежде, чем отправить эту команду, пользователь должен вызвать FPOpenVol для объема, который должен искаться.
Для возврата всех файлов и каталогов, соответствующих указанные критерии пользователь должен иметь Только для чтения или полномочия Рида и Записи для всех каталогов. Эта команда пропускает каталоги, для которых пользователь не имеет Только для чтения или полномочия Рида и Записи.
Таблица 6 перечисляет коды результата для FPCatSearch команда.
Ссылочный номер сеанса, Объем 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 команда
Максимальное количество соответствий для возврата.
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 показывает параметры, которые может искать эта команда, когда это ищет каталоги только.
Рисунок 11ParametersFPCatSearchExt поиски при поиске каталогов только
Рисунок 8 показывает параметры, которые может искать эта команда, когда это ищет файлы только.
Рисунок 12ParametersFPCatSearchExt поиски при поиске файлов только
Рисунок 9 показывает параметры, которые может искать эта команда, когда это ищет и каталоги и файлы.
Рисунок 13ParametersFPCatSearchExt поиски при поиске каталогов и файлов
Прежде, чем отправить эту команду, пользователь должен вызвать FPOpenVol для объема, который должен искаться.
Для возврата всех файлов и каталогов, соответствующих указанные критерии пользователь должен иметь Только для чтения или полномочия Рида и Записи для всех каталогов. Эта команда пропускает каталоги, для которых пользователь не имеет Только для чтения или полномочия Рида и Записи.
Таблица 8 перечисляет коды результата для FPCatSearchExt команда.
Таблица 8Result кодирует для FPCatSearchExt команда
Ссылочный номер сеанса, Объем 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 команда
В блоке ответа, StructLength длина Parameters блок после него, не включая StructLength поле, FileDir байт битового поля или байт клавиатуры (если применимо). Таким образом, для нахождения запуска следующего набора результатов займите текущую позицию (прежде чем StructLen) и добавьте StructLen, добавить 2 (для structLen само поле), добавляют 2 (для FileDir байт и Pad байт).
Имя пользователя, пароль которого должен быть изменен. Начиная с AFP 3.0, UserName два байта с каждым обнуленным байтом. Первый байт указывает строку нулевой длины, и второй байт является байтом клавиатуры.
UserAuthInfo
UAM-специфичная информация.
Result
kFPNoErr если не произошла никакая ошибка. Посмотрите Таблицу 10 для других возможных кодов результата.
Если 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 если никакая ошибка не произошла, kFPParamErr если ссылочный номер сеанса, Объем ID или Каталог ID неизвестен, или kFPMiscErr если ошибка произошла, который не является определенным для AFP.
ReplyBlock
Ни один.
Обсуждение
Эта команда лишает законной силы Каталог ID, указанный DirectoryID.
Эта команда должна использоваться только для переменного Каталога объемы ID. Пользователь, должно быть, ранее вызвал FPOpenVol для этого объема и FPOpenDir для этого каталога.
Рисунок 16 показывает блок запроса для FPCloseDir команда.
Блок рисунка 16Request для FPCloseDir команда
Доступность
Осуждаемый. Это не используется клиентом OS X, потому что больше не поддерживаются переменные объемы каталога ID. Когда каталог удален, каталог IDs, как предполагается, уникален и не снова используется.
kFPNoErr если никакая ошибка не произошла, kFPParamErr если ссылочный номер сеанса или Настольное число ссылки на базу данных неизвестны, или kFPMiscErr если ошибка произошла, который не является определенным для AFP.
ReplyBlock
Ни один.
Обсуждение
Эта команда лишает законной силы Настольное число ссылки на базу данных, указанное DTRefNum.
Пользователь, должно быть, сначала отправил успешное FPOpenDT команда.
Рисунок 17 показывает блок запроса для FPCloseDT команда.
Блок рисунка 17Request для FPCloseDT команда
Доступность
Осуждаемый. Настольный Менеджер базы данных больше не существует в Mac OS v.10.6 и позже.
kFPNoErr если никакая ошибка не произошла, kFPParamErr если ссылочный номер сеанса или открытый ссылочный номер ветвления неизвестны, или kFPMiscErr если ошибка произошла, который не является определенным для AFP.
ReplyBlock
Ни один.
Обсуждение
Эта команда заставляет сервер сбрасывать и закрывать указанное ветвление, лишая законной силы открытый ссылочный номер ветвления. Если ветвление было записано в, дата модификации файла назначена к часам сервера.
Пользователь, должно быть, сначала отправил успешное FPOpenFork команда.
Рисунок 18 показывает блок запроса для FPCloseFork команда.
kFPNoErr если никакая ошибка не произошла, kFPParamErr если ссылочный номер сеанса или Объем ID неизвестны, или kFPMiscErr если ошибка произошла, который не является определенным для AFP.
ReplyBlock
Ни один.
Обсуждение
Эта команда лишает законной силы указанный Объем ID, но не обязательно закрывает все открытые файлы на объеме прежде, чем закрыть объем, таким образом, необходимо закрыть все открытые файлы прежде, чем вызвать FPCloseVol.
Пользователь, должно быть, сначала отправил успешное FPOpenVol команда для этого объема.
После отправки этой команды пользователь не может отправить никакие другие команды за этим объемом, не открывая объем снова.
Рисунок 19 показывает блок запроса для FPCloseVol команда.
Путь файла, который будет скопирован (не может быть нуль). SourcePathname строка, если она содержит Короткие или Длинные Имена или AFPName, если она содержит путь UTF-8–encoded.
Путь к целевому родительскому каталогу (может быть нуль). DestPathname строка, если она содержит Короткие или Длинные Имена или AFPName, если она содержит путь UTF-8–encoded.
kFPNoErr если не произошла никакая ошибка. Посмотрите Таблицу 11 для других возможных кодов результата.
ReplyBlock
Ни один.
Обсуждение
Эта команда копирует файл в новое расположение на сервере. Источник и место назначения могут быть на том же или на различных объемах.
Сервер пытается открыть исходный файл для Чтения, доступа DenyWrite. Если это перестало работать, возвраты сервера kFPDenyConflict как код результата. Если сервер успешно открывает файл, он копирует файл в каталог, указанный целевыми параметрами.
Копии дают имя, указанное NewName параметр. Если NewName нуль, сервер дает копии то же имя как оригинал. Другое имя файла (Длинный, Короткий) сгенерировано, как описано в разделе «Catalog Node Names» в Главе 1. Уникальный номер документа присваивается файлу. Сервер также устанавливает Родителя файла ID в Каталог ID целевого родительского каталога. Все другие параметры файла остаются тем же как параметрами исходного файла. Дата модификации целевого родительского каталога назначена к блокировке сервера.
У пользователя должен быть поисковый доступ ко всем наследователям исходного файла, кроме исходного родительского каталога и доступа для чтения к исходному родительскому каталогу. Далее, у пользователя должен быть поисковый или доступ для записи ко всем наследователям целевого файла, кроме целевого родительского каталога и доступа для записи к целевому родительскому каталогу.
Эта команда является дополнительной и не может поддерживаться всеми серверами.
Путь, включая имя нового каталога (не может быть нуль). 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 команда.
Путь, включая имя нового файла (не может быть нуль). 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 команда
Имя файла, который является целью Идентификатора файла (т.е. имя файла файла, для которого Идентификатор файла создается). Pathname строка, если она содержит Короткие или Длинные Имена или AFPName, если она содержит путь UTF-8–encoded. Посмотрите раздел Character Encoding Понятий файлового протокола Apple в Руководстве по программированию файлового протокола Apple для дополнительных подробных данных о UTF-8 кодирование используемого AFP.
Result
kFPNoErr если не произошла никакая ошибка. Посмотрите Таблицу 14 для других возможных кодов результата.
ReplyBlock
Ни один.
Обсуждение
Даже если его имя или расположение изменяются, идентификаторы файла обеспечивают способ отслеживать файл. Объем Идентификатора файла ограничивается файлами на объеме. Идентификаторы файла не могут использоваться через объемы.
Сервер AFP должен предпринять шаги, чтобы гарантировать, что каждый Идентификатор файла уникален и что никакой Идентификатор файла не снова используется, как только это было удалено.
У пользователя должны быть Только для чтения или полномочие Чтения и Записи использовать эту команду.
Таблица 14 перечисляет коды результата для FPCreateID команда.
Путь файла или каталога, который будет удален (может быть нуль, если каталог должен быть удален). Pathnameстрока, если она содержит Короткие или Длинные Имена или AFPName, если она содержит путь UTF-8–encoded. Посмотрите раздел Character Encoding Понятий файлового протокола Apple в Руководстве по программированию файлового протокола Apple для дополнительных подробных данных о UTF-8 кодирование используемого AFP.
Result
kFPNoErr если не произошла никакая ошибка. Посмотрите Таблицу 15 для других возможных кодов результата.
ReplyBlock
Ни один.
Обсуждение
При удалении каталога, проверки сервера, чтобы видеть, содержит ли это каких-либо потомков. Если каталог содержит потомков, сервер возвращает код результата kFPDirNotEmpty. Если файл, который должен быть удален, открыт каким-либо пользователем, сервер возвращает код результата kFPFileBusy. Дата модификации родительского каталога удаленного файла или каталога назначена к часам серверов.
У пользователя должен быть поисковый доступ ко всем наследователям кроме родительского каталога файла или каталога, а также доступ для записи к родительскому каталогу. Если каталог удаляется, у пользователя должен также быть поисковый доступ к родительскому каталогу; для файла у пользователя должен также быть доступ для чтения к родительскому каталогу.
Сервер AFP идентифицирует Сетевую Папку «Удаленные» по имени, и то имя не локализуется в международных версиях Mac OS, потому что это невидимо.
Таблица 15 перечисляет коды результата для FPDelete команда.
Рисунок 25 показывает блок запроса для FPDeleteID команда.
Блок рисунка 25Request для FPDeleteID команда
Доступность
Осуждаемый. Не используемый OS X клиент AFP. Клиенты AFP OS X предполагают, что все файлы и каталоги присвоили IDs, который уникален и не снова используется, когда удален элемент.
kFPNoErr если никакая ошибка не произошла, kFPCallNotSupported если сервер не поддерживает эту команду, или kFPMiscErr если ошибка произошла, который не является определенным для AFP.
ReplyBlock
Ни один.
Обсуждение
Эта команда разъединяет сеанс, идентифицированный Маркерным параметром, полученным путем предыдущего вызова FPGetSessionToken и передает ресурсы старого сеанса к новому сеансу.
Клиент AFP вызывает эту команду, когда сеанс, который она ранее установила, был непреднамеренно разъединен, она успешно устанавливает новый сеанс, и она в состоянии восстановить состояние предыдущего сеанса. Если клиент AFP не может успешно восстановить состояние предыдущего сеанса, оно должно вызвать эту команду, выйти из системы и сообщить об отказе локальной операционной системе.
Если клиент AFP успешно восстанавливает состояние предыдущего сеанса, оно должно вызвать эту команду снова для получения нового маркера сеанса.
Рисунок 26 показывает блок запроса для FPDisconnectOldSession команда.
Блок рисунка 26Request для FPDisconnectOldSession команда
Битовый массив, описывающий параметры, чтобы возвратиться, если перечислимый потомок является файлом. Установите бит, соответствующий каждому желаемому параметру. Этот битовый массив совпадает с FileBitmap параметр FPGetFileDirParms команда и может быть нулем. Для разрядных определений для этого битового массива посмотрите Битовый массив Файла и Каталога.
DirectoryBitmap
Битовый массив, описывающий параметры, чтобы возвратиться, если перечислимый потомок является каталогом. Установите бит, соответствующий каждому желаемому параметру. Этот битовый массив совпадает с DirectoryBitmap параметр FPGetFileDirParms команда и может быть нулем. Для разрядных определений для этого битового массива посмотрите Битовый массив Файла и Каталога.
ReqCount
Максимальное количество ResultsRecord структуры, для которых должна быть возвращена информация.
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 команда.
Попытка была предпринята для получения параметра, который не может быть получен этой командой, была предпринята попытка для получения Каталога ID для каталога на переменном Каталоге объем ID, или оба битовых массива пусты.
Ссылочный номер сеанса, Объем, 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 команда
Битовый массив, описывающий параметры, чтобы возвратиться, если перечислимый потомок является файлом. Установите бит, соответствующий каждому желаемому параметру. Этот битовый массив совпадает с FileBitmap параметр FPGetFileDirParms команда и может быть нулем. Для разрядных определений для этого битового массива посмотрите Битовый массив Файла и Каталога.
DirectoryBitmap
Битовый массив, описывающий параметры, чтобы возвратиться, если перечислимый потомок является каталогом. Установите бит, соответствующий каждому желаемому параметру. Этот битовый массив совпадает с DirectoryBitmap параметр FPGetFileDirParms команда и может быть нулем. Для разрядных определений для этого битового массива посмотрите Битовый массив Файла и Каталога.
ReqCount
Максимальное количество ResultsRecord структуры, для которых должна быть возвращена информация.
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 команда
Попытка была предпринята для получения параметра, который не может быть получен этой командой, была предпринята попытка для получения Каталога ID для каталога на переменном Каталоге объем ID, или оба битовых массива пусты.
Ссылочный номер сеанса, Объем, 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 команда
Битовый массив, описывающий параметры, чтобы возвратиться, если перечислимый потомок является файлом. Установите бит, соответствующий каждому желаемому параметру. Этот битовый массив совпадает с FileBitmap параметр FPGetFileDirParms команда и может быть нулем. Для разрядных определений для этого битового массива посмотрите Битовый массив Файла и Каталога.
DirectoryBitmap
Битовый массив, описывающий параметры, чтобы возвратиться, если перечислимый потомок является каталогом. Установите бит, соответствующий каждому желаемому параметру. Этот битовый массив совпадает с DirectoryBitmap параметр FPGetFileDirParms команда и может быть нулем. Для разрядных определений для этого битового массива посмотрите Битовый массив Файла и Каталога.
ReqCount
Максимальное количество ResultsRecord структуры, для которых должна быть возвращена информация.
kFPNoErr если не произошла никакая ошибка. Посмотрите Таблицу 21 для других возможных кодов результата.
ReplyBlock
Если код результата kFPNoErr, сервер возвращает блок ответа. Посмотрите Таблицу 22 для формата блока ответа.
Обсуждение
Эта команда перечисляет каталог, как указано входными параметрами. Эта команда отличается от FPEnumerateExt команда в этом StartIndex и MaxReplySizeint32_t значения вместо int16_t, таким образом позволяя этой команде перечислить больше записей в единственном каталоге. Блок ответа для этой команды совпадает с блоком ответа для FPEnumerateExt команда.
Если FileBitmap является нулевым, только потомки каталога перечисляются, и StartIndex может колебаться от одного до общего количества потомков каталога. Точно так же, если DirectoryBitmap является нулевым, только потомки файла перечисляются, и StartIndex может колебаться от одного до общего количества потомков файла. Если обоим битовым массивам установили биты, StartIndex может колебаться от одного до общего количества потомков. В этом случае структуры потомков и для файлов и для каталогов возвращаются. Эти структуры не возвращаются ни в каком определенном порядке.
Эта команда завершается когда число структур, указанных ReqCount был вставлен в блок ответа, когда блок ответа полон, или когда больше потомков не существует, чтобы быть перечисленным. Никакие частичные структуры потомков не возвращаются.
Сервер получает указанные параметры для каждого перечислимого потомка и упаковывает их, в растровом порядке, в структурах в блоке ответа. Сервер вставляет одну копию входных битовых массивов передо всеми структурами.
Сервер должен сохранить параметры переменной длины, такие как Длинное Имя и Краткое название, в конце каждой структуры. Чтобы сделать это, сервер представляет параметры переменной длины в растровом порядке, поскольку фиксированная длина смещает (целые числа). Каждое смещение измеряется от запуска параметров в каждой структуре (не от запуска битового массива или запуска байтов заголовка) к запуску параметра переменной длины. Каждая структура будет дополнена (снабженная суффиксом) нулевой байт при необходимости для создания его длины даже.
Если kFPNoErr возвращается, все структуры в блоке ответа допустимы. Если какой-либо ошибочный код результата возвращается, никакие допустимые структуры потомков не существуют в блоке ответа.
Если бит количества Offspring в битовом массиве каталога установлен, сервер корректирует количество Offspring каждого каталога для отражения, какие права доступа пользователь имеет к тому каталогу. Например, если определенный каталог будет содержать три файла и двух потомков каталога, то сервер возвратит свое количество Потомков как 2, если у пользователя будет только поисковый доступ к каталогу, 3, если у пользователя есть только доступ для чтения к каталогу, или 5, если у пользователя есть и поисковый и доступ для чтения к каталогу.
У пользователя должен быть поисковый доступ ко всем наследователям кроме этого каталога. Кроме того, пользователю нужен поисковый доступ к этому каталогу для перечисления потомков каталога и доступа для чтения для перечисления потомков файла.
Перечисление большого каталога может потребовать отправки нескольких FPEnumerateExt2 команды. В течение того времени другие пользователи могут добавить к или удалить из каталога, таким образом, перечисление может скучать по потомкам или возвратить двойных потомков. Для перечисления каталога точно перечислите до a kFPObjectNotFound код результата возвращается, и затем отфильтруйте двойные записи.
Данный потомок, как гарантируют, не займет тот же индекс в родительском каталоге от одного перечисления до следующего.
Таблица 21 перечисляет коды результата для FPEnumerateExt2 команда.
Таблица 21Result кодирует для FPEnumerateExt2 команда
Попытка была предпринята для получения параметра, который не может быть получен этой командой, была предпринята попытка для получения Каталога ID для каталога на переменном Каталоге объем ID, или оба битовых массива пусты.
Ссылочный номер сеанса, Объем, 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 команда
Путь исходного файла. DestPathname строка, если она содержит Короткие или Длинные Имена или AFPName, если она содержит путь UTF-8–encoded.
Result
kFPNoErr если не произошла никакая ошибка. Посмотрите Таблицу 23 для других возможных кодов результата.
ReplyBlock
Ни один.
Обсуждение
Эта команда атомарно обменивается всеми метаданными файловой системы (имя файла, идентификатор файла, информация о безопасности, и т.д.) между двумя файлами. Рекомендуемый способ выполнить операцию "Save" или "Save as" на файле на сервере AFP состоит в том, чтобы записать новый файл, затем отправить FPExchangeFiles команда для обмена новым файлом с оригиналом.
Для использования этой команды оба файла должны существовать на том же объеме.
Файлы, которыми обмениваются, могут быть открыты или закрыты. Если файлы являются открытыми, существующими ссылками на любой файл, эффективно становятся ссылками на другой файл. Таким образом чтения и записи продолжают видеть те же данные как прежде, но fstat и подобные операции возвращают различные результаты.
Если Вы открываете любой файл после вызова FPExchangeFiles, с точки зрения Вашего приложения кажется, что содержание этих двух файлов было подкачано (хотя это не точно, что произошло).
Рисунок 30 показывает результаты валютной операции между двумя файлами под названием Синий и Красный цвет.
Рисунок 30Example обмена файлами
Заметьте, что только обмениваются именем файла, Родительский каталог ID, Идентификатор файла и даты создания. Блокировки диапазона байта и отклоняют режимы, все еще применяются к тому же числу ссылки на файл и данным.
У пользователя должно быть полномочие Чтения и Записи для обоих файлов для использования этой команды.
Таблица 23 перечисляет коды результата для FPExchangeFiles команда.
Таблица 23Result кодирует для FPExchangeFiles команда
kFPNoErr если никакая ошибка не произошла, kFPParamErr если ссылочный номер сеанса или Объем ID недопустимы, или kFPMiscErr если ошибка произошла, который не является определенным для AFP.
ReplyBlock
Ни один.
Обсуждение
Эта команда пишет в диск максимально максимально изменил информацию включая
все ветвления открылись пользователем
информация о каталоге объема изменилась пользователем
любые обновленные структуры данных объема
AFP не указывает, что сервер должен выполнить все эти функции. Поэтому пользователи не должны полагаться на сервер для выполнения любой определенной функции.
Дата модификации объема может измениться в результате этой команды, но использование не должно полагаться на него; обновление даты является зависящим от реализации. Если никакая информация об объеме не была изменена начиная с последнего FPFlush команда, дата может или может не измениться.
Заметьте, что только обмениваются именем файла, Родительский каталог ID, Идентификатор файла и даты создания. Блокировки диапазона байта и отклоняют режимы, все еще применяются к тому же числу ссылки на файл и данным.
У пользователя должно быть полномочие Чтения и Записи для обоих файлов для использования этой команды.
Рисунок 32 показывает блок запроса для FPFlush команда.
Записи любые данные буферизуются от предыдущих команд записи.
Объявление
Objective C
uint8_tCommandCodeuint8_tPadint16_tOForkRefNum
Параметры
CommandCode
kFPFlushFork (11).
Pad
Байт клавиатуры.
OForkRefNum
Открытый ссылочный номер ветвления.
Result
kFPNoErr если никакая ошибка не произошла, kFPParamErr если ссылочный номер сеанса или Объем ID недопустимы, или kFPMiscErr если ошибка произошла, который не является определенным для AFP.
ReplyBlock
Ни один.
Обсуждение
Эта команда пишет в диск любые данные, буферизованные сервером предыдущими командами записи. Если ветвление было изменено, набор сервера дата модификации файла к часам сервера.
Для оптимизации доступа к диску сервер может буферизовать команды записи, сделанные к определенному ветвлению файла. В ограничениях производительности сервер сбрасывает каждое ветвление как можно скорее. Путем отправки этой команды клиент AFP может вынудить сервер записать любые буферизированные данные.
Рисунок 33 показывает блок запроса для FPFlushFork команда.
Биты, указывающие значения, которые должны быть получены. Указать kFileSec_UUID получить UUID указанного файла или каталога. Указать kFileSec_GRPUUID получить Группу UUID указанного файла или каталога. Указать kFileSec_ACL получить ACL указанного файла или каталога. Для объявлений этих констант посмотрите Битовый массив Списка управления доступом.
Путь файла или каталога, для которого должен быть получен список управления доступом (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 файла или каталога появляется затем в пакете.
Таблица 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 команда
Создатель файла приложения, соответствующего 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 команда
Путь домена 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 команда
kFPNoErr если не произошла никакая ошибка. Посмотрите Таблицу 28 для других возможных кодов результата.
ReplyBlock
Если код результата kFPNoErr, сервер возвращает блок ответа. Блок ответа состоит из строки, вызванной Comment, содержа текст комментария.
Обсуждение
Комментарий для указанного файла или каталога, если это найдено в базе данных Desktop объема, возвращается в блоке ответа.
Если комментарий связан с каталогом, у пользователя должен быть поисковый доступ ко всем наследователям, включая родительский каталог. Если комментарий связан с файлом, у пользователя должен быть поисковый доступ ко всем наследователям кроме родительского каталога и доступа для чтения к родительскому каталогу.
Пользователь, должно быть, ранее вызвал FPOpenDT для соответствующего объема. Кроме того, файл или каталог должен существовать, прежде чем эта команда отправляется.
Таблица 28 перечисляет коды результата для FPGetComment команда.
Таблица 28Result кодирует для FPGetComment команда
Битовый массив, указывающий желаемое поведение при получении значения расширенного атрибута. Для этой команды, только kAttrDontFollow допустимо. Для получения дополнительной информации посмотрите “Extended Attributes Bitmap” для подробных данных.
Offset
Всегда нуль; зарезервированный для будущего использования.
ReqCount
Всегда –1; зарезервированный для будущего использования.
MaxReplySize
Размер в байтах ответа, который может обработать Ваше приложение; обнуленный для получения размера ответа, фактически не получая атрибуты.
Путь к желаемому файлу или каталогу. 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 также требуется для поддержки расширенных атрибутов.
Битовый массив, описывающий параметры для возврата для файла. Установите бит, соответствующий каждому желаемому параметру. Для разрядных определений этого битового массива посмотрите Битовый массив Файла и Каталога.
DirectoryBitmap
Битовый массив, описывающий параметры для возврата для каталога. Установите бит, соответствующий каждому желаемому параметру. Для разрядных определений этого битового массива посмотрите Битовый массив Файла и Каталога.
kFPNoErr если не произошла никакая ошибка. Посмотрите Таблицу 31 для других возможных кодов результата.
ReplyBlock
Если код результата kFPNoErr, сервер возвращает блок ответа. Посмотрите Таблицу 32 для формата блока ответа.
Обсуждение
Сервер упаковывает требуемые параметры в блоке ответа в порядке, указанном надлежащим битовым массивом. FileDir бит указывает, являются ли параметры для файла или каталога. Копия входных битовых массивов вставляется перед параметрами.
Параметры переменной длины, такие как Длинное Имя и Краткое название, сохранены в конце блока. Чтобы сделать это, сервер представляет параметры переменной длины в растровом порядке, поскольку фиксированная длина смещает (целые числа). Каждое смещение измеряется от запуска параметров (не от запуска битового массива) к запуску параметра переменной длины. Фактические параметры переменной длины тогда упаковываются после всех параметров фиксированной длины.
Если CNode существует, и оба битовых массива являются нулем, никакая ошибка не возвращается; FileBitmap, DirectoryBitmap, и байт, содержащий FileDir бит возвращается без других параметров.
Если права доступа каталога требуют, сервер возвращает параметр Прав доступа (четырехбайтовое количество) содержащий чтение, запишите и ищите права доступа, соответствующие владельцу, группе, и всем, а также Пользовательскому Сводному байту Прав доступа, указывающему полномочия, которые текущий пользователь клиента AFP имеет к этому каталогу. Для разрядных определений параметра Прав доступа посмотрите Битовый массив Прав доступа.
Если бит количества Offspring DirectoryBitmap параметр устанавливается, сервер скорректирует количество Offspring для отражения прав доступа, которые пользователь имеет к тому каталогу. Например, если определенный каталог будет содержать три файла и двух потомков каталога, то сервер возвратит свое количество Потомков как два, если у пользователя будет только поисковый доступ к каталогу, три, если у пользователя есть только доступ для чтения к каталогу, или пять, если у пользователя есть и поисковый и доступ для чтения к каталогу.
Рисунок 39 показывает файл и битовые массивы каталога, параметры Атрибутов Файла и Каталога и Права доступа для каталогов.
Рисунок 39Bitmaps, Атрибуты и Права доступа, возвращенные FPGetFileDirParms
У пользователя должен быть поисковый доступ ко всем наследователям кроме родительского каталога этого CNODE. Для каталогов пользователь также должен искать доступ к родительскому каталогу. Для файлов пользователю нужен доступ для чтения к родительскому каталогу.
Большинство атрибутов, которые требует эта команда, сохранено в соответствующих флагах в Информационной записи Средства поиска CNODE.
Таблица 31 перечисляет коды результата для FPGetFileDirParms команда.
Таблица 31Result кодирует для FPGetFileDirParms команда
Битовый массив, описывающий параметры, которые будут возвращены. Установите биты, соответствующие каждому желаемому параметру. Этот битовый массив совпадает с 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 команда
Число байтов вызывающая сторона ожидает, что битовый массив значка потребует в блоке ответа.
Result
kFPNoErr если никакая ошибка не произошла, kFPParamErr если ссылочный номер сеанса или Настольное число ссылки на базу данных неизвестны, kFPItemNotFound если никакой значок, соответствующий входным параметрам, не был найден в базе данных Desktop, или kFPMiscErr если ошибка произошла, который не является определенным для AFP.
ReplyBlock
Если код результата kFPNoErr, сервер возвращает блок ответа. Блок ответа состоит из int16_t, содержащего требуемый битовый массив значка.
Обсуждение
Сервер получает битовый массив значка от базы данных Desktop, как указано FileCreator, FileType, и IconType параметры.
Ввод Length значение нуля приемлемо для тестирования на присутствие или отсутствие определенного значка. Если Length меньше, чем фактический размер битового массива значка, только Length байты возвращаются.
Пользователь, должно быть, ранее вызвал FPOpenDT для соответствующего объема.
Рисунок 42 показывает запрос и блоки ответа для FPGetIcon команда.
Рисунок 42Request и ответ блокируют для FPGetIcon команда
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 команда
Значение этого параметра 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 и потребности обновить маркер.
Определенное клиентами значение, однозначно определяющее этот сеанс.
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 команда
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
AFPVersionsCount и UAMCount параметры являются каждым байтом, содержащим число AFP и строк версии UAM, следующих со строками, упакованными идущий подряд без дополнения. Для версий AFP, поддерживаемых этой версией AFP, посмотрите “AFP Version Strings”. Для UAMs, поддерживаемого этой версией AFP, посмотрите “AFP UAM Strings”.
Дополнительное ServerSignature параметр содержит уникальный идентификатор для сервера. Клиент AFP должен использовать подпись сервера, чтобы гарантировать, что она не входит в систему того же сервера многократно. Когда сервер сконфигурирован для размещения в разных сетях, при предотвращении многократного журнала ins важен.
NetworkAddresses параметр содержит адреса, которые клиент может использовать для соединения с сервером. Каждый адрес сохранен как Сетевой адрес AFP. Формат Сетевого адреса AFP показан на рисунке 46.
Формат Сетевого адреса рисунка 46AFP
Каждый Сетевой адрес 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 смещение
Смещение к расположению в блоке ответа, содержащем число Имен каталогов.
Строка, содержащая описание аппаратных средств сервера, операционной системы или обоих. Эта строка Паскаля (до 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, это помещает свое основное имя в эту строку.
Тип сообщения, были 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 команда
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 команда
Если самый низкий бит (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 команда
Пароль пользователя истек. Пользователь обязан изменять его или ее пароль. Пользователь зарегистрирован, но может только изменить его или ее пароль или выйти из системы.
Пароль пользователя должен быть изменен. Пользователь обязан изменять его или ее пароль. Пользователь зарегистрирован, но может только изменить его или ее пароль или выйти из системы.
Если эта команда возвращает код результата kFPPwdExpiredErr или kFPPwdNeedsChangeErr, клиент AFP должен вывести на экран объяснительное диалоговое окно и позволить пользователю изменять его или ее пароль.
Таблица 41 описывает блок ответа для FPGetUserInfo команда.
Блок Table 41Reply для FPGetUserInfo команда
Имя и размер
Данные
Bitmap (int16_t)
Копия входного параметра.
UserInfo
Запрошенная информация, упакованная в растровом порядке, начинаясь с самого низкого набора битов. Например, если UID и биты UUID установлены в битовом массиве ответа, то UID является первым в ответе, сопровождаемом UUID.
Рисунок 50 показывает запрос и блоки ответа для FPGetUserInfo команда.
Рисунок 50Request и ответ блокируют для FPGetUserInfo команда
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 команда
Битовый массив, описывающий желаемое поведение при получении имен расширенных атрибутов. Для этой команды kAttrDontFollow единственный допустимый бит. Для получения дополнительной информации посмотрите “Extended Attributes Bitmap”.
ReqCount
Зарезервированный для будущего использования. Для AFP 3.2, набора ReqCount обнулять. Серверы должны проигнорировать этот параметр.
StartIndex
Зарезервированный для будущего использования. Для AFP 3.2, набора StartIndex обнулять. Серверы должны проигнорировать этот параметр.
MaxReplySize
Максимальный размер блока ответа, включая размер Bitmap и DataLength параметры. Если MaxReplySize нуль, сервер должен возвратиться Bitmap и набор DataLength к размеру блока ответа (список расширенных названий атрибута), который был бы возвращен, фактически не отправляя имена расширенных атрибутов.
Таблица 44 описывает блок ответа для FPListExtAttrs команда.
Блок Table 44Reply для FPListExtAttrs команда
Имя и размер
Данные
Bitmap (int16_t)
Зарезервированный.
DataLength (uint32_t)
Длина следующих данных. Если MaxReplySize был обнулен, DataLength установлен в размер списка расширенных названий атрибута, которые были бы иначе возвращены.
Строка, указывающая, который версия 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 команда.
Сервер не может обработать дополнительные соединения.
После входа в систему клиент AFP должен сразу вызвать FPGetUserInfo видеть, истек ли пароль пользователя.
Таблица 46 описывает блок ответа для FPLoginкоманда.
Блок Table 46Reply для FPLogin команда
Имя и размер
Данные
ID (int16_t)
ID, возвращенный определенным UAMs, который будет передан FPLoginCont команда. (Допустимый только, когда kFPAuthContinue возвращается как код результата.)
UserAuthInfo
Значение, возвращенное определенным UAMs. (Допустимый только, когда kFPAuthContinue возвращается как код результата.)
Рисунок 53 показывает запрос и блоки ответа для FPLogin команда.
Рисунок 53Request и ответ блокируют для FPLogin команда
Продолжает процесс входа в систему и аутентификации пользователя, запущенный командой входа в систему.
Объявление
Objective C
uint8_tCommandCodeuint8_tPadint16_tIDUserAuthInfo
Параметры
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 команда.
Сервер не может обработать дополнительные соединения.
Таблица 48 описывает блок ответа для FPLoginCont команда.
Блок Table 48Reply для FPLoginCont команда
Имя и размер
Данные
ID (int16_t)
ID, возвращенный определенным UAMs, который будет передан FPLoginCont команда. (Допустимый, только если kFPAuthContinue возвращается как код результата.)
UserAuthInfo
Значение, возвращенное определенным UAMs. (Допустимый, только если kFPAuthContinue или kFPNoErr возвращается как код результата.)
Рисунок 54 показывает запрос и блоки ответа для FPLoginCont команда.
Рисунок 54Request и ответ блокируют для FPLoginCont команда
Путь тот, для домена Open Directory, в который пользователь, указанный UserName может быть найден. Pathname строка, если она содержит Короткие или Длинные Имена или AFPName, если она содержит путь UTF-8–encoded.
Pad
Байт клавиатуры, который может требоваться для Pathname закончиться на ровной границе.
UserAuthInfo
UAM-зависимая требуемая информация для аутентификации пользователя (может быть нуль). Тип данных UserAuthInfo зависит от UAM, указанного UAM.
Result
kFPNoErr если не произошла никакая ошибка. Посмотрите Таблицу 49 для других возможных кодов результата.
Эта команда устанавливает сеанс AFP с помощью указанного домена Open Directory, в котором может быть найдена информация о пользователе. Прежде, чем отправить эту команду, клиент AFP должен вызвать FPGetAuthMethods получить UAMs, который поддерживает домен Open Directory. Из списка UAMs, возвращенного FPGetAuthMethods, клиент AFP выбирает самый безопасный UAM, что он поддерживает и обеспечивает его в UAM параметр FPLoginExt команда.
Если сервер возвращает какой-либо код результата кроме kFPAuthContinue или kFPNoErr, сеанс не был установлен.
Для более подробной информации о UAMs см. “Безопасность Файлового сервера” в разделе «Introduction».
Сервер AFP проводит подсчет, входят в систему попытки, который сбрасывается для обнуления после каждого успешного входа в систему. Поскольку каждое неработающее входит в систему попытка без предыдущего успешного журнала в, количество постепенно увеличивается. Когда максимальное количество неработающих входит в систему, попытки достигнуты, учетная запись пользователя отключена. Любые попытки войти в систему после учетной записи отключены результат в kFPParamErr указание, что пользователь неизвестен или что отключена его или ее учетная запись. Администратор должен включить учетную запись пользователя снова. AFP не уведомляет администратора, что была отключена учетная запись пользователя; пользователь должен уведомить администратора некоторыми другими средними значениями.
Таблица 49 перечисляет коды результата для FPLoginExt команда.
Сервер не может обработать дополнительные соединения.
Таблица 50 описывает блок ответа для FPLoginExt команда.
Блок Table 50Reply для FPLoginExt команда
Имя и размер
Данные
ID (int16_t)
ID, возвращенный определенным UAMs, который будет передан команде FPLoginCont. (Допустимый только, когда kFPAuthContinue возвращается как код результата.)
UserAuthInfo
Значение, возвращенное определенным UAMs, когда kFPAuthContinue возвращается как код результата.
Рисунок 55 показывает запрос и блоки ответа для FPLoginExt команда.
Рисунок 55Request и ответ блокируют для FPLoginExt команда
kFPNoErr если никакая ошибка не произошла, kFPParamErr если ссылочный номер сеанса неизвестен, или kFPMiscErr если ошибка произошла, который не является определенным для AFP.
ReplyBlock
Ни один.
Обсуждение
Эта команда завершает сеансы, установленные FPLoginи FPLoginExt. Сервер сбрасывает и закрывает любые ветвления, открытые сеансом, освобождает все связанные с сеансом ресурсы и лишает законной силы ссылочный номер сеанса.
Рисунок 56 показывает блок запроса для FPLogout команда.
Группа 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 символов.
Сервер получает пользователя, или название группы в этом соответствует указанному Идентификатору пользователя, Группа ID, UUID или GUID.
Subfunction параметр говорит серверу который база данных (пользователь или группа) искать сначала. Пользователь и группа, IDs прибывает из того же пула чисел, поэтому если ID был присвоен, FPMapID всегда возвращает пользователя или название группы. Подфункциональные коды описаны в Константах FPMapID.
Рисунок 57 показывает запрос и блоки ответа для FPMapID команда.
Рисунок 57Request и ответ блокируют для FPMapID команда
Имя, которое должно быть отображено на 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 команда
Путь файла или каталога, который будет перемещен (может быть нуль, если каталог перемещается). SourcePathname строка, если она содержит Короткие или Длинные Имена или AFPName, если она содержит путь UTF-8–encoded.
Путь файла или каталога, который будет перемещен (может быть нуль, если каталог перемещается). DestPathname строка, если она содержит Короткие или Длинные Имена или AFPName, если она содержит путь UTF-8–encoded.
Новое имя файла или каталога (может быть нуль). 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 не может быть перемещен от одного объема до другого с этой командой.
Перемещаемый каталог содержит sharepoint и перемещается в каталог, который совместно используется или является потомком совместно использующегося каталога.
Каталогом, перемещаемым, переименованным, или перемещенным и переименованным, является отмеченный RenameInhibit; файлом, перемещаемым и переименованным, является отмеченный RenameInhibit.
Путь файла или каталога, который будет перемещен (может быть нуль, если каталог перемещается). 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 команда.
Открывает базу данных Desktop по определенному объему.
Объявление
Objective C
uint8_tCommandCodeuint8_tPadint16_tVolumeID
Параметры
CommandCode
kFPOpenDT (48).
Pad
Байт клавиатуры.
VolumeID
Объем ID.
Result
kFPNoErr если никакая ошибка не произошла, kFPParamErr если ссылочный номер сеанса или VolumeID неизвестно, или kFPMiscErr если ошибка произошла, который не является определенным для AFP.
ReplyBlock
Если код результата kFPNoErr, сервер возвращает блок ответа. Блок ответа состоит из int16_t, вызванного DTRefNum, содержа Настольное число ссылки на базу данных.
Обсуждение
Сервер открывает базу данных Desktop по выбранному объему и возвращает Настольное число ссылки на базу данных, которое уникально среди таких ссылочных номеров. Настольное число ссылки на базу данных должно использоваться во всех последующих командах базы данных Desktop, касающихся этого объема.
Пользователь, должно быть, ранее вызвал FPOpenVol для этого объема.
Рисунок 61 показывает запрос и блоки ответа для FPOpenDT команда.
Рисунок 61Request и ответ блокируют для FPOpenDT команда
Бит 7 из Flag параметр ResourceDataFlag бит, и это указывает, какое ветвление открыться, где 0 указывает, ветвь данных и 1 указывает ветвь ресурсов.
VolumeID
Объем ID.
DirectoryID
Каталог наследователя ID.
Bitmap
Битовый массив, описывающий параметры ветвления, которые будут возвращены. Установите бит, соответствующий каждому желаемому параметру. Этот битовый массив совпадает с параметром FileBitmap FPGetFileDirParms команда и может быть нулем. Для разрядных определений для битового массива Файла посмотрите Битовый массив Файла и Каталога.
AccessMode
Желаемый доступ и отклоняет режимы, указанные любой комбинацией следующих битов:
0 = Читайте — позволяет ветвлению быть считанным.
1 = Запишите — позволяет ветвлению быть записанным.
4 = DenyRead — препятствует тому, чтобы другие читали ветвление, в то время как это открыто.
5 = DenyWrite — препятствует тому, чтобы другие писали ветвление, в то время как это открыто.
Путь к желаемому файлу (не может быть нуль). 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 команда.
Битовый массив, описывающий параметры, которые должны быть возвращены. Установите бит, соответствующий каждому желаемому параметру. Битовый массив совпадает с битовым массивом Объема, используемым FPGetVolParms команда и не может быть нулем. Для разрядных определений посмотрите Битовый массив Объема.
Возвраты kFPNoErr если не произошла никакая ошибка. Посмотрите Таблицу 55 для возможных кодов результата.
Если код результата kFPNoErr, сервер возвращает блок ответа. Посмотрите Таблицу 56 для формата блока ответа.
Обсуждение
Эта команда должна быть сделана, прежде чем любая другая команда может быть сделана получить доступ к CNodes на указанном объеме.
Если пароль требуется, чтобы получать доступ к объему, это отправляется как Password параметр в открытом тексте. Добавьте нулевые байты к паролю по мере необходимости для получения длины восьми байтов. Сравнение пароля чувствительно к регистру. Если предоставленный пароль не соответствует пароль, сохраненный объему, или если пароль не предоставляется, когда пароль требуется, сервер возвращает код результата kFPAccessDenied.
Если пароли соответствуют, или если объем не защищен паролем, пакеты сервера, требуемые параметры в ответе блокируют пользователя, могут теперь отправить команды, связанные с CNodes на объеме.
Bitmap параметр должен запросить, чтобы был возвращен Объем ID. Нет никакого другого способа получить Объем ID, требующийся большинством последующих команд, связанных с этим объемом.
Таблица 55 перечисляет коды результата для FPOpenVol команда.
Маска для определения, где должно завершиться чтение.
NewLineChar
Символ для определения, где должно завершиться чтение.
Result
kFPNoErr если не произошла никакая ошибка. Посмотрите Таблицу 57 для возможных кодов результата.
ReplyBlock
Если код результата kFPNoErr, сервер возвращает блок ответа, содержащий считанные данные.
Обсуждение
Эта команда получает указанный диапазон байтов от открытого ветвления. Вызвать FPOpenFork открыть ветвление. Сервер начинает читать в числе байта, указанном Offset параметр. Чтение остановок, когда одно из следующего происходите:
Сервер встречается с символом, указанным комбинацией NewLineMask и NewLineChar параметры
Сервер достигает конца ветвления
Сервер встречается с запуском диапазона, заблокированного другим пользователем
Сервер читает число байтов, указанных ReqCount параметр
Если сервер достигает конца ветвления или запуска заблокированного диапазона, это возвращает все чтение данных той точке и коду результата kFPEOFErr или kFPLockErr, соответственно.
NewLineMask параметр является маской байта, которая должна быть логически ANDed с копией каждого побайтового чтения. Если результат соответствует NewLineChar параметр, чтение завершается. Используя a NewLineMask значение нуля по существу отключает опцию проверки Новой строки.
Если пользователь читает байт, никогда не писавшийся в ветвление, результат не определен.
Заблокируйте диапазон, который будет считан прежде, чем отправить эту команду. Механизм базовой передачи может вынудить запрос быть поврежденным в многократные меньшие запросы. Если диапазон не заблокирован, когда эта команда начинает выполнение, для другого пользователя возможно заблокировать некоторых или весь диапазон, прежде чем эта команда завершится, заставляя чтение успешно выполниться частично.
Таблица 57 перечисляет коды результата для FPRead команда.
kFPNoErr если не произошла никакая ошибка. Посмотрите Таблицу 58 для возможных кодов результата.
ReplyBlock
Если код результата kFPNoErr, сервер возвращает блок ответа, содержащий считанные данные.
Обсуждение
Эта команда получает указанный диапазон байтов от открытого ветвления. Вызвать FPOpenFork открыть ветвление.
Эта команда отличается от FPRead команда в той этой команде подготовлена обработать большие значения, которые могут быть возвращены для файлов нахожение в объемах, больше, чем 4 ГБ в размере. Кроме того, эта команда не поддерживает NewlineMask и NewlineChar параметры это FPRead поддержки.
Сервер начинает читать в числе байта, указанном Offset параметр. Чтение остановок, когда одно из следующего происходите:
Сервер достигает конца ветвления
Сервер встречается с запуском диапазона, заблокированного другим пользователем
Сервер читает число байтов, указанных ReqCount параметр
Если сервер достигает конца ветвления или запуска заблокированного диапазона, это возвращает все чтение данных той точке и коду результата kFPEOFErr или kFPLockErr, соответственно.
Если пользователь читает байт, никогда не писавшийся в ветвление, результат не определен.
Заблокируйте диапазон, который будет считан прежде, чем отправить эту команду. Механизм базовой передачи может вынудить запрос быть поврежденным в многократные меньшие запросы. Если диапазон не заблокирован, когда эта команда начинает выполнение, для другого пользователя возможно заблокировать некоторых или весь диапазон, прежде чем эта команда завершится, заставляя чтение успешно выполниться частично.
Таблица 58 перечисляет коды результата для FPReadExt команда.
Путь к желаемому файлу (не может быть нуль). Pathname строка, если она содержит Короткие или Длинные Имена или AFPName, если она содержит путь UTF-8–encoded. Посмотрите раздел Character Encoding Понятий файлового протокола Apple в Руководстве по программированию файлового протокола Apple для дополнительных подробных данных о UTF-8 кодирование используемого AFP.
Result
kFPNoErr если не произошла никакая ошибка. Посмотрите Таблицу 59 для возможных кодов результата.
ReplyBlock
Ни один.
Обсуждение
Сервер определяет местоположение в базе данных Desktop отображения APPL, соответствующего указанному приложению и создателю файла. Если отображение APPL найдено, оно удалено.
У пользователя должен быть поисковый доступ ко всем наследователям, кроме родительского каталога, а также доступа для чтения и доступа для записи к родительскому каталогу.
Пользователь, должно быть, ранее вызвал FPOpenDT для соответствующего объема. Кроме того, файл должен существовать в указанном каталоге, прежде чем будет отправлена эта команда.
Таблица 59 перечисляет коды результата для FPRemoveAPPL команда.
Таблица 59Result кодирует для FPRemoveAPPL команда
Путь к CNode, комментарий которого удаляется (не может быть нуль). Pathname строка, если она содержит Короткие или Длинные Имена или AFPName, если она содержит путь UTF-8–encoded. Посмотрите раздел Character Encoding Понятий файлового протокола Apple в Руководстве по программированию файлового протокола Apple для дополнительных подробных данных о UTF-8 кодирование используемого AFP.
Result
kFPNoErr если не произошла никакая ошибка. Посмотрите Таблицу 60 для возможных кодов результата.
ReplyBlock
Ни один.
Обсуждение
Если комментарий связан с каталогом, который не пуст, у пользователя должен быть поисковый доступ ко всем наследователям, включая родительский каталог, плюс доступ для записи к родительскому каталогу. Если комментарий связан с пустым каталогом, у пользователя должен быть поисковый или доступ для записи ко всем наследователям, включая родительский каталог, плюс доступ для записи к родительскому каталогу.
Если комментарий связан с файлом, который не пуст, у пользователя должен быть поисковый доступ ко всем наследователям, кроме родительского каталога, плюс доступ для чтения и доступ для записи к родительскому каталогу. Если комментарий связан с пустым файлом, у пользователя должен быть поисковый или доступ для записи ко всем наследователям, кроме родительского каталога, плюс доступ для записи к родительскому каталогу.
Пользователь, должно быть, ранее вызвал FPOpenDT для соответствующего объема.
Таблица 60 перечисляет коды результата дляFPRemoveComment команда.
Таблица 60Result кодирует для FPRemoveComment команда
Битовый массив, указывающий желаемое поведение при удалении расширенного атрибута. Для этой команды, kAttrDontFollow единственный допустимый бит. Для получения дополнительной информации посмотрите “Extended Attributes Bitmap”.
Путь к CNode, имя которого изменяется (не может быть нуль). Pathname строка, если она содержит Короткие или Длинные Имена или AFPName, если она содержит путь UTF-8–encoded.
Путь к CNode, включая его новое имя (не может быть нуль). NewName строка, если она содержит Короткие или Длинные Имена или AFPName, если она содержит путь UTF-8–encoded.
Result
kFPNoErr если не произошла никакая ошибка. Посмотрите Таблицу 62 для возможных кодов результата.
ReplyBlock
Ни один.
Обсуждение
Сервер присваивает новое имя к файлу или каталогу. Другое имя (Длинный или Короткий) сгенерировано, как описано в разделе «Catalog Node Names» в Главе 1. Дата модификации родительского каталога назначена к часам сервера.
Для переименования каталога у пользователя должен быть поисковый доступ ко всем наследователям. включая родительский каталог CNODE, а также доступ для записи к родительскому каталогу. Для переименования файла у пользователя должен быть поисковый доступ ко всем наследователям, кроме родительского каталога CNODE, а также доступа для чтения и доступа для записи к родительскому каталогу.
Битовый массив, описывающий параметры для возврата. Установите бит, соответствующий каждому желаемому параметру. Этот битовый массив совпадает с FileBitmap параметр FPGetFileDirParms команда. Для разрядных определений для этого битового массива посмотрите Битовый массив Файла и Каталога.
Result
kFPNoErr если не произошла никакая ошибка. Посмотрите Таблицу 63 для возможных кодов результата.
ReplyBlock
Если код результата kFPNoErr, сервер возвращает блок ответа. Посмотрите Таблицу 64 для формата блока ответа.
Обсуждение
Параметры, возвращенные этой командой, могут быть любым параметром, указанным в FPGetFileDirParms команда.
У пользователя должны быть Только для чтения или полномочие Чтения и Записи использовать эту команду.
Таблица 63 перечисляет коды результата для FPResolveID команда.
Биты, указывающие значения, которые должны быть установлены. Указать 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 на элементе. Для объявлений этих констант посмотрите Битовый массив Списка управления доступом.
Путь домена 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 указанного файла или каталога.
Битовый массив, описывающий параметры для установки. Установите бит, соответствующий каждому желаемому параметру. Этот битовый массив совпадает с DirectoryBitmap параметр FPGetFileDirParms команда. Для разрядных определений для этого битового массива посмотрите Битовый массив Файла и Каталога.
Параметры, которые будут установлены, упакованные в растровом порядке.
Result
kFPNoErr если не произошла никакая ошибка. Посмотрите Таблицу 66 для возможных кодов результата.
ReplyBlock
Ни один.
Обсуждение
Это наборы команд или очищают определенные параметры и атрибуты, которые характерны и для файлов и для каталогов. Параметры являются Невидимыми атрибутами и Системными атрибутами, Датой создания, Датой Модификации, Резервной Датой, Информацией Средства поиска и полномочиями UNIX.
Параметры должны быть упакованы, в растровом порядке, в блоке запроса. Параметры переменной длины, такие как Длинное Имя и Краткое название, должны быть сохранены в конце блока. Чтобы сделать это, параметры переменной длины представлены в растровом порядке, поскольку фиксированная длина смещает (целые числа). Эти смещения измеряются от запуска параметров к запуску параметров переменной длины. Фактические параметры переменной длины тогда упаковываются после всех параметров фиксированной длины.
Изменение прав доступа каталога сразу влияет на другие открытые сеансы. Если у пользователя нет прав доступа для установки одного из параметров, a kFPAccessDenied код результата возвращается, и никакие параметры не устанавливаются.
Чтобы установить права доступа каталога, Владелец ID, Группа, ID, или изменить DeleteInhibit, RenameInhibit, WriteInhibit или Невидимые атрибуты, пользователь должен иметь поисковый или доступ для записи ко всем наследователям, включая родительский каталог этого каталога, и пользователь должен быть владельцем каталога. Для установки любого параметра кроме тех упомянутых выше для пустого каталога у пользователя должен быть поисковый или доступ для записи ко всем наследователям, кроме родительского каталога, а также доступа для записи к родительскому каталогу. Для установки любого параметра кроме тех упомянутых выше для каталога, который не пуст у пользователя должен быть поисковый доступ ко всем наследователям, включая родительский каталог, а также доступ для записи к родительскому каталогу.
Эта команда не может использоваться для определения имени каталога; вместо этого, используйте FPRename. Эта команда не может использоваться для установки Родительского каталога каталога ID; вместо этого, используйте FPMoveAndRename. Эта команда не может использоваться для установки Каталога каталога количество Потомков или ID.
Таблица 66 перечисляет коды результата для FPSetDirParms команда.
Таблица 66Result кодирует для FPSetDirParms команда
Битовый массив, указывающий желаемое поведение при установке значения расширенного атрибута. Для получения дополнительной информации посмотрите “Extended Attributes Bitmap” для подробных данных.
Offset
Всегда нуль; зарезервированный для будущего использования.
Битовый массив, описывающий параметры для установки. Установите бит, соответствующий каждому желаемому параметру. Этот битовый массив может совпасть с DirectoryBitmap или FileBitmap параметр FPGetFileDirParms команда, но эта команда может только установить параметры, которые характерны для обоих битовых массивов. Для разрядных определений для этого битового массива посмотрите Битовый массив Файла и Каталога.
Параметры, которые будут установлены, упакованные в растровом порядке.
Result
kFPNoErr если не произошла никакая ошибка. Посмотрите Таблицу 68 для возможных кодов результата.
ReplyBlock
Ни один.
Обсуждение
Это наборы команд или очищают определенные параметры и атрибуты, которые характерны и для файлов и для каталогов. Параметры являются Невидимыми атрибутами и Системными атрибутами, Датой создания, Датой Модификации, Резервной Датой, Информацией Средства поиска и полномочиями UNIX.
Параметры должны быть упакованы, в растровом порядке, в блоке запроса. Параметры переменной длины, такие как Длинное Имя и Краткое название, должны быть сохранены в конце блока. Чтобы сделать это, параметры переменной длины представлены в растровом порядке, поскольку фиксированная длина смещает (целые числа). Эти смещения измеряются от запуска параметров к запуску параметров переменной длины. Фактические параметры переменной длины тогда упаковываются после всех параметров фиксированной длины.
Если необходимо, нулевой байт должен быть добавлен между Pathname и DirectoryParameters в запросе блокируют для создания DirectoryParameters начните на ровной границе.
Если параметр Атрибутов включен, Установить/Очистить бит указывает, что указанные атрибуты должны быть установлены (1) или очистились (0). Поэтому не возможно установить некоторые атрибуты и очистить другие атрибуты в той же команде.
Если эта команда изменяет атрибуты CNODE или назначает даты CNODE (кроме даты модификации), Информация Средства поиска или полномочия UNIX, дата модификации CNode назначена к часам сервера. Если эта команда изменяет Невидимый атрибут CNODE, дата модификации родительского каталога CNODE назначена к часам сервера.
Устанавливать параметры для каталога, который не пуст, пользовательский доступ поиска потребностей ко всем наследователям, включая родительский каталог, а также доступ для записи к родительскому каталогу. Для установки параметров для пустого каталога пользователю нужен поисковый или доступ для записи ко всем наследователям, кроме родительского каталога, а также доступа для записи к родительскому каталогу.
Устанавливать параметры для файла, который не пуст, пользовательский доступ поиска потребностей ко всем наследователям, кроме родительского каталога, а также доступа для записи к родительскому каталогу. Для установки параметров для пустого файла пользователю нужен поисковый или доступ для записи ко всем наследователям, кроме родительского каталога, а также доступа для записи к родительскому каталогу.
Для файлов вызвать FPSetFileParms устанавливать параметры и атрибуты это FPSetFileDirParms не может установить. Для каталогов вызвать FPSetDirParms устанавливать параметры и атрибуты это FPSetFileDirParms не может установить.
Таблица 68 перечисляет коды результата для FPSetFileDirParms команда.
Таблица 68Result кодирует для FPSetFileDirParms команда
Битовый массив, описывающий параметры для установки. Установите бит, соответствующий каждому желаемому параметру. Этот битовый массив может совпасть с параметром FileBitmap FPGetFileDirParms команда. Для разрядных определений для этого битового массива посмотрите Битовый массив Файла и Каталога.
Параметры, которые будут установлены, упакованные в растровом порядке.
Result
kFPNoErr если не произошла никакая ошибка. Посмотрите Таблицу 69 для возможных кодов результата.
ReplyBlock
Ни один.
Обсуждение
Параметры должны быть упакованы, в растровом порядке, в блоке запроса. Параметры переменной длины должны быть сохранены в конце блока. Чтобы сделать это, параметры переменной длины представлены в растровом порядке, поскольку фиксированная длина смещает (целые числа). Эти смещения измеряются от запуска параметров к запуску параметров переменной длины. Фактические параметры переменной длины тогда упаковываются после всех параметров фиксированной длины.
Если необходимо, нулевой байт должен быть добавлен между Pathname и FileParameters в запросе блокируют для создания FileParameters начните на ровной границе.
Следующие параметры могут быть установлены или очищены: Атрибуты (все атрибуты кроме DAlreadyOpen, RAlreadyOpen, и CopyProtect), Дата создания, Дата Модификации, Резервная Дата, Информация Средства поиска и полномочия UNIX.
Если параметр Атрибутов включен, Установить/Очистить бит указывает, что указанные атрибуты должны быть установлены (1) или очистились (0). Поэтому не возможно установить некоторые атрибуты и очистить другие атрибуты в том же вызове.
Если эта команда изменяет Невидимый атрибут файла, дата модификации родительского каталога файла назначена к часам сервера. Если эта команда изменяет Атрибуты файла или назначает какие-либо даты (кроме даты модификации), или Информация Средства поиска, дата модификации файла назначена к часам сервера.
Если файл пуст (оба ветвления являются нулевой длиной), у пользователя должен быть поисковый или доступ для записи ко всем наследователям, кроме родительского каталога этого файла, а также доступа для записи к родительскому каталогу. Если любое ветвление не пусто, у пользователя должны быть поисковый доступ ко всем наследователям кроме родительского каталога, а также доступ для чтения и доступ для записи к родительскому каталогу.
Эта команда не может использоваться для определения имени файла; вместо этого, используйте FPRename. Эта команда не может использоваться для установки Родительского каталога файла ID; вместо этого, используйте FPMoveAndRename. Эта команда не может использоваться для установки продолжительностей ветвления файла; вместо этого, вызовите FPSetForkParms. Эта команда не может использоваться для установки Узла файла ID.
Таблица 69 перечисляет коды результата для FPSetFileParms команда.
Таблица 69Result кодирует для FPSetFileParms команда
Битовый массив, описывающий параметры для установки. Установите бит, соответствующий каждому желаемому параметру. Этот битовый массив совпадает с FileBitmap из FPGetFileDirParms команда, но только Длина Ветви данных, Длина Ветви ресурсов, Расширенная Длина Ветви данных и Расширенные параметры Длины Ветви ресурсов могут быть установлены. Для разрядных определений для этого битового массива посмотрите Битовый массив Файла и Каталога.
ForkLen
Новое значение конца ветвления. Это значение составляет или 32 бита или 64 бита в длине, в зависимости от того, устанавливаете ли Вы длину или расширенный параметр длины.
Result
kFPNoErr если не произошла никакая ошибка. Посмотрите Таблицу 70 для возможных кодов результата.
ReplyBlock
Ни один.
Обсуждение
Bitmap и ForkLen параметры передаются серверу, изменяющему продолжительность ветвления, указанного OForkRefNum. Сервер возвращает a kFPBitmapErr закончитесь код, если команда пытается установить продолжительность другого ветвления файла или если это пытается установить какой-либо другой параметр файла.
Сервер возвращает a kFPLockErr закончитесь код, если бы попытка предпринята для усечения ветвления в пути, который устранил бы диапазон или часть диапазона, заблокированного другим пользователем.
Ветвление должно быть открыто для записи пользователем.
Эта команда не может определить имя файла; вместо этого, используйте FPRename. Эта команда не может установить Родительский каталог файла ID; вместо этого, используйте FPMoveAndRename. Эта команда не может установить номер документа файла.
Таблица 70 перечисляет коды результата для FPSetForkParms команда.
Таблица 70Result кодирует для FPSetForkParms команда
Битовый массив, описывающий параметры, которые будут установлены. Этот параметр совпадает с Bitmap параметр для FPGetVolParms команда, но только Резервная Дата укусила, может быть установлен. Для разрядных определений для этого битового массива посмотрите Битовый массив Объема.
BackupDate
Новая резервная дата.
Result
kFPNoErr если не произошла никакая ошибка. Посмотрите Таблицу 71 для возможных кодов результата.
ReplyBlock
Ни один.
Обсуждение
Это наборы команд резервная дата объема.
Таблица 71 перечисляет коды результата для FPSetVolParms команда.
Таблица 71Result кодирует для FPSetVolParms команда
Объем ID объема, содержащего каталог для сбрасывания.
dirID
Каталог ID для сбрасывания.
Возвращаемое значение
Блок ответа указывает, успешно выполнился ли вызов или нет. Это может возвратиться kFPNoErr (успех), kFPObjectNotFound (недопустимый volID поскольку sharepoint или каталог не являются в этом sharepoint), kFPParamErr (недопустимый dirID указанный), или kFPAccessDenied (недостаточные полномочия).
Обсуждение
FPSyncDir передает стабильное хранение, любые данные и метаданные, связанные с файлами и каталогами, содержавшимися в иерархии, базировались в указанном каталоге.
Успешный ответ на эту команду указывает, что предшествующие изменения длительны (как в «D» семантики ACID). Этот вызов требуется, чтобы поддерживать Машину времени по AFP.
Сила изменяется на файл, который будет сброшен к диску.
Объявление
Objective C
uint8_tfuncCode;uint8_tpad;int16_tforkRefNum;
Параметры
funcCode
kFPSyncFork (79)
pad
Клавиатура выравнивания.
forkRefNum
Ссылочный номер открытого ветвления для сбрасывания.
Возвращаемое значение
Блок ответа указывает, успешно выполнился ли вызов или нет. Это может возвратиться kFPNoErr (успех), kFPObjectNotFound (недопустимый sharepoint объем ID или файл не является в этом sharepoint), kFPParamErr (недопустимый forkRefNum указанный или слишком много открытых ветвлений), или kFPAccessDenied (недостаточные полномочия).
Обсуждение
FPSyncFork должен гарантировать, что все предшествующие записи к указанному ветвлению (включая метаданные файла) завершены и записаны в стабильное хранение.
Успешный ответ на эту команду указывает, что предшествующие изменения длительны (как в «D» семантики ACID). Этот вызов требуется, чтобы поддерживать Машину времени по AFP.
Бит 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 команда.
Бит 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 команда.
Если AFP sharepoint смонтирован, когда клиент засыпает (например, неактивный сон или сон требования такой как тогда, когда крышка PowerBook закрывается), клиент отправляет FPZzzzz команда. Эта команда уведомляет сервер AFP, что клиент засыпает и что сервер не должен больше отправлять пакеты клиенту. То, когда клиент, просыпается, это отправит пакеты AFP в сервер, уведомляющий сервер, что теперь бодрствует клиент.
Сервер AFP должен иметь установку в течение максимального времени, когда клиент может спать — обычно 24 часа. Если клиент спал дольше, чем максимальное время сна, сервер предполагает, что клиент был разъединен и может освободить связанные с клиентом ресурсы на сервере.
FPZzzzz команда поддерживается AFP 2.3 и позже по AFP/TCP только.
Рисунок 80 показывает блок запроса для FPZzzzz команда.
Блок рисунка 80Request для FPZzzzz команда
Если поддержки сервера расширенная информация о сне (kSupportsExtSleep в битовом массиве флагов сервера — видят Битовый массив Флагов Сервера), то, прежде чем клиент засыпает, это отправляет команду FPZzzzz с Flag полевой набор к 1. Когда сервер получает эту команду с Flag набор к 1, это должно отключить щекотать таймеры и щекотать контроль.
Когда клиент просыпается, это отправляет другого FPZzzzz команда, на сей раз с Flag полевой набор к 2. Это указывает к серверу, что теперь бодрствует клиент. Когда сервер получает эту команду сна с Flag набор к 2, это должно повторно включить щекотать таймеры и щекотать контроль.
Указывает, является ли пакет запросом или ответом.
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
Таблица 74 описывает каждое поле в части опции DSIOpenSession пакет.
Таблица 74Fields в части опции DSIOpenSession пакет
Поле
Цель
optionType
8-разрядное значение без знака, указывающее тип информации, содержится optionData полем. Определяются два типа:
enum
{
kRequestQuanta=0x00,
kServerReplayCacheSize=0x02
};
0x00 = квант запроса к серверу. Отправленный сервером клиенту, чтобы указать, что optionData поле содержит размер самого большого пакета запроса, который может принять сервер. Длина опции составляет четыре байта.
0x02 = максимальный размер кэша воспроизведения поддерживается. Отправленный сервером клиенту для указания максимального количества элементов, которые поддерживает кэш воспроизведения сервера. Длина опции составляет четыре байта.
optionLength
8-разрядное значение без знака, содержащее продолжительность переменной длины optionData следующее поле.
optionData
Значение переменной длины, отправленное в сетевом порядке байтов (старший значащий байт сначала) представление числа байтов сервер и клиент, может принять в запросе и пакетах внимания, соответственно, но не включая длину заголовка DSI и команды AFP. Длина поля Option является переменной, но для максимальной производительности, это должно быть кратное число 4 байтов.
Указывает, является ли пакет запросом или ответом.
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 предъявляет претензии в отношении хранения, выделенного для контекста запроса.
Указывает, является ли пакет запросом или ответом.
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 избавляется от данных и предъявляет претензии в отношении хранения, связанного с ним.
Указывает, является ли пакет запросом или ответом.
0x00 = запрос
0x01 = ответ
command
Код команды (8).
requestID
Запрос ID. Посмотрите DSIHeader для получения дополнительной информации.
writeOffset
Обнуленный (0).
errorCode
На ответе, произошедший код ошибки.
totalDataLength
Набор к длине optionPayload блоб данных.
reserved
Зарезервированный. Обнуленный (0).
attentionPayload
Полезная нагрузка пакета — блок переменной длины данных опции в формате, описанном в обсуждении ниже.
Обсуждение
Сервер AFP использует стандартные пакеты потока данных для отправки DSIAttention пакеты клиенту. Код внимания сохранен как часть данных в пакете DSI. Когда клиент открыл сеанс, размер кода внимания и любых других данных внимания не может быть больше, чем размер, указанный квантом внимания. Квантовый размер внимания по умолчанию 2. См. Определения AFPUserBytes для получения дополнительной информации.
Указывает, является ли пакет запросом или ответом. Всегда нуль (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.
Всегда нуль (0) указать, что это содержит запрос. Клиент не ожидает ответа.
command
Код команды (1).
requestID
Запрос ID. Посмотрите DSIHeader для получения дополнительной информации.
writeOffset
Обнуленный (0).
errorCode
На ответе, произошедший код ошибки.
totalDataLength
Обнуленный (0).
reserved
Зарезервированный. Обнуленный (0).
Обсуждение
Закрыть сеанс, клиент AFP или сервер отправляет a DSICloseSession запрос команды. Не ожидая ответа, отправителя DSICloseSession команда закрывает сеанс AFP и предъявляет претензии в отношении всех ресурсов, выделенных к сеансу. Тогда это разъединяет соединение потока данных.
Указывает, является ли пакет запросом или ответом.
0x00 = запрос
0x01 = ответ
command
Код команды (3).
requestID
Запрос ID. Посмотрите DSIHeader для получения дополнительной информации.
writeOffset
Обнуленный (0).
errorCode
На ответе, произошедший код ошибки.
totalDataLength
Набор к длине statusPayload блоб данных.
reserved
Зарезервированный. Обнуленный (0).
Обсуждение
После заголовка команды выше, пакет DSI содержит полезную нагрузку, состоящую из FPGetSrvrInfo пакет запроса или ответный пакет.
В контексте коммуникации потока данных клиент должен установить сеанс с сервером для обмена информацией с ним, но в контексте ASP, клиент может отправить ASPGetStatus команда к серверу, не устанавливая сеанс. Поддерживать ASPGetStatus, сервер AFP поддерживает DSIGetStatus команда на ее порту прослушивания.
Для получения информации о состоянии ASP клиент должен установить соединение на порту прослушивания сервера. Клиент тогда отправляет a DSIGetStatus команда к серверу. Сервер тогда возвращает информацию о статусе клиенту и сразу разъединяет соединение.
Идентификатор пользователя владельца файла или каталога.
gid
Группа ID владельца файла или каталога.
permissions
Полный набор битов полномочий файла или каталога, включая выполняют биты. Когда клиент изменяет полномочия на сервере, этот битовый массив используется. (Это может также использоваться для обнаружения символьных ссылок при помощи S_IFMT биты, описанные в <sys/stat.h>.)
ua_permissions
Права доступа пользователя к файлу или каталогу. Этот битовый массив находится в том же формате как права доступа AFP. Посмотрите Битовый массив Прав доступа для получения дополнительной информации.
Обсуждение
A FPUnixPrivs когда Вы вызываете, структура возвращается FPGetFileDirParms и укажите, что Вы хотите получить права UNIX для файла или каталога.
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;
elseLastReqID=LastReqID+1;
ExpectedReqID=LastReqID;
Серверы начинают генерировать, запрашивают IDs в нуле (0).
writeOffset
В пакетах запроса это поле проигнорировано сервером для всех команд кроме DSIWrite. Для будущей совместимости клиенты должны обнулить это поле для всех команд кроме DSIWrite.
В пакетах запроса, в которых команда DSIWrite, это поле содержит смещение данных, которое является числом байтов в пакете, представляющем информацию о команде AFP. Сервер использует эту информацию для сбора части команды AFP пакета, прежде чем это примет, что пишут фактические данные.
Например, когда клиент отправляет FPWrite команда для записи данных по серверу смещение прилагаемых данных должно быть 12.
errorCode
В ответ пакеты, это поле содержит код ошибки.
totalDataLength
32-разрядное значение без знака, указывающее общую длину данных, следующих за заголовком DSI.
reserved
32-разрядное поле зарезервировано для будущего использования. Клиенты должны обнулить это поле.
Обсуждение
Рисунок 82 дает визуальное представление формата заголовка.
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 команда.
Константы, указывающие тип имен в 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 путем.
Право 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.
Первоначально выдержанный за поисковое разрешение. В 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, если, если файл или каталог не принадлежит зарегистрированному пользователю.
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 значение).
Получает информационные данные Средства поиска (32 байта). Эти данные доступны для файлов и каталогов на HFS или HFS + объемы. Это не интерпретируется сервером AFP или клиентским программным обеспечением всегда.
kFPLongNameBit
kFPLongNameBit
Получает длинное имя. (Формат является строкой Паскаля до 32 символов.) Посмотрите Имена узла Каталога для получения дополнительной информации.
kFPShortNameBit
kFPShortNameBit
Получает краткое название. (Формат является строкой Паскаля до 12 символов.) Посмотрите Имена узла Каталога для получения дополнительной информации.
Для каталогов, получает число файлов и папок в каталоге (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 устанавливать параметры файла.
Битовый массив Каталога используется при вызове FPGetFileDirParms для указания параметров каталога, Вы хотите добраться. Это также используется при вызове FPSetDirParms и FPSetFileDirParms устанавливать параметры каталога.
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 приписывает битовый массив
Используйте биты в битовом массиве Атрибутов Каталога для запрещения переименования или удаления каталога. Другие биты в битовом массиве Атрибутов Каталога указывают, должен ли каталог быть скопирован, смонтирован ли каталог пользователем, невидим ли каталог или системный каталог, и является ли каталог в совместно используемой области или является точкой доли. При вызове FPSetDirParms и FPGetFileDirParms для установки Атрибутов Каталога используйте Установить/Очистить бит (укусил 15) указать, устанавливаете ли Вы или очищаете атрибут каталога.
Рисунок 87 описывает битовый массив Атрибутов для каталога.
Если установлено, FPSetExtAttr сбои, если уже существует расширенный атрибут.
kXAttrReplace
kXAttrReplace
Если установлено, FPSetExtAttr сбои, если не существует расширенный атрибут.
Обсуждение
Используйте эти константы в Растровом параметре FPGetExtAttr, FPSetExtAttr, и FPRemoveExtAttr команды для получения установите и удалите расширенные атрибуты.
Указывает, что сервер позволяет пользователю изменять пароли через AFP (использование FPChangePassword).
kDontAllowSavePwd
kDontAllowSavePwd
Устаревший. Набор, если клиент не должен позволять пользователю сохранять его или ее пароль для объемов, смонтированных при системном запуске. Диалоговое окно выбора элемента может все еще позволить пользователю сохранять его или ее имя. Однако, когда этот бит установлен, кнопка, предлагающая ту опцию, не выведена на экран. Не используемый в OS X.
kSupportsSrvrMsg
kSupportsSrvrMsg
Указывает, что сервер поддерживает сообщения сервера (использование FPGetSrvrMsg).
kSrvrSig
kSrvrSig
Указывает, что сервер поддерживает дополнительное ServerSignature параметр в FPGetSrvrInfo используемый для идентификации сервера. Подпись сервера является 16-байтовым числом, однозначно определяющим сервер. Клиент использует эту подпись, чтобы определить, регистрируется ли она уже в сервер. (Эта функция важна, когда сервер сконфигурирован для размещения в разных сетях.)
kSupportsTCP
kSupportsTCP
Указывает, что сервер поддерживает AFP по TCP/IP.
kSupportsSrvrNotify
kSupportsSrvrNotify
Поддержки сервера, отправляющие пакеты Внимания DSI с «образцом» Уведомления Сервера (0011). Посмотрите DSIAttention для получения дополнительной информации.
Указывает что поддержки сервера с помощью службы каталогов (обычно Kerberos).
kSupportsUTF8SrvrName
kSupportsUTF8SrvrName
Указывает, что сервер поддерживает имена серверов в кодировании UTF-8. Если этот флаг установлен, FPGetSrvrInfo ответный пакет находится в кодировании UTF-8.
kSupportsUUIDs
kSupportsUUIDs
Указывает, что сервер поддерживает Универсально Уникальные идентификаторы (UUIDs).
kSupportsExtSleep
kSupportsExtSleep
Указывает, что сервер поддерживает расширенную функциональность сна. Посмотрите FPZzzzz для получения дополнительной информации.
kSupportsSuperClient
kSupportsSuperClient
Устаревший. (До OS X это указало, что сервер мог обработать многократные выдающиеся запросы.)
Обсуждение
Битовый массив Флагов Сервера возвращается FPGetSrvrInfo команда.
Дата объем создавалась в формате даты 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 описывает битовый массив Объема.
Объем имеет пароль. Этот бит совпадает с HasPassword бит возвратился для каждого объема FPGetSrvrParms.
kSupportsFileIDs
kSupportsFileIDs
Поддержки объема, получая идентификаторы файла. В целом, если идентификаторы файла поддерживаются на одном объеме, они поддерживаются на всех объемах, но этот бит позволяет серверу быть более выборочным, при необходимости.
kSupportsCatSearch
kSupportsCatSearch
Поддержки объема, ищущие дерево каталога с FPCatSearch и FPCatSearchExt команды. Поддержка FPCatSearch и FPCatSearchExt является дополнительным. Этот бит позволяет серверу делать эту возможность доступной на основе на объем.
kSupportsBlankAccessPrivs
kSupportsBlankAccessPrivs
Если установлено, объем имеет Пробел Поддержек, который укусили Права доступа, это, когда установлено для каталога, заставляет каталог наследовать свои права доступа из его родительского каталога.
kSupportsUnixPrivs
kSupportsUnixPrivs
Объем поддерживает UNIX (owner/group/other) модель полномочий.
kSupportsUTF8Names
kSupportsUTF8Names
Объем поддерживает UTF-8–encoded имена пользователей, названия группы и пути.
AFPUserBytes байты составляют 2-байтовый код внимания, отправленный в пакете Внимания DSI клиенту AFP. В этом разделе описываются AFPUserBytes значения.
Бит 15: Завершение работы или Внимание укусили. Этот бит используется, когда сервер закрывается, или разъединяются один или несколько пользователей.
kAllowReconnectMask
kAllowReconnectMask
Бит 14: Катастрофический отказ Сервера укусил. Сервер обнаружил внутреннюю ошибку, и сеанс сразу закроется с минимальным сбрасыванием файлов. Может быть некоторая потеря данных. Это условие никогда не сопровождается сервером, обмениваются сообщениями и очень вряд ли произойдет.
kMsgNotifyMask
kMsgNotifyMask
Бит 13: сообщение Сервера укусило. Существует сообщение сервера, что клиент должен запросить путем вызова FPGetSrvrMsg с MsgType «Сервера». Для получения дополнительной информации посмотрите раздел «FPGetSrvrMsg» (страница 55). Клиент должен запросить сообщение как можно скорее после получения этого кода внимания. Иначе, сообщение сервера, которое это получает, могло устареть.
kDisconnectNotifyMask
kDisconnectNotifyMask
Бит 12: не Повторно соединяйте бит. Этот бит установлен, когда пользователь разъединяется, так, чтобы код переподключения клиента не пытался повторно соединить сеанс. Этот бит не установлен для нормальных завершений работы сервера и не установлен, когда сервер теряет питание или когда существует перерыв в сетевых кабельных соединениях. Этот механизм позволяет администраторам закрывать сервер для целей резервирования, переводить сервер в рабочее состояние и позволять разъединенным клиентам повторно соединяться прозрачно. Когда число минут является любым значением кроме нуля, этот бит проигнорирован.
Обсуждение
AFPUserBytes расположение битового поля показано на рисунке 90.
Рисунок 90AFPUserBytes расположение битового поля
Рисунок 91 показывает, как определяются биты кода внимания для байтов AFPUserBytes.
Рисунок 91AFPUserBytes биты кода внимания
Таблица 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, перечислены в таблице ниже.
Эта ошибка обычно указывает, что сервер ограничивает максимальное количество параллельных клиентов, и что это максимальное количество было бы превышено путем удостаивания этого запроса входа в систему.
Попытка была предпринята, чтобы получить или установить параметр, который не может быть получен или установлен с этой командой, или требуемый битовый массив является нулем
Значение
- 5004
Описание
Попытка была предпринята, чтобы получить или установить параметр, который не может быть получен или установлен с этой командой, или требуемый битовый массив является нулем
Указанное отображение APPL, комментарий или значок не были найдены в базе данных Desktop; указанный ID неизвестен.
Значение
- 5012
Описание
Указанное отображение APPL, комментарий или значок не были найдены в базе данных Desktop; указанный ID неизвестен.
Начинаясь в AFP 3.4, коде ошибки POSIX ENOATTR карты на этот код ошибки. В предшествующих версиях AFP, ENOATTR ошибка была отображена на “kFPMiscErr” код ошибки.
Ссылочный номер сеанса, Настольное число ссылки на базу данных, открытый ссылочный номер ветвления, Объем ID, Каталог ID, Идентификатор файла, Группа ID или подфункция неизвестны; диапазон байта запускается перед нулем байта; путь недопустим; тип пути неизвестен; имя пользователя является нулем, превышает предел длины имени пользователя UAM или не существует, MaxReplySize является слишком маленьким для содержания единственной структуры потомков, ThisUser укусил, не установлен, аутентификация, отказавшая по нераскрытой причине, указанный пользователь неизвестен, или учетная запись была отключена вследствие слишком многих попыток входа в систему; ReqCount или Смещение отрицательны; NewLineMask недопустимо.
Неработающий UAM (указанный старый пароль не соответствует); никакой пользователь еще не зарегистрирован для указанного сеанса; аутентификация перестала работать; пароль является неправильным.
Значение
- 5023
Описание
Неработающий UAM (указанный старый пароль не соответствует); никакой пользователь еще не зарегистрирован для указанного сеанса; аутентификация перестала работать; пароль является неправильным.
Файлом или каталогом является отмеченный DeleteInhibit; каталогом, перемещаемым, переименованным, или перемещенным и переименованным, является отмеченный RenameInhibit; файлом, перемещаемым и переименованным, является отмеченный RenameInhibit; была предпринята попытка для открытия файла для записи, которая является отмеченным WriteInhibit; была предпринята попытка для переименования файла или каталога, который является отмеченным RenameInhibit.
Пароль пользователя короче, чем минимальная длина пароля сервера, или пользователь попытался изменить пароль на пароль, который короче, чем минимальная длина пароля сервера.
Значение
- 5041
Описание
Пароль пользователя короче, чем минимальная длина пароля сервера, или пользователь попытался изменить пароль на пароль, который короче, чем минимальная длина пароля сервера.
Перемещаемый каталог содержит точку доли и перемещается в каталог, который совместно используется или является потомком совместно использующегося каталога.
Значение
- 5043
Описание
Перемещаемый каталог содержит точку доли и перемещается в каталог, который совместно используется или является потомком совместно использующегося каталога.