SCSITaskDeviceInterface
Основной интерфейс для Устройства SCSITask.
После рандеву с Устройством SCSITask в IORegistry можно создать экземпляр этого интерфейса как прокси к IOService. Как только у Вас есть этот интерфейс или один из его подклассов, можно создать SCSITasks для отправки к устройству. Используйте метод CreateSCSITask для создания новых экземпляров SCSITask для этого устройства.
Наследование
Не применимый
Соответствует
Не применимый
Оператор импорта
Не применимый не применимый
-
Удобный метод добавить асинхронные механизмы обратного вызова к предпочтительному CFRunLoop.
Объявление
C++
IOReturn ( *AddCallbackDispatcherToRunLoop ) (void *self,CFRunLoopRef cfRunLoopRef );Параметры
selfУказатель на экземпляр SCSITaskDeviceInterface.
cfRunLoopRefCFRunLoop, к которому должны быть присоединены асинхронные уведомления об обратном вызове.
Возвращаемое значение
Возвраты kIOReturnSuccess в случае успеха, kIOReturnNoDevice, если нет никакого соединения с IOService или kIOReturnNoMemory, если порт Маха не мог бы быть выделен и инициализирован должным образом.
Обсуждение
Как только SCSITaskDeviceInterface открыт, клиент может выполнить синхронные или асинхронные запросы к устройству. Этот метод создает и инициализирует mach_port_t для получения асинхронных уведомлений об обратном вызове через механизм CFRunLoop.
-
Метод для создания SCSITasks.
Объявление
C++
SCSITaskInterface ** ( *CreateSCSITask )(void *self );Параметры
selfУказатель на экземпляр SCSITaskDeviceInterface.
Возвращаемое значение
Возвращает дескриптор экземпляру SCSITaskInterface или NULL, если нельзя было бы быть выделены.
Обсуждение
Как только SCSITaskDeviceInterface открыт, клиент может запросить эксклюзивный доступ к устройству. Как только клиент успешно получил эксклюзивный доступ, это становится Драйвером Логической единицы. Это тогда может использовать этот метод для выделения SCSITasks, который будет отправлен в устройство.
-
Метод, чтобы узнать, может ли устройство быть открыто исключительно вызывающей стороной.
Объявление
C++
Boolean ( *IsExclusiveAccessAvailable ) (void *self );Параметры
selfУказатель на экземпляр SCSITaskDeviceInterface.
Возвращаемое значение
Если устройство было открыто для эксклюзивного доступа, иначе истина, возвращает false.
Обсуждение
Метод, чтобы узнать, может ли устройство быть открыто исключительно вызывающей стороной.
-
Метод для получения эксклюзивного доступа к устройству так, чтобы SCSITasks мог быть отправлен в него.
Объявление
C++
IOReturn ( *ObtainExclusiveAccess ) (void *self );Параметры
selfУказатель на экземпляр SCSITaskDeviceInterface.
Возвращаемое значение
Возвраты kIOReturnSuccess, если эксклюзивный доступ был предоставлен, еще если носители все еще смонтирован, это возвращает kIOReturnBusy. Если у другого клиента уже есть эксклюзивный доступ, kIOReturnExclusiveAccess возвращается.
Обсуждение
Как только SCSITaskDeviceInterface открыт, клиент может запросить эксклюзивный доступ к устройству. Как только клиент успешно получил эксклюзивный доступ, это становится Драйвером Логической единицы, и все Драйверы Логической единицы в ядре замораживаются.
-
Метод для выпуска эксклюзивного доступа к устройству так, чтобы другие клиенты могли отправить команды в него.
Объявление
C++
IOReturn ( *ReleaseExclusiveAccess ) (void *self );Параметры
selfУказатель на экземпляр SCSITaskDeviceInterface.
Возвращаемое значение
Возвраты kIOReturnSuccess, если эксклюзивный доступ был выпущен, еще некоторая надлежащая ошибка.
Обсуждение
Как только SCSITaskDeviceInterface открыт, клиент может запросить эксклюзивный доступ к устройству. Как только клиент успешно получил эксклюзивный доступ, это становится Драйвером Логической единицы и всеми Драйверами Логической единицы в ядре (если кто-либо является соответствующим на устройстве), замораживаются. Этот метод выпускает этот доступ и не замораживает в драйверах ядра (если таковые имеются).
-
Удобный метод удалить асинхронные механизмы обратного вызова из CFRunLoop.
Объявление
C++
void ( *RemoveCallbackDispatcherFromRunLoop ) (void *self );Параметры
selfУказатель на экземпляр SCSITaskDeviceInterface.
Обсуждение
Как только SCSITaskDeviceInterface открыт, клиент может выполнить синхронные или асинхронные запросы к устройству. Этот метод удаляет асинхронные уведомления, поставленные через CFRunLoop. Это нужно вызвать только после вызова AddCallbackDispatcherToRunLoop.
