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

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

Разработчик

Ссылка SCSITask.h

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

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

Ссылка 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 и позже.

    Обсуждение

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