Ссылка SCSITask.h
Определения типов SCSITask и константы, используемые в ядре и пространстве пользователя.
Обратите внимание на то, что SCSITaskIdentifier является непрозрачным объектом и что непосредственно обескураживают кастингу SCSITaskIdentifier к любому другому типу. Реализация SCSITask изменяется при необходимости для размещения изменений в архитектуре, повышений производительности и исправлений ошибок.
Уровень устройств и драйверы протокольного уровня, которые должны получить доступ к информации, содержавшейся в SCSITask, должны использовать надлежащие методы доступа в IOSCSIPrimaryCommandsDevice.h или IOSCSIProtocolServices.h
Включенные заголовки
<IOKit/IOTypes.h>
<CoreFoundation/CoreFoundation.h>
<libkern/c++/OSObject.h>
-
Объявление
Objective C
typedef void ( *SCSITaskCompletion )( SCSITaskIdentifier completedTask );
Обсуждение
Это - определение типа для подпрограмм завершения та работа с SCSITaskIdentifiers.
Оператор импорта
Objective C
#include <SCSITask.h>;
Доступность
Доступный в OS X v10.6 и позже.
Посмотрите раздел Overview выше для документации уровня заголовка.
-
64-разрядное число для представления Устройства SCSI.
Объявление
Objective C
typedef UInt64 SCSIDeviceIdentifier;
Обсуждение
Если идентификатор может или быть идентификатором инициатора или цели, SCSIDeviceIdentifier должен использоваться.
Оператор импорта
Objective C
#include <SCSITask.h>;
Доступность
Доступный в OS X v10.2 и позже.
-
64-разрядное число для представления Устройства инициатора SCSI.
Объявление
Objective C
typedef SCSIDeviceIdentifier SCSIInitiatorIdentifier;
Обсуждение
Если идентификатор для инициатора только и не цели, то SCSIInitiatorIdentifier должен использоваться.
Оператор импорта
Objective C
#include <SCSITask.h>;
Доступность
Доступный в OS X v10.2 и позже.
-
Атрибуты для ответа службы задачи.
Объявление
Objective C
typedef enum SCSIServiceResponse { /*! */ kSCSIServiceResponse_Request_In_Process = 0, /*! */ kSCSIServiceResponse_SERVICE_DELIVERY_OR_TARGET_FAILURE = 1, /*! */ kSCSIServiceResponse_TASK_COMPLETE = 2, /*! */ kSCSIServiceResponse_LINK_COMMAND_COMPLETE = 3, /*! */ kSCSIServiceResponse_FUNCTION_COMPLETE = 4, /*! */ kSCSIServiceResponse_FUNCTION_REJECTED = 5 } SCSIServiceResponse;
Константы
-
kSCSIServiceResponse_Request_In_Process
kSCSIServiceResponse_Request_In_Process
Не определенный в спецификации SAM, но ответ службы, используемый для еще не завершающихся асинхронных команд.
Доступный в OS X v10.0 и позже.
-
kSCSIServiceResponse_SERVICE_DELIVERY_OR_TARGET_FAILURE
kSCSIServiceResponse_SERVICE_DELIVERY_OR_TARGET_FAILURE
Запрос на обслуживание перестал работать из-за поставки или целевого отказа.
Доступный в OS X v10.0 и позже.
-
kSCSIServiceResponse_TASK_COMPLETE
kSCSIServiceResponse_TASK_COMPLETE
Задача завершилась.
Доступный в OS X v10.0 и позже.
-
kSCSIServiceResponse_LINK_COMMAND_COMPLETE
kSCSIServiceResponse_LINK_COMMAND_COMPLETE
Соединенная команда завершилась.
Доступный в OS X v10.0 и позже.
-
kSCSIServiceResponse_FUNCTION_COMPLETE
kSCSIServiceResponse_FUNCTION_COMPLETE
Функция управления задачами завершилась.
Доступный в OS X v10.0 и позже.
-
kSCSIServiceResponse_FUNCTION_REJECTED
kSCSIServiceResponse_FUNCTION_REJECTED
Функция управления задачами была отклонена.
Доступный в OS X v10.0 и позже.
Обсуждение
Ответ Службы представляет состояние выполнения запроса на обслуживание, сделанного к Драйверу Protocol Services. Ответ Службы может только быть изменен Протокольным уровнем SCSI. Прикладной уровень SCSI может только считать состояние.
Оператор импорта
Objective C
#include <SCSITask.h>;
Доступность
Доступный в OS X v10.0 и позже.
-
-
64-разрядное число для представления уникального идентификатора задачи.
Объявление
Objective C
typedef UInt64 SCSITaggedTaskIdentifier;
Обсуждение
Когда Задача имеет Атрибут Задачи кроме SIMPLE, Маркированный Идентификатор Задачи используется. Клиент Прикладного уровня SCSI, управляющий Логической единицей, для которой предназначается Задача, обязан гарантировать, что Идентификатор Тега задачи уникален. Нуль не может использоваться значение Тега, как это привыкло к тому, когда Маркированное значение Идентификатора Задачи необходимо для Задачи с атрибутом SIMPLE.
Оператор импорта
Objective C
#include <SCSITask.h>;
Доступность
Доступный в OS X v10.2 и позже.
-
64-разрядное число для представления Целевого устройства SCSI.
Объявление
Objective C
typedef SCSIDeviceIdentifier SCSITargetIdentifier;
Обсуждение
Если идентификатор для цели только и не инициатора, то SCSITargetIdentifier должен использоваться.
Оператор импорта
Objective C
#include <SCSITask.h>;
Доступность
Доступный в OS X v10.2 и позже.
-
Атрибуты для поставки задачи.
Объявление
Objective C
typedef enum SCSITaskAttribute { kSCSITask_SIMPLE = 0, kSCSITask_ORDERED = 1, kSCSITask_HEAD_OF_QUEUE = 2, kSCSITask_ACA = 3 } SCSITaskAttribute;
Константы
-
kSCSITask_SIMPLE
kSCSITask_SIMPLE
Задача имеет простой атрибут.
Доступный в OS X v10.0 и позже.
-
kSCSITask_ORDERED
kSCSITask_ORDERED
Задача имеет упорядоченный атрибут.
Доступный в OS X v10.0 и позже.
-
kSCSITask_HEAD_OF_QUEUE
kSCSITask_HEAD_OF_QUEUE
Задача сделала, чтобы голова очереди приписала.
Доступный в OS X v10.0 и позже.
-
kSCSITask_ACA
kSCSITask_ACA
Задача имеет атрибут «автоматическая сопряженная преданность».
Доступный в OS X v10.0 и позже.
Обсуждение
Атрибут Задачи определяет, как этой задачей нужно управлять, когда determing упорядочивают для организации очередей и представления к надлежащему серверу устройства. Атрибут Задачи установлен Прикладным уровнем SCSI и не может быть изменен Протокольным уровнем SCSI.
Оператор импорта
Objective C
#include <SCSITask.h>;
Доступность
Доступный в OS X v10.0 и позже.
-
-
Объявление
Objective C
typedef OSObject * SCSITaskIdentifier;
Обсуждение
Это - непрозрачный объект, представляющий задачу. Это используется так, чтобы драйверы и для Протокольного уровня SCSI и для Прикладного уровня SCSI не могли изменить объект SCSITask непосредственно, но должны были вместо этого использовать унаследованные методы сделать так. Это позволяет реализации SCSITask изменяться, непосредственно не влияя на драйверы уровня устройств и протокольного уровня. Кроме того, это предотвращает изменение свойств, которым не позволяют быть измененными данным уровнем.
Оператор импорта
Objective C
#include <SCSITask.h>;
Доступность
Доступный в OS X v10.6 и позже.
-
Объявление
Objective C
typedef enum SCSITaskMode { kSCSITaskMode_CommandExecution = 1, kSCSITaskMode_Autosense = 2 } SCSITaskMode;
Обсуждение
Режим SCSI Task используется Протокольным уровнем SCSI для указания, какой режим задача выполняет.
Оператор импорта
Objective C
#include <SCSITask.h>;
Доступность
Доступный в OS X v10.6 и позже.
-
Атрибуты для состояния задачи.
Объявление
Objective C
typedef enum SCSITaskState { kSCSITaskState_NEW_TASK = 0, kSCSITaskState_ENABLED = 1, kSCSITaskState_BLOCKED = 2, kSCSITaskState_DORMANT = 3, kSCSITaskState_ENDED = 4 } SCSITaskState;
Константы
-
kSCSITaskState_NEW_TASK
kSCSITaskState_NEW_TASK
Состояние задачи является новой задачей.
Доступный в OS X v10.0 и позже.
-
kSCSITaskState_ENABLED
kSCSITaskState_ENABLED
Задача включена и поставлена в очередь.
Доступный в OS X v10.0 и позже.
-
kSCSITaskState_BLOCKED
kSCSITaskState_BLOCKED
Задача блокируется.
Доступный в OS X v10.0 и позже.
-
kSCSITaskState_DORMANT
kSCSITaskState_DORMANT
Задача бездействует.
Доступный в OS X v10.0 и позже.
-
kSCSITaskState_ENDED
kSCSITaskState_ENDED
Задача завершена.
Доступный в OS X v10.0 и позже.
Обсуждение
Состояние задачи представляет текущее состояние задачи. Когда задача создается, состояние установлено в NEW_TASK. Протокольный уровень SCSI тогда скорректирует состояние, поскольку задача ставится в очередь и во время выполнения. Прикладной уровень SCSI может исследовать состояние для контроля динамики задачи. Состояние задачи может только быть изменено Протокольным уровнем SCSI. Прикладной уровень SCSI может только считать состояние.
Оператор импорта
Objective C
#include <SCSITask.h>;
Доступность
Доступный в OS X v10.0 и позже.
-
-
Атрибуты для состояния задачи.
Объявление
Objective C
typedef enum SCSITaskStatus { /*! */ kSCSITaskStatus_GOOD = 0x00, /*! */ kSCSITaskStatus_CHECK_CONDITION = 0x02, /*! */ kSCSITaskStatus_CONDITION_MET = 0x04, /*! */ kSCSITaskStatus_BUSY = 0x08, /*! */ kSCSITaskStatus_INTERMEDIATE = 0x10, /*! */ kSCSITaskStatus_INTERMEDIATE_CONDITION_MET = 0x14, /*! */ kSCSITaskStatus_RESERVATION_CONFLICT = 0x18, /*! */ kSCSITaskStatus_TASK_SET_FULL = 0x28, /*! */ kSCSITaskStatus_ACA_ACTIVE = 0x30, /*! */ kSCSITaskStatus_TaskTimeoutOccurred = 0x01, /*! */ kSCSITaskStatus_ProtocolTimeoutOccurred = 0x02, /*! */ kSCSITaskStatus_DeviceNotResponding = 0x03, /*! */ kSCSITaskStatus_DeviceNotPresent = 0x04, /*! */ kSCSITaskStatus_DeliveryFailure = 0x05, /*! */ kSCSITaskStatus_No_Status = 0xFF } SCSITaskStatus;
Константы
-
kSCSITaskStatus_GOOD
kSCSITaskStatus_GOOD
Задача завершилась с состоянием GOOD.
Доступный в OS X v10.0 и позже.
-
kSCSITaskStatus_CHECK_CONDITION
kSCSITaskStatus_CHECK_CONDITION
Задача завершилась с состоянием CHECK_CONDITION. Дополнительная информация об условии должна быть доступной в данных чувственного опыта.
Доступный в OS X v10.0 и позже.
-
kSCSITaskStatus_CONDITION_MET
kSCSITaskStatus_CONDITION_MET
Задача завершилась с состоянием CONDITION_MET.
Доступный в OS X v10.0 и позже.
-
kSCSITaskStatus_BUSY
kSCSITaskStatus_BUSY
Задача завершилась с состоянием BUSY. Серверу устройства, возможно, понадобилось бы время для обработки запроса, и задержка может требоваться.
Доступный в OS X v10.0 и позже.
-
kSCSITaskStatus_INTERMEDIATE
kSCSITaskStatus_INTERMEDIATE
Задача завершилась с состоянием INTERMEDIATE.
Доступный в OS X v10.0 и позже.
-
kSCSITaskStatus_INTERMEDIATE_CONDITION_MET
kSCSITaskStatus_INTERMEDIATE_CONDITION_MET
Задача завершилась с состоянием INTERMEDIATE_CONDITION_MET.
Доступный в OS X v10.0 и позже.
-
kSCSITaskStatus_RESERVATION_CONFLICT
kSCSITaskStatus_RESERVATION_CONFLICT
Задача завершилась с состоянием RESERVATION_CONFLICT.
Доступный в OS X v10.0 и позже.
-
kSCSITaskStatus_TASK_SET_FULL
kSCSITaskStatus_TASK_SET_FULL
Задача завершилась с состоянием TASK_SET_FULL. Сервер устройства, возможно, должен выполнить задачу, прежде чем инициатор отправит другого.
Доступный в OS X v10.0 и позже.
-
kSCSITaskStatus_ACA_ACTIVE
kSCSITaskStatus_ACA_ACTIVE
Задача завершилась с состоянием ACA_ACTIVE. Серверу устройства, возможно, понадобится инициатор для очистки Автосопряженного условия Преданности, прежде чем это будет реагировать на новые команды.
Доступный в OS X v10.0 и позже.
-
kSCSITaskStatus_TaskTimeoutOccurred
kSCSITaskStatus_TaskTimeoutOccurred
Если задача будет прервана Протокольным уровнем SCSI вследствие его превышающий значение тайм-аута, указанное задачей, то состояние задачи должно быть установлено в kSCSITaskStatus_TaskTimeoutOccurred.
Доступный в OS X v10.3 и позже.
-
kSCSITaskStatus_ProtocolTimeoutOccurred
kSCSITaskStatus_ProtocolTimeoutOccurred
Если задача будет прервана Протокольным уровнем SCSI вследствие его превышающий значение тайм-аута, указанное поддержкой протокола или связанной спецификации, то состояние задачи должно быть установлено в kSCSITaskStatus_ProtocolTimeoutOccurred.
Доступный в OS X v10.3 и позже.
-
kSCSITaskStatus_DeviceNotResponding
kSCSITaskStatus_DeviceNotResponding
Если задача будет неспособна быть поставленной вследствие отказа устройства, не принимающего задачу или устройство, подтверждая попытку отправить ему устройство, то состояние задачи должно быть установлено в kSCSITaskStatus_DeviceNotResponding. Это позволит драйверу Приложения SCSI выполнять необходимые шаги, чтобы попытаться восстановить устройство. Об этом нужно только сообщить после того, как драйвер Протокольного уровня SCSI делал попытку всего протокола определенные попытки восстановить устройство.
Доступный в OS X v10.3 и позже.
-
kSCSITaskStatus_DeviceNotPresent
kSCSITaskStatus_DeviceNotPresent
Если задача будет неспособна быть поставленной, потому что устройство было отсоединено, то состояние задачи должно быть установлено в kSCSITaskStatus_DeviceNotPresent. Это позволит Прикладному уровню SCSI останавливать отправку задач к устройству и, если поддерживается, выполнять любую обработку отказа устройства или системную очистку.
Доступный в OS X v10.3 и позже.
-
kSCSITaskStatus_DeliveryFailure
kSCSITaskStatus_DeliveryFailure
Если задача неспособна быть поставленной устройству вследствие отказа на Протокольном уровне SCSI, таком как сброс шины или коммуникационная ошибка, но устройство, как известно, функционирует должным образом, состояние задачи должно быть установлено в kSCSITaskStatus_DeliveryFailure. Об этом можно также сообщить, если задача не могла бы быть поставлена вследствие с тех пор исправленной ошибки протокола.
Доступный в OS X v10.3 и позже.
-
kSCSITaskStatus_No_Status
kSCSITaskStatus_No_Status
Это состояние не определяется спецификациями SCSI, но должно здесь обеспечить состояние, которое может быть возвращено в случаях, где нет состояния, доступного от устройства или протокола, например, когда ответ службы не является ни TASK_COMPLETED, ни LINK_COMMAND_COMPLETE или когда ответ службы является SERVICE_DELIVERY_OR_TARGET_FAILURE, и причина отказа не могла быть определена.
Доступный в OS X v10.0 и позже.
Обсуждение
Состояние Задачи представляет состояние завершения задачи, предоставляющей Прикладному уровню SCSI дополнительную информацию о том, как проуступить в обработке выполненной задачи.
Спецификация Модели архитектуры SCSI только определяет значения состояния задачи для того, когда задача завершается с ответом службы или TASK_COMPLETED или LINK_COMMAND_COMPLETE.
Так как дополнительная информация поможет в восстановлении после ошибки, когда задача не будет выполнена устройством вследствие ответа службы kSCSIServiceResponse_SERVICE_DELIVERY_OR_TARGET_FAILURE, дополнительные стоимости были определены, который может быть возвращен Протокольным уровнем SCSI для информирования Прикладного уровня SCSI причины ошибки отправки.
Состояние Задачи может только быть изменено Протокольным уровнем SCSI. Прикладной уровень SCSI может только считать состояние
Оператор импорта
Objective C
#include <SCSITask.h>;
Доступность
Доступный в OS X v10.0 и позже.
-
Посмотрите раздел Overview выше для документации уровня заголовка.
-
Объявление
Objective C
enum { /*! */ kSCSICDBSize_Maximum = 16, /*! */ kSCSICDBSize_6Byte = 6, /*! */ kSCSICDBSize_10Byte = 10, /*! */ kSCSICDBSize_12Byte = 12, /*! */ kSCSICDBSize_16Byte = 16 };
Константы
-
kSCSICDBSize_Maximum
kSCSICDBSize_Maximum
Это - самый большой размер, Блок Дескриптора Команды может быть как указан в SPC 2.
Доступный в OS X v10.0 и позже.
-
kSCSICDBSize_6Byte
kSCSICDBSize_6Byte
Используйте это для 6-байтового CDB.
Доступный в OS X v10.0 и позже.
-
kSCSICDBSize_10Byte
kSCSICDBSize_10Byte
Используйте это для 10-байтового CDB.
Доступный в OS X v10.0 и позже.
-
kSCSICDBSize_12Byte
kSCSICDBSize_12Byte
Используйте это для 12-байтового CDB.
Доступный в OS X v10.0 и позже.
-
kSCSICDBSize_16Byte
kSCSICDBSize_16Byte
Используйте это для 16-байтового CDB.
Доступный в OS X v10.0 и позже.
Обсуждение
Константы Размера блока Дескриптора команды.
-
-
Объявление
Objective C
enum { /*! */ kSCSIDataTransfer_NoDataTransfer = 0x00, /*! */ kSCSIDataTransfer_FromInitiatorToTarget = 0x01, /*! */ kSCSIDataTransfer_FromTargetToInitiator = 0x02 };
Константы
-
kSCSIDataTransfer_NoDataTransfer
kSCSIDataTransfer_NoDataTransfer
Используйте это для задач, не передающих данных.
Доступный в OS X v10.0 и позже.
-
kSCSIDataTransfer_FromInitiatorToTarget
kSCSIDataTransfer_FromInitiatorToTarget
Используйте это для задач, передающих данные от инициатора к цели.
Доступный в OS X v10.0 и позже.
-
kSCSIDataTransfer_FromTargetToInitiator
kSCSIDataTransfer_FromTargetToInitiator
Используйте это для задач, передающих данные от цели до инициатора.
Доступный в OS X v10.0 и позже.
Обсуждение
Константы DataTransferDirection.
-
-
Объявление
Objective C
enum { kSCSIUntaggedTaskIdentifier = 0 };
Константы
-
kSCSIUntaggedTaskIdentifier
kSCSIUntaggedTaskIdentifier
Это значение означает, что задача не маркирована.
Доступный в OS X v10.2 и позже.
Обсуждение
Немаркированный Идентификатор Задачи используется, чтобы указать, что никакой уникальный тег не связан с Задачей.
-