IOStream
Класс, представляющий поток буферов данных, передал от ядра до пространства пользователя и назад снова.
Класс IOStream определяет механизм для движущихся буферов данных от пространства ядра до пространства пользователя или наоборот. Политика, для которой направление потоки данных и природа данных оставлено на виду лицо, осуществляющее внедрение драйвера, использующего IOStream.
Несмотря на то, что ожидается, что клиент IOStream будет в пространстве пользователя, это не требуется.
Ссылки, чтобы «вывести» среднее значение «от IOStream до пользовательского клиента» и «ввести» значат «от пользовательского клиента для IOStream».
Наследование
Не применимый
Соответствует
Не применимый
Оператор импорта
Не применимый
Objective C
@import Kernel;
Доступность
Доступный в OS X v10.5 и позже.
-
Возвращает режим потока, любого ввода или вывода.
Объявление
C++
virtual IOStreamMode getStreamMode(
void
);Возвращаемое значение
Режим потока, любой kIOStreamModeInput (от пространства пользователя до пространства ядра) или значение по умолчанию kIOStreamModeOutput (от ядра располагают с интервалами к пространству пользователя).
-
Устанавливает режим потока, любого ввода или вывода.
Объявление
C++
virtual IOReturn setStreamMode( IOStreamMode
mode
);Обсуждение
Подклассы могут определить, возможно ли изменить режим потока.
-
Начните отправлять данные по потоку.
Объявление
C++
virtual IOReturn startStream(
void
);Возвращаемое значение
Возвраты kIOReturnSuccess, если был успешно запущен поток.
Обсуждение
Это должно быть реализовано подклассом.
-
Прекратите отправлять данные по потоку.
Объявление
C++
virtual IOReturn stopStream(
void
);Возвращаемое значение
Возвраты kIOReturnSuccess, если был успешно остановлен поток.
Обсуждение
Это должно быть реализовано подклассом.
-
Временно приостановите поток данных на потоке.
Объявление
C++
virtual IOReturn suspendStream(
void
);Возвращаемое значение
Возвраты kIOReturnSuccess, если был успешно приостановлен поток.
Обсуждение
Это должно быть реализовано подклассом.
-
Объявление
C++
virtual IOReturn dequeueInputEntry( IOStreamBufferQueueEntry *
entry
);Параметры
entry
-
Удобный метод для постановки в очередь буфер.
Объявление
C++
virtual IOReturn enqueueOutputBuffer( IOStreamBuffer *
buffer
, IOByteCount dataOffset = 0, IOByteCount dataLength = 0, IOByteCount controlOffset = 0, IOByteCount controlLength = 0);Параметры
buffer
dataOffset
dataLength
controlOffset
controlLength
-
Объявление
C++
virtual IOReturn enqueueOutputEntry( IOStreamBufferQueueEntry *
entry
);Параметры
entry
-
handleClose метод уничтожает совместно используемые очереди ввода и вывода.
Объявление
C++
virtual void handleClose( IOService *
forClient
, IOOptionBitsoptions
);Параметры
options
-
handleOpen () метод полагается на поведение IOService по умолчанию гарантировать, что только у одного клиента есть поток, открытый за один раз. В открытое время создаются совместно используемые очереди ввода и вывода.
Объявление
C++
virtual bool handleOpen( IOService *
forClient
, IOOptionBitsoptions
, void *arg
);Параметры
options
arg
-
См. документацию для метода IOService newUserClient.
Объявление
C++
virtual IOReturn newUserClient( task_t
owningTask
, void *securityID
, UInt32type
, OSDictionary *properties
, IOUserClient **handler
);
-
Создает совместно используемые очереди ввода и вывода, вне зависимости от того, открыт ли поток или нет. Обычно это вызывает handleOpen ().
Объявление
C++
virtual IOReturn createQueues( IOItemCount queueLength = 0, IOOptionBits options = 0 );
Параметры
queueLength
options
Возвращаемое значение
Возвраты kIOReturnSuccess, если успешно создавались очереди.
-
Выпускает совместно используемые очереди ввода и вывода.
Объявление
C++
virtual IOReturn destroyQueues(
void
);Возвращаемое значение
Возвраты kIOReturnSuccess, если были успешно уничтожены очереди. В то время как поток открыт клиентом, очереди не могут быть уничтожены.
-
Объявление
C++
virtual IOStreamBufferQueue *getInputQueue(
void
);Возвращаемое значение
Указатель на ввод структура IOStreamBufferQueue для потока или NULL, если поток не открыт и очередь, еще не был создан.
-
Объявление
C++
virtual IOMemoryDescriptor *getInputQueueMemoryDescriptor(
void
);Возвращаемое значение
IOMemoryDescriptor возражает repesenting буфер входной очереди общей памяти.
-
Объявление
C++
virtual IOStreamBufferQueue *getOutputQueue(
void
);Возвращаемое значение
Указатель на структуру вывода IOStreamBufferQueue для потока или NULL, если поток не открыт и очередь, еще не был создан.
-
Объявление
C++
virtual IOMemoryDescriptor *getOutputQueueMemoryDescriptor(
void
);Возвращаемое значение
IOMemoryDescriptor возражает repesenting буфер очереди вывода общей памяти.
-
Введите функцию обратного вызова, которая будет реализована подклассом;
Объявление
C++
virtual void inputCallback( UInt32
token
);Параметры
token
32-разрядная символическая стоимость, которая может использоваться условно для передачи от пространства пользователя до потока. Семантика этого значения определяется подклассом IOStream.
Обсуждение
inputCallback () метод вызывают в результате быстрого прерывания от пространства пользователя. Это вызывают на том же потоке как пользовательский запрос, но подкласс должен реализовать этот вызов как уведомление, отправленное в workloop так, чтобы запрос был асинхронным.
-
Введите функцию обратного вызова, которая будет реализована подклассом.
Объявление
C++
virtual void inputSyncCallback( UInt32
token
);Параметры
token
32-разрядная символическая стоимость, которая может использоваться условно для передачи от пространства пользователя до потока. Семантика этого значения определяется подклассом IOStream.
Обсуждение
inputSyncCallback () метод вызывают в результате быстрого прерывания от пространства пользователя. Это вызывают на том же потоке как пользовательский запрос, таким образом, никакое контекстное переключение не необходимо.
-
Используйте порт Маха для получения уведомлений из пространства пользователя, что буфер был добавлен к входной очереди.
Объявление
C++
virtual mach_port_t getInputPort(
void
); -
Используйте порт Маха для отправки уведомлений пространству пользователя, что буфер был добавлен к очереди вывода.
Объявление
C++
virtual mach_port_t getOutputPort(
void
); -
Отправьте уведомление пользовательскому клиенту, что данные доступны для чтения на очереди вывода. Это приведет к выходному вызываемому обработчику пользователя, если они зарегистрировали тот.
Объявление
C++
virtual IOReturn sendOutputNotification(
void
);Возвращаемое значение
Возвраты kIOReturnSuccess, если было успешно отправлено уведомление.
-
Установите порт Маха, используемый для получения уведомлений из пространства пользователя, что буфер был добавлен к входной очереди.
Объявление
C++
virtual IOReturn setInputPort( mach_port_t
port
);Параметры
port
-
Установите порт Маха, используемый для отправки уведомлений пространству пользователя, что буфер был добавлен к очереди вывода.
Объявление
C++
virtual IOReturn setOutputPort( mach_port_t
port
);Параметры
port
-
Добавьте буфер к IOStream.
Объявление
C++
virtual IOReturn addBuffer( IOStreamBuffer *
buffer
);Параметры
buffer
Обсуждение
Добавляет IOStreamBuffer к IOStream. Это будет добавлено до конца буферного массива, таким образом, не изменится буферный ID существующих буферов.
-
Объявление
C++
virtual IOReturn addBuffers( OSArray *
buffers
);Параметры
buffers
-
Объявление
C++
virtual IOItemCount getBufferCount(
void
);Возвращаемое значение
Возвраты kIOReturnSuccess, если были успешно демонтированы все буферы. Буферы не могут быть демонтированы, в то время как поток открыт, поскольку это изменит буферный IDs существующих буферов.
-
Получите массив, содержащий все буферы в потоке.
Объявление
C++
virtual OSArray *getBuffers(
void
);Обсуждение
Возвращает OSArray, содержащий все буферы в потоке в порядке их буферного ID.
-
Объявление
C++
virtual IOStreamBuffer *getBufferWithID( IOStreamBufferID
bufferID
);Параметры
bufferID
ID буфера для получения.
Возвращаемое значение
Указатель на объект IOStreamBuffer или NULL, если буферный ID был недопустим для этого потока.
-
Объявление
C++
virtual IOReturn removeAllBuffers(
void
); -
Объявление
C++
virtual IOItemCount getBufferCount(
void
);Возвращаемое значение
Возвраты kIOReturnSuccess, если были успешно демонтированы все буферы. Буферы не могут быть демонтированы, в то время как поток открыт, поскольку это изменит буферный IDs существующих буферов.
-
Удаляет буфер из потока. Буферы не могут быть демонтированы, в то время как поток открыт, поскольку это изменит буферный IDs существующих буферов.
Объявление
C++
virtual IOReturn removeBuffer( IOStreamBuffer *
buffer
);Параметры
buffer
Указатель на IOStreamBuffer возражает в потоке.
Возвращаемое значение
Возвраты kIOReturnSuccess, если буфер был демонтирован, или kIOReturnNotFound, если буфер не был в этом потоке.
-
Удаляет буфер из потока. Буферы не могут быть демонтированы, в то время как поток открыт, поскольку это изменит буферный IDs существующих буферов.
Объявление
C++
virtual IOReturn removeBuffer( IOStreamBufferID
bufferID
);Параметры
bufferID
ID буфера для удаления.
Возвращаемое значение
Возвраты kIOReturnSuccess, если был демонтирован буфер.
-
Объявление
C++
virtual void free(
void
); -
Объявление
C++
virtual bool initWithBuffers( OSArray *
buffers
, IOStreamMode mode =kIOStreamModeOutput
, IOItemCount queueLength = 0, OSDictionary *properties = 0);Параметры
mode
Начальный режим потока, или вывод, ввод или ввод/вывод.
queueLength
nuber записей очереди для резервирования в очереди ввода и вывода. Нуль означает делать очереди достаточно многочисленными для размещения всех буферов сразу.
properties
Словарь свойств, которые будут установлены на потоке.
buffers
Массив объектов IOStreamBuffer, которые будут буферами для этого потока.
-
Объявление
C++
static IOStream *withBuffers( OSArray *
buffers
, IOStreamMode mode =kIOStreamModeOutput
, IOItemCount queueLength = 0, OSDictionary *properties = 0);Параметры
mode
Начальный режим потока, или вывод, ввод или ввод/вывод.
queueLength
nuber записей очереди для резервирования в очереди ввода и вывода. Нуль означает делать очереди достаточно многочисленными для размещения всех буферов сразу.
properties
Словарь свойств, которые будут установлены на потоке.
buffers
Массив объектов IOStreamBuffer, которые будут буферами для этого потока.