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

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

Разработчик

Ссылка класса IOSharedDataQueue

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

На этой странице
Язык:

IOSharedDataQueue

Универсальная очередь разработала для передачи данных и от ядра до пользовательского процесса и от пользовательского процесса до ядра.

Класс IOSharedDataQueue разработан, чтобы также позволить пользовательскому процессу ставить данные в очередь к коду ядра. Объекты IOSharedDataQueue разработаны, чтобы использоваться в единственном производителе / единственная потребительская ситуация. Также, существуют, не соединяет сами данные. Поскольку ядро ставит в очередь, и методы двухсторонней очереди пространства пользователя следуют за строгим набором инструкций, никакие блокировки не необходимы для поддержания целостности структуры данных.

Каждый ввод данных может быть переменный измеренный, но весь размер области данных очереди (включая издержки для каждой записи) должен быть указан передняя сторона.

Для экземпляра IODataQueue, чтобы уведомить пользовательский процесс, что данные доступны, уведомление, порт Маха должен быть установлен. Когда очередь пуста, и новая запись добавляется, сообщение отправляется в указанный порт.

Для предоставления доступа к памяти очереди данных доступной для пользовательского процесса, метод getMemoryDescriptor () должен использоваться для получения экземпляра IOMemoryDescriptor, который может быть отображен в пользовательский процесс. Как правило, clientMemoryForType () метод на экземпляре IOUserClient будет использоваться, чтобы запросить IOMemoryDescriptor и затем возвратить его, чтобы быть отображенным в пользовательский процесс.

Наследование


Не применимый

Соответствует


Не применимый

Оператор импорта


Не применимый

Objective C

@import Kernel;

Доступность


Доступный в OS X v10.5 и позже.
  • Исключает следующую доступную запись из очереди на очереди и копирует его в указатель определенных данных.

    Объявление

    C++

    virtual Boolean dequeue( void *data, UInt32 *dataSize);

    Параметры

    data

    Указатель на область памяти данных, в которой можно скопировать следующие данные записи по очереди. Если этот параметр будет 0 (NULL), то он просто переместится в следующую запись.

    dataSize

    Указатель на размер параметра данных. Даже если первоначальный размер не был достаточно большим, по возврату это содержит размер фактических данных записи-.

    Возвращаемое значение

    Возвращает true на успехе и ложь при отказе. Обычно отказ означает, что очередь пуста.

    Обсуждение

    Эта функция исключит следующую доступную запись из очереди на очереди. Если указатель данных будет предоставлен, то он скопирует данные в область памяти, если будет достаточно пространства, доступного, как указано в параметре размера данных. Если никакой указатель данных не будет предоставлен, то это просто переместит главное значение мимо текущей записи.

  • Возвращает дескриптор памяти, покрывающий область IODataQueueMemory.

    Объявление

    C++

    virtual IOMemoryDescriptor *getMemoryDescriptor();

    Возвращаемое значение

    Возвращает недавно выделенный IOMemoryDescriptor для области IODataQueueMemory. Возвраты обнуляют при отказе.

    Обсуждение

    Экземпляр IOMemoryDescriptor, возвращенный этим методом, предназначается, чтобы быть отображенным в пользовательский процесс. Это - область памяти, на которую воздействует код IODataQueueClient.

  • Инициализирует экземпляр IOSharedDataQueue со способностью, указанной в параметре размера.

    Объявление

    C++

    virtual Boolean initWithCapacity( UInt32size);

    Параметры

    size

    Размер области памяти очереди данных.

    Возвращаемое значение

    Возвращает true на успехе и ложь при отказе.

    Обсуждение

    Фактический размер всей области памяти очереди данных (чтобы быть совместно использованным в пользовательский процесс) равен способности плюс IODataQueueMemory наверху. Это служебное значение может быть определено от DATA_QUEUE_MEMORY_HEADER_SIZE и макроса DATA_QUEUE_MEMORY_APPENDIX_SIZE в <IOKit/IODataQueueShared.h>. Размер области памяти очереди данных должен включать пространство для издержек каждого IODataQueueEntry. Эта запись наверху может быть определена от макроса DATA_QUEUE_ENTRY_HEADER_SIZE в <IOKit/IODataQueueShared.h>.

  • Используемый для заглядывания на следующую запись на очереди.

    Объявление

    C++

    virtual IODataQueueEntry * peek();

    Возвращаемое значение

    Возвращает указатель на следующий IODataQueueEntry, если Вы доступны. Если очередь пуста, 0 (NULL) возвращается.

    Обсуждение

    Эта функция может использоваться для рассмотрения следующей записи, позволяющей записи быть полученной, не имея необходимость копировать ее с двухсторонней очередью. Чтобы сделать это, вызовите быстрый взгляд для получения записи. Тогда вызовите двухстороннюю очередь с указателем данных NULL. Это заставит голову быть перемещенной в следующую запись, но никакую память, которая будет скопирована.

  • Статический метод, создающий новый экземпляр IOSharedDataQueue со способностью, указанной в параметре размера.

    Объявление

    C++

    static IOSharedDataQueue *withCapacity( UInt32size);

    Параметры

    size

    Размер области памяти очереди данных.

    Возвращаемое значение

    Возвращает недавно выделенный экземпляр IOSharedDataQueue. Нуль возвращается при отказе.

    Обсуждение

    Фактический размер всей области памяти очереди данных (чтобы быть совместно использованным в пользовательский процесс) равен способности плюс IODataQueueMemory наверху. Это служебное значение может быть определено от макроса DATA_QUEUE_MEMORY_HEADER_SIZE в <IOKit/IODataQueueShared.h>. Размер области памяти очереди данных должен включать пространство для издержек каждого IODataQueueEntry. Эта запись наверху может быть определена от макроса DATA_QUEUE_ENTRY_HEADER_SIZE в <IOKit/IODataQueueShared.h>.

    Этот метод выделяет новый экземпляр IODataQueue и затем вызывает initWithCapacity () с данным параметром размера. Если initWithCapacity () сбои, новый экземпляр выпущен, и нуль возвращается.

  • Статический метод, создающий новый экземпляр IOSharedDataQueue с конкретным количеством записей данного размера.

    Объявление

    C++

    static IOSharedDataQueue *withEntries( UInt32numEntries, UInt32entrySize);

    Параметры

    numEntries

    Число записей для выделения площади для.

    entrySize

    Размер каждой записи.

    Возвращаемое значение

    Reeturns недавно выделенный экземпляр IOSharedDataQueue. Нуль возвращается при отказе.

    Обсуждение

    Этот метод создаст новый экземпляр IOSharedDataQueue с достаточной способностью к numEntries entrySize. Это действительно составляет IODataQueueEntry наверху для каждой записи. Обратите внимание на то, что numEntries и entrySize просто используются для определения размера области данных. Они фактически не ограничивают размер числа записей, которые могут быть добавлены к очереди.

    Этот метод выделяет новый экземпляр IODataQueue и затем вызывает initWithEntries () с данным numEntries и entrySize параметрами. Если initWithEntries () сбои, новый экземпляр выпущен, и нуль возвращается.

Переменные экземпляра

  • Зарезервированный для будущего использования. (Только внутреннее использование)

    Объявление

    C++

    ExpansionData * _reserved;

  • Зарезервированный для будущего использования. (Только внутреннее использование)

    Объявление

    C++

    ExpansionData * _reserved;