IONetworkData
Объект, управляющий фиксированным размером, названным буфером.
Объект IONetworkData управляет фиксированным размером, названным буфером. Этот объект обеспечивает внешние методы доступа, которые могут использоваться для доступа к содержанию буфера данных. Кроме того, сериализация поддерживается, и поэтому этот объект может быть добавлен к таблице свойства для публикации объекта данных. Уникальное имя должно быть присвоено объекту во время инициализации. Ключ OSSymbol будет создаваться на основе присвоенного имени, и этот ключ может использоваться, когда объект добавляется к словарю.
Когда объект инициализируется или изменяется позже путем вызова setAccessTypes (), уровень доступа, предоставленного к методам доступа, может быть ограничен путем указания ряда поддерживаемых типов доступа. По умолчанию каждый создаваемый объект IONetworkData будет поддерживать сериализацию и также позволит ее буферу данных быть считанным посредством чтения () метод доступа.
Обработчик уведомления доступа, в форме функции 'C', может быть зарегистрирован для приема вызова каждый раз, когда к буферу данных получают доступ через метод доступа. Параметры, предоставленные для обработчика, идентифицируют объект данных и тип доступа, инициировавшего уведомление. Обработчик может поэтому выполнить ленивое обновление буфера данных, пока заинтересованная сторона не пытается считать или сериализировать данные. Когда буферный тип установлен в kIONetworkDataBufferTypeNone, обработчик уведомления может также принять действие по умолчанию, выполняемое методами доступа. Это будет препятствовать методам доступа получить доступ к буферу данных и позволять обработчику переопределять протокол доступа.
Этот объект прежде всего используется IONetworkInterface для экспорта интерфейсных свойств в пространство пользователя.
Наследование
Не применимый
Соответствует
Не применимый
Оператор импорта
Не применимый
Objective C
@import Kernel;
Доступность
Доступный в OS X v10.6 и позже.
-
Очищается буфер данных путем заполнения его обнуляет.
Объявление
C++
virtual bool clearBuffer();
Возвращаемое значение
Если работа была успешной, ложной иначе, возвращает true.
-
Освобождает объект IONetworkData.
Объявление
C++
virtual void free();
-
Получает типы доступа к данным, поддерживаемого этим объектом.
Объявление
C++
virtual UInt32 getAccessTypes() const;
Возвращаемое значение
Возвращает маску поддерживаемых типов доступа.
-
Получает указатель на буфер данных.
Объявление
C++
virtual const void * getBuffer() const;
Возвращаемое значение
Возвращает указатель на буфер данных. Возвраты 0, если буферный тип является kIONetworkDataBufferTypeNone.
-
Получает тип буфера данных, которым управляет этот объект.
Объявление
C++
virtual UInt32 getBufferType() const;
Возвращаемое значение
Возвращает константу, описывающую тип буфера данных.
-
Получает уникальный ключ OSSymbol, связанный с этим объектом.
Объявление
C++
virtual const OSSymbol * getKey() const;
Возвращаемое значение
Возвращает ключ OSSymbol, сгенерированный с имени, присвоенного этому объекту.
Обсуждение
Во время инициализации IONetworkData создаст ключ OSSymbol на основе своего присвоенного имени.
-
Получает функцию C, зарегистрированную для обработки уведомлений доступа, отправленных от этого объекта.
Объявление
C++
virtual Action getNotificationAction() const;
Возвращаемое значение
Если уведомление отключено, возвращает указатель на функцию C, или 0.
-
Получает параметр, который будет передан обработчику уведомления доступа.
Объявление
C++
virtual void * getNotificationParameter() const;
Возвращаемое значение
Возвращает параметр, который будет передан обработчику уведомления доступа.
-
Получает первый параметр, который будет передан обработчику уведомления доступа.
Объявление
C++
virtual void * getNotificationTarget() const;
Возвращаемое значение
Возвращает первый параметр, который будет передан обработчику уведомления доступа.
-
Получает размер буфера данных.
Объявление
C++
virtual UInt32 getSize() const;
Возвращаемое значение
Возвращает размер буфера данных, которым управляет этот объект в байтах.
-
Инициализирует объект IONetworkData.
Объявление
C++
virtual bool init( const char *
name
, UInt32bufferType
, UInt32bufferSize
, void *externalBuffer = 0, UInt32 accessTypes = ( kIONetworkDataAccessTypeRead |kIONetworkDataAccessTypeSerialize
), void *target = 0, Action action = 0, void *param = 0);Параметры
name
Имя для присвоения к этому объекту.
bufferType
Тип буфера связался с этим объектом.
bufferSize
Размер буфера данных.
externalBuffer
Указатель на внешний буфер данных.
accessTypes
Начальная буква поддерживала типы доступа. Может быть позже изменен путем вызова setAccessTypes ().
target
Цель уведомления.
action
Действие уведомления.
param
Параметр для передачи действию уведомления.
Возвращаемое значение
Возвращает true, если инициализировано успешно, ложь иначе.
-
Метод доступа, читающий из буфера данных.
Объявление
C++
virtual IOReturn read( void *
dstBuffer
, UInt32 *dstBufferSize
, UInt32 readOffset = 0);Параметры
dstBuffer
Указатель на целевой буфер.
dstBufferSize
Указатель на целое число, содержащее размер целевого буфера. И перезаписывается этим методом к фактическому числу байтов, скопированных в целевой буфер.
readOffset
Смещение от запуска исходных данных буферизует, чтобы начать читать.
Возвращаемое значение
Возвраты kIOReturnSuccess на успехе, kIOReturnBadArgument, если какой-либо из предоставленных параметров недопустим, kIOReturnNotReadable, если доступ для чтения не разрешен, или ошибка от обработчика уведомления.
Обсуждение
Этот метод обрабатывает внешний запрос, чтобы читать из буфера данных и скопировать его в целевой буфер, предоставленный средством доступа. Если уведомление включено, то обработчик уведомления вызывают, прежде чем буфер данных копируется в целевой буфер. Обработчик уведомления может использовать эту возможность вмешаться и обновить содержание буфера данных.
-
Чтения от буфера данных и копий данные к целевому буферу, предоставленному вызывающей стороной.
Объявление
C++
virtual bool readBytes( void *
dstBuffer
, UInt32 *dstBufferSize
, UInt32 readOffset = 0) const;Параметры
dstBuffer
Указатель на целевой буфер.
dstBufferSize
Указатель на целое число, содержащее размер целевого буфера. И перезаписывается этим методом с фактическим числом байтов, скопированных в целевой буфер.
readOffset
Байтовое смещение от запуска буфера данных, чтобы начать читать.
Возвращаемое значение
Если работа была успешной, ложной иначе, возвращает true.
-
Метод доступа, сбрасывающий буфер данных.
Объявление
C++
virtual IOReturn reset();
Возвращаемое значение
Возвраты kIOReturnSuccess на успехе, kIOReturnNotWritable, если сброшенный доступ не разрешен, или ошибка от обработчика уведомления.
Обсуждение
Этот метод обрабатывает внешний запрос для сброса буфера данных. Если уведомление включено, то обработчик уведомления вызывают после того, как буфер данных был очищен.
-
Сериализирует объект IONetworkData.
Объявление
C++
virtual bool serialize( OSSerialize *
s
) const;Параметры
s
Объект OSSerialize.
Возвращаемое значение
Возвращает true на успехе, ложь иначе.
Обсуждение
Если уведомление включено, то обработчик уведомления вызывают непосредственно перед тем, как буфер данных сериализируется.
-
Устанавливает типы доступа, разрешенные на буфере данных.
Объявление
C++
virtual void setAccessTypes( UInt32
types
);Параметры
types
Маска типов доступа, указывающих поддерживаемые типы доступа.
-
Регистрирует функцию C для обработки уведомлений доступа, отправленных от этого объекта.
Объявление
C++
virtual void setNotificationTarget( void *
target
, Actionaction
, void *param = 0);Параметры
target
Первый параметр передал обработчику уведомления.
action
Указатель на функцию C, которая обработает уведомление. Если 0, то уведомление отключено.
param
Дополнительный параметр передал обработчику уведомления.
Обсуждение
Когда метод доступа вызывают для изменения содержания буфера данных, уведомление отправляется объектом IONetworkData в зарегистрированный обработчик уведомления.
-
Метод фабрики, создающий и инициализирующий объект IONetworkData с внешним буфером данных.
Объявление
C++
static IONetworkData * withExternalBuffer( const char *
name
, UInt32bufferSize
, void *externalBuffer
, UInt32 accessTypes = ( kIONetworkDataAccessTypeRead |kIONetworkDataAccessTypeSerialize
), void *target = 0, Action action = 0, void *param = 0);Параметры
name
Имя для присвоения к этому объекту.
bufferSize
Размер внешнего буфера данных.
externalBuffer
Указатель на внешний буфер данных.
accessTypes
Начальная буква поддерживала типы доступа.
target
Цель уведомления.
action
Действие уведомления.
param
Параметр для передачи действию уведомления.
Возвращаемое значение
Возвращает объект IONetworkData на успехе, или 0 иначе.
-
Метод фабрики, создающий и инициализирующий объект IONetworkData с внутренним буфером данных.
Объявление
C++
static IONetworkData * withInternalBuffer( const char *
name
, UInt32bufferSize
, UInt32 accessTypes = ( kIONetworkDataAccessTypeRead |kIONetworkDataAccessTypeSerialize
), void *target = 0, Action action = 0, void *param = 0);Параметры
name
Имя для присвоения к этому объекту.
bufferSize
Число байтов для выделения для внутреннего буфера данных.
accessTypes
Начальная буква поддерживала типы доступа.
target
Цель уведомления.
action
Действие уведомления.
param
Параметр для передачи действию уведомления.
Возвращаемое значение
Возвращает объект IONetworkData на успехе, или 0 иначе.
-
Метод фабрики, создающий и инициализирующий объект IONetworkData без буфера данных.
Объявление
C++
static IONetworkData * withNoBuffer( const char *
name
, UInt32bufferSize
, UInt32accessTypes
, void *target
, Actionaction
, void *param = 0);Параметры
name
Имя для присвоения к этому объекту.
bufferSize
Размер фантомного буфера данных.
accessTypes
Начальная буква поддерживала типы доступа.
target
Цель уведомления.
action
Действие уведомления.
param
Параметр для передачи действию уведомления.
Возвращаемое значение
Возвращает объект IONetworkData на успехе, или 0 иначе.
Обсуждение
Когда к IONetworkData получают доступ, обработчик уведомления должен вмешаться.
-
Метод доступа, пишущий в буфер данных.
Объявление
C++
virtual IOReturn write( void *
srcBuffer
, UInt32srcBufferSize
, UInt32 writeOffset = 0);Параметры
srcBuffer
Указатель на исходный буфер.
srcBufferSize
Число байтов для записи в буфер данных.
writeOffset
Смещение от запуска целевого буфера данных, чтобы начать писать.
Возвращаемое значение
Возвраты kIOReturnSuccess на успехе, kIOReturnBadArgument, если какой-либо из предоставленных параметров недопустим, kIOReturnNotWritable, если доступ для записи не разрешен, или ошибка от обработчика уведомления.
Обсуждение
Этот метод обрабатывает внешний запрос для записи в буфер данных от исходного буфера, предоставленного средством доступа. После проверки, что объект данных поддерживает доступ для записи, обновляется буфер данных, если это существует. Тогда зарегистрированный обработчик уведомления вызывают.
-
Записи к буферу данных с данными от исходного буфера, предоставленного вызывающей стороной.
Объявление
C++
virtual bool writeBytes( const void *
srcBuffer
, UInt32srcBufferSize
, UInt32 writeOffset = 0);Параметры
srcBuffer
Указатель на исходный буфер, предоставленный вызывающей стороной.
srcBufferSize
Размер исходного буфера.
writeOffset
Байтовое смещение от запуска буфера данных, чтобы начать писать.
Возвращаемое значение
Если работа была успешной, ложной иначе, возвращает true.
-
Определяет функцию C, которая может быть вызвана объектом IONetworkData, когда вызывают один из его методов доступа.
Объявление
C++
typedef IOReturn ( *Action)( void *target, void *param, IONetworkData *data, UInt32 accessType, void *buffer, UInt32 *bufferSize, UInt32 offset);
Параметры
target
Цель уведомления.
data
Объект IONetworkData, получаемый доступ, и отправитель уведомления.
accessType
Немного будет установлено, указывая тип доступа, инициировавшего уведомление.
buffer
Указатель на буфер средства доступа. Только допустимый для чтения () и запись () доступы.
bufferSize
Указатель на размер буфера средства доступа.
offset
Смещение от запуска буфера данных, чтобы начать читать или писать.
param
Параметр, который был предоставлен, когда был зарегистрирован обработчик уведомления.
Оператор импорта
Objective C
#include <IOCommandGate.h>;
Доступность
Доступный в OS X v10.0 через OS X v10.5.
-
Зарезервированный для будущего использования. (Только внутреннее использование)
Объявление
C++
ExpansionData * _reserved;
-
Зарезервированный для будущего использования. (Только внутреннее использование)
Объявление
C++
ExpansionData * _reserved;