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

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

Разработчик

Ссылка класса IONetworkController

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

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

IONetworkController

Реализует платформу для универсального сетевого контроллера.

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

IONetworkController присоединяется к канальному уровню (DLIL) через объект IONetworkInterface. Объект контроллера без сопутствующего интерфейса не доступен для сетевой системы. Контроллер взаимодействует с DLIL вызывающими методами, определенными интерфейсным объектом. И с другой стороны, DLIL даст команды и пакеты к контроллеру через интерфейсный объект.

IONetworkController создаст IOCommandGate и присоединит этот источник события к объекту IOWorkLoop. Все команды, отправленные от интерфейсного объекта, обрабатываются через объект IOCommandGate, который сериализирует доступ к контроллеру. Исходящие пакеты, отправленные с интерфейса на контроллер, не имеют никакой неявной сериализации. Драйверы должны реализовать функцию вывода, которая ориентирована на многопотоковое исполнение, или используйте объект IOOutputQueue, который обеспечит модель сериализации.

Примечание: IONetworkController внутренне использует некоторые частные константы обмена сообщениями в sys_iokit | sub_iokit_networking диапазон, определенный в «IONetworkControllerPrivate.h». Если Вы создаете клиент для своего контроллера (например, IOUserClient), и он переопределяет IOService:: метод сообщения, Ваш клиент может получить эти сообщения. Это должно проигнорировать эти сообщения и передать их супер:: сообщение ()

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


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

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


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

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


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

Objective C

@import Kernel;

Доступность


Доступный в OS X v10.6 и позже.
  • Выделяет пакет с буфером данных, который больше, чем или равен указанному размеру.

    Объявление

    C++

    virtual mbuf_t allocatePacket( UInt32size);

    Параметры

    size

    Минимальный размер буфера данных для mbuf пакета выделяется.

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

    Если выделение перестало работать, возвращает mbuf пакет, или 0.

    Обсуждение

    Этот метод будет всегда возвращать единственный mbuf, если размер, который требуют (плюс дополнение выравнивания), не будет больше, чем MCLBYTES. Буфер данных для mbuf (или mbuf цепочка) возвратился, выровненный согласно ограничениям, о которых сообщает getPacketBufferConstraints (). Поля длины в каждом mbuf возвратились, установлены этим методом, таким образом позволив mbuf быть переданным непосредственно объекту IOMbufMemoryCursor для преобразования mbuf в рассеяние физического адреса - собирают список.

  • Присоединяет новый объект клиента IOKernelDebugger.

    Объявление

    C++

    virtual bool attachDebuggerClient( IOKernelDebugger **debuggerP);

    Параметры

    debuggerP

    Дескриптор, который возвратит новый создаваемый объект IOKernelDebugger.

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

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

    Обсуждение

    Этот метод выделяет объект IOKernelDebugger и присоединяет его как клиент. Наличие клиента отладчика подразумевает, что контроллер поддерживает отладку ядра, и поэтому должен реализовать два метода опрошенного режима, которые вызывает клиент отладчика. См. sendPacket () и receivePacket (). Только единственный клиент отладчика должен быть привязан к каждому контроллеру.

  • Присоединяет новый объект клиента сетевого интерфейса.

    Объявление

    C++

    virtual bool attachInterface( IONetworkInterface **interface, bool doRegister = true);

    Параметры

    interface

    На успех (возвращаемое значение true), указатель на интерфейсный объект будет записан в предоставленный параметр.

    doRegister

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

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

    Возвраты true на успехе, false иначе.

    Обсуждение

    Этот метод создает новый объект сетевого интерфейса и присоединяет его как клиент контроллера. createInterface() метод используется, чтобы выделить и инициализировать интерфейс, сопровождаемый вызовом к configureInterface() сконфигурировать интерфейс. Подклассы могут переопределить те два метода для настройки нового интерфейсного объекта. Перед этим методом возвраты, registerService() вызывается в интерфейсе, чтобы начать соответствовать, который в конечном счете присоединит интерфейс к сетевому стеку. Драйверы будут обычно вызывать этот метод от их start() метод после того, как они готовы обработать интерфейсные запросы. Это имеет желательный эффект предотвращения busyState в корне IOService от становления нулем, прежде чем интерфейсный объект завершил соответствие, тогда удерживающее пользовательский процесс, ожидающий Набора I/O для становления тихим прежде, чем присвоить имена BSD ко всем интерфейсам. Драйверы, которые неспособны инициировать интерфейс, соответствующий синхронно от их start() метод должен вместо этого вызвать adjustBusy вручную постепенно увеличиваться busyState, тогда сопровождаемый a busyState декремент после присоединения и регистрации интерфейса, или после разумного тайм-аута.

  • Конфигурирует недавно создаваемый объект сетевого интерфейса.

    Объявление

    C++

    virtual bool configureInterface( IONetworkInterface *interface);

    Параметры

    interface

    Интерфейсный объект, который будет сконфигурирован.

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

    Возвращает true, если работа была успешной, ложной иначе (это заставит attachInterface () перестать работать и возвратиться 0).

    Обсуждение

    Этот метод конфигурирует интерфейсный объект, создававшийся createInterface (). Подклассы могут переопределить этот метод, чтобы настроить и исследовать интерфейсный объект, который будет присоединен к контроллеру как к клиенту.

  • Возвращает копию среднего словаря, опубликованного драйвером.

    Объявление

    C++

    virtual OSDictionary * copyMediumDictionary() const;

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

    Если драйвер не опубликовал средний словарь через publishMediumDictionary (), возвращает копию среднего словаря, или 0.

    Обсуждение

    Вызывающая сторона ответственна за выпуск возвращенного объекта словаря. Используйте getMediumDictionary () для получения ссылки на опубликованный средний словарь вместо того, чтобы создать копию.

  • Выделяет новый пакет, содержа данные, скопированные с существующего пакета источника.

    Объявление

    C++

    virtual mbuf_t copyPacket( const mbuf_t m, UInt32 size = 0);

    Параметры

    m

    Пакет источника.

    size

    Число байтов для копирования. Если установлено в 0, то весь буфер данных от пакета источника копируется.

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

    Возвращает новый пакет, содержащий те же данные как пакет источника.

    Обсуждение

    Пакет источника не изменяется этим методом.

  • Создает новый объект сетевого интерфейса.

    Объявление

    C++

    virtual IONetworkInterface * createInterface() = 0;

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

    Возвращает недавно выделенный и инициализированный интерфейсный объект.

    Обсуждение

    Этот метод вызывает attachInterface () для выполнения выделения и инициализации нового интерфейсного объекта. Подкласс IONetworkController должен реализовать этот метод и возвратить соответствующий интерфейсный объект. Например, когда createInterface () вызовут, реализация IOEthernetController возвратит объект IOEthernetInterface.

  • Создает IOOutputQueue, чтобы обработать организацию очередей исходящего пакета, и также разрешить конкуренцию для передатчика контроллера от многократных клиентских потоков.

    Объявление

    C++

    virtual IOOutputQueue * createOutputQueue();

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

    Возвращает недавно выделенный и инициализированный объект IOOutputQueue.

    Обсуждение

    Этот метод вызывает запуск () для создания объекта IOOutputQueue обработать организацию очередей исходящего пакета. Реализация по умолчанию будет всегда возвращаться 0, следовательно никакая очередь вывода не будет создаваться. Драйвер может переопределить этот метод и возвратить подкласс IOOutputQueue. Когда IONetworkController будет освобожден, IONetworkController сохранит ссылку на очередь создаваемой и выпустит этот объект. Также см. getOutputQueue ().

  • Метод, вызванный IONetworkController до начальной буквы getWorkLoop () вызов.

    Объявление

    C++

    virtual bool createWorkLoop();

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

    Возвращает true для указания успеха, ложь иначе. Возвращение false приведет IONetworkController к сбою:: запустите ().

    Обсуждение

    Прежде чем IONetworkController вызывает getWorkLoop () в его запуске () метод, это вызовет createWorkLoop (), чтобы удостовериться, что подкласс, хотящий создать workloop, сделает так перед его первым использованием.

  • Отсоединяет объект клиента IOKernelDebugger.

    Объявление

    C++

    virtual void detachDebuggerClient( IOKernelDebugger *debugger);

    Параметры

    debugger

    IOKernelDebugger возражают, чтобы быть отсоединенными и завершенными. Если предоставленный параметр будет NULL или не будет IOKernelDebugger, то этот метод сразу возвратится.

    Обсуждение

    Этот метод отсоединяет и завершает предоставленный объект клиента IOKernelDebugger. Выпущено синхронное завершение, и этот метод возвратится после того, как клиент отладчика был завершен. Клиент отладчика должен быть выпущен после этого вызова.

  • Отсоединяет интерфейсный объект клиента.

    Объявление

    C++

    virtual void detachInterface( IONetworkInterface *interface, bool sync = false);

    Параметры

    interface

    Интерфейсный объект, который будет отсоединен и завершен.

    sync

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

    Обсуждение

    Этот метод проверит, что предоставленный объект является действительно экземпляром IONetworkInterface, и затем вызовите его оконечное () метод. Обратите внимание на то, что интерфейсный объект закроется и отсоединится от его контроллера после того, как канальный уровень удалит все ссылки на все структуры данных, представленные интерфейсом. Интерфейсный объект должен быть выпущен после этого вызова.

  • Запрещать запрос от клиента IOKernelDebugger.

    Объявление

    C++

    virtual IOReturn disable( IOKernelDebugger *debugger);

    Параметры

    debugger

    Клиент IOKernelDebugger, запрашивающий запрещение.

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

    Возвраты kIOReturnSuccess. Драйверы должны возвратить kIOReturnSuccess на успехе или ошибку иначе.

    Обсуждение

    Драйверы, предоставляющие поддержку отладки, могут или переопределить этот метод для отключения поддержки опрошенного режима, отправляют и получают методы или переопределяют основу, включают () и отключают () методы, берущие параметр IOService.

  • Запрос от интерфейсного клиента для отключения контроллера.

    Объявление

    C++

    virtual IOReturn disable( IONetworkInterface *interface);

    Параметры

    interface

    Интерфейсный объект, запросивший запрещение.

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

    kIOReturnUnsupported. Драйверы, переопределяющие этот метод, должны возвратить Возвраты kIOReturnSuccess на успехе или коде ошибки иначе.

    Обсуждение

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

  • Дескрипторы запрещать запрос от клиента.

    Объявление

    C++

    virtual IOReturn disable( IOService *client);

    Параметры

    client

    Объект клиента, запрашивающий запрещение.

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

    Возвращается возврат из перегруженного отключают () метод или kIOReturnBadArgument, если клиентский тип неизвестен.

    Обсуждение

    Этот метод обрабатывает запрещать запрос от клиента. Клиент вызовет, отключают, если это ранее включило контроллер, и это больше не должно транспортировать пакеты или выполнять I/O с помощью контроллера. Объект клиента преобразован тип с помощью OSDynamicCast, и в зависимости от того, является ли клиентом IOKernelDebugger или IONetworkInterface, тогда перегруженное отключает метод, берущий более определенный тип аргумента, вызывается. Если клиент не соответствует никакой тип, то kIOReturnBadArgument возвращается. Драйвер имеет опцию переопределения этой основы, отключают метод или перегруженную форму. Этот вызов метода синхронизируется логическим элементом workloop.

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

    Объявление

    C++

    virtual IOReturn disablePacketFilter( const OSSymbol *group, UInt32 aFilter, UInt32 enabledFilters, IOOptionBits options = 0) = 0;

    Параметры

    group

    Имя группы фильтра, содержащей фильтр, который будет отключен.

    aFilter

    Фильтр для отключения.

    enabledFilters

    Все фильтры в настоящее время включены клиентом.

    options

    Дополнительные флаги для запрещать запроса.

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

    Возвраты kIOReturnSuccess на успехе или ошибке иначе.

    Обсуждение

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

  • Выполняет синхронизируемый вызов для отключения () через executeCommand ().

    Объявление

    C++

    virtual IOReturn doDisable( IOService *client);

    Обсуждение

    Не используйте этот метод, он может быть удален в будущем. Посмотрите отключают ().

  • Выполняет синхронизируемый вызов для включения () через executeCommand ().

    Объявление

    C++

    virtual IOReturn doEnable( IOService *client);

    Обсуждение

    Не используйте этот метод, он может быть удален в будущем. Посмотрите включают ().

  • Разрешать запрос от клиента IOKernelDebugger.

    Объявление

    C++

    virtual IOReturn enable( IOKernelDebugger *debugger);

    Параметры

    debugger

    Клиент IOKernelDebugger, запрашивающий разрешение.

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

    Возвраты kIOReturnSuccess. Драйверы должны возвратить kIOReturnSuccess на успехе или ошибку иначе.

    Обсуждение

    Драйверы, предоставляющие поддержку отладки, могут или переопределить этот метод и установить аппаратные средства для поддержки опрошенного режима, отправляют и получают методы, receivePacket () и sendPacket (), или переопределяют основу, включают () и отключают () методы, берущие параметр IOService.

  • Запрос от интерфейсного клиента для включения контроллера.

    Объявление

    C++

    virtual IOReturn enable( IONetworkInterface *interface);

    Параметры

    interface

    Интерфейсный объект клиента, запросивший разрешение.

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

    Возвраты kIOReturnUnsupported. Драйверы, переопределяющие этот метод, должны возвратить kIOReturnSuccess на успехе или код ошибки иначе.

    Обсуждение

    Этот метод вызывает интерфейсный клиент для включения контроллера. После получения этой команды драйвер контроллера должен перевести аппаратные средства в рабочее состояние и стать готовым передать и получить пакеты. Драйвер должен также задержать выделение большинства ресурсов во время выполнения, пока этот метод не вызывают для сохранения системных ресурсов. Этот вызов метода синхронизируется логическим элементом workloop.

  • Дескрипторы разрешать запрос от клиента.

    Объявление

    C++

    virtual IOReturn enable( IOService *client);

    Параметры

    client

    Объект клиента, запрашивающий разрешение.

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

    Возвращается возвращаемое значение от перегруженного включают () метод или kIOReturnBadArgument, если клиентский тип неизвестен.

    Обсуждение

    Этот метод обрабатывает разрешать запрос от клиента. Клиент вызовет, включают после того, как это открыло контроллер, и прежде чем это начнет использовать контроллер, чтобы отправить и получить пакеты по сети. Предоставленный объект клиента преобразован тип с помощью OSDynamicCast, и в зависимости от того, является ли клиентом IOKernelDebugger или IONetworkInterface, тогда перегруженное включает метод, берущий более определенный тип аргумента, вызывается. Если клиент не соответствует никакой тип, то kIOReturnBadArgument возвращается. Драйвер имеет опцию переопределения этой основы, включают метод или перегруженную форму. Этот вызов метода синхронизируется логическим элементом workloop.

  • Включает один из поддерживаемых фильтров пакетов от данной группы фильтра.

    Объявление

    C++

    virtual IOReturn enablePacketFilter( const OSSymbol *group, UInt32 aFilter, UInt32 enabledFilters, IOOptionBits options = 0) = 0;

    Параметры

    group

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

    aFilter

    Фильтр для включения.

    enabledFilters

    Все фильтры в настоящее время включены клиентом.

    options

    Дополнительные флаги для разрешать запроса.

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

    Возвраты kIOReturnSuccess на успехе или ошибке иначе.

    Обсуждение

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

  • Делает вызов функции C через логический элемент команды.

    Объявление

    C++

    virtual IOReturn executeCommand( OSObject *client, Action action, void *target, void *param0 = 0, void *param1 = 0, void *param2 = 0, void *param3 = 0);

    Параметры

    client

    Клиент, запрашивающий действие. Этот параметр не передается функции.

    action

    Указатель на C функционирует, чтобы быть выполненным.

    target

    Первый параметр в выноске действия.

    param0

    Параметр действия 0.

    param1

    Параметр действия 1.

    param2

    Параметр действия 2.

    param3

    Параметр действия 3.

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

    Возвращает значение, возвращенное действием.

    Обсуждение

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

  • Освобождает объект IONetworkController.

    Объявление

    C++

    virtual void free();

    Обсуждение

    Освобождает объект IONetworkController путем высвобождения всех выделенных средств, сопровождаемых вызовом к супер:: свободный ().

  • Выпускает пакет, отданный к свободному пулу.

    Объявление

    C++

    virtual void freePacket( mbuf_t, IOOptionBits options = 0);

    Параметры

    mbuf_t

    Пакет, который будет освобожден.

    options

    Когда kDelayFree опция будет установлена, тогда пакет, предоставленный для этой функции, будет поставлен в очередь на свободной очереди пакетов. Последующий вызов к releaseFreePackets () выпустит все пакеты с очередями путем создания единственного вызова функции BSD. Без kDelayFree опции предоставленный пакет будет сразу выпущен.

  • Выбирает требование об аппаратном вычислении контрольной суммы и вставку для данного пакета, прежде чем это будет передано в сети.

    Объявление

    C++

    virtual void getChecksumDemand( const mbuf_t packet, UInt32 checksumFamily, UInt32 *demandMask, void *param0 = 0, void *param1 = 0 );

    Параметры

    packet

    mbuf, содержащий пакет, который может пропускать одну или более контрольных сумм в указанной семье контрольной суммы.

    checksumFamily

    Значение, указывающее семью контрольной суммы.

    demandMask

    Маска всех контрольных сумм, которые аппаратные средства должны вычислить и вставить в надлежащие поля контрольной суммы в пакет.

    param0

    Дополнительный параметр 0, значения по умолчанию к 0.

    param1

    Дополнительный параметр 1, значения по умолчанию к 0.

    Обсуждение

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

  • Получает контрольные суммы, поддерживающиеся сетевым контроллером для данной семьи контрольной суммы.

    Объявление

    C++

    virtual IOReturn getChecksumSupport( UInt32 *checksumMask, UInt32checksumFamily, boolisOutput );

    Параметры

    checksumMask

    Указатель на маску поддерживаемых контрольных сумм, возвращенных этим методом.

    checksumFamily

    Значение, указывающее семью контрольной суммы.

    isOutput

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

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

    Возврат по умолчанию является kIOReturnUnsupported. Контроллеры, переопределяющие этот метод, должны возвратить kIOReturnSuccess. Любое другое возвращаемое значение будет interpretated, когда отсутствие поддержки контрольной суммы, независимо от значения возвратилось через первый параметр.

    Обсуждение

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

  • Получает объект клиента команды.

    Объявление

    C++

    virtual OSObject * getCommandClient() const;

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

    Возвращает клиент команды. Если вызывающая сторона не работает на потоке workloop, или если потоку не закрывали логический элемент workloop, то 0 возвращается.

    Обсуждение

    Методы обратились к workloop контексту с просьбой обслуживать клиентский запрос, может вызвать этот метод для получения объекта клиента, инициировавшего команду.

  • Создали объект IOCommandGate IONetworkController.

    Объявление

    C++

    virtual IOCommandGate * getCommandGate() const;

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

    Возвращает объект IOCommandGate, создаваемый IONetworkController.

    Обсуждение

    Когда IONetworkController запускается, объект IOCommandGate инстанцируют и присоединяют к workloop, возвращенному getWorkLoop (). Этот объект IOCommandGate используется внутренне для синхронизации клиентских команд, обработанных через executeCommand (). Подклассы, которым нужен IOCommandGate, должны попытаться снова использовать объект, возвращенный этим методом, вместо того, чтобы создать новый экземпляр. См. документацию IOCommandGate.

  • Обработчик состояния канала опрошенного режима отладчика.

    Объявление

    C++

    virtual UInt32 getDebuggerLinkStatus( void);

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

    Биты состояния канала. Посмотрите IONetworkMedium для определения битов состояния канала.

    Обсуждение

    Этот метод должен быть реализован драйвером, хотящим поддерживать раннюю отладку ядра доступности. После того, как клиент отладчика был присоединен через attachDebuggerClient (), этот метод вызовет отладчик для опроса относительно доступности состояния канала только, когда отладчик ядра будет активен. Этот метод можно вызвать от основного контекста прерывания. В результате реализация должна избежать любого выделения памяти, не используют спин-блокировки, и никогда не блокируют.

    getDebuggerLinkStatus () метод в IONetworkController используется в качестве заполнителя и всегда сообщает, что произошла ссылка. Драйвер, присоединяющий клиент отладчика, должен переопределить этот метод. Драйвер должен сделать любую установку, требуемую удостоверяться, что ссылка доступна для использования. До отправки или получения данных, KDP будет неоднократно вызывать эту функцию, пока это не укажет, что ссылка и допустима и активна (kIONetworkLinkValid | kIONetworkLinkActive).

  • Отчеты универсальные функции, поддерживавшие контроллером и/или драйвером.

    Объявление

    C++

    virtual UInt32 getFeatures() const;

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

    Этот метод будет всегда возвращаться 0. Подклассы могут переопределить этот метод и возвратить немного маски всех поддерживавших функций.

  • Получает постоянный адрес аппаратных средств/станции сетевого контроллера.

    Объявление

    C++

    virtual IOReturn getHardwareAddress( void *addr, UInt32 *inOutAddrBytes) = 0;

    Параметры

    addr

    Буфер, где должен быть сохранен аппаратный адрес контроллера.

    inOutAddrBytes

    Размер буфера адресов, предоставленного клиентом и замененного этим методом фактическим размером аппаратного адреса в байтах.

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

    Возвраты kIOReturnSuccess на успехе или ошибке иначе.

    Обсуждение

    Этот вызов метода синхронизируется логическим элементом workloop.

  • Поддерживали максимальный размер пакета контроллером.

    Объявление

    C++

    virtual IOReturn getMaxPacketSize( UInt32 *maxSize) const = 0;

    Параметры

    maxSize

    Указатель на возвращаемое значение.

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

    Возвраты kIOReturnSuccess на успехе или коде ошибки иначе.

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

    Объявление

    C++

    virtual const OSDictionary * getMediumDictionary() const;

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

    Если драйвер еще не опубликовал средний словарь через publishMediumDictionary (), возвращает опубликованный средний словарь, или 0.

    Обсуждение

    Возвращает средний словарь, опубликованный драйвером через publishMediumDictionary (). Используйте copyMediumDictionary (), чтобы создать и получить копию среднего словаря.

  • Поддерживали минимальный размер пакета контроллером.

    Объявление

    C++

    virtual IOReturn getMinPacketSize( UInt32 *minSize) const = 0;

    Параметры

    minSize

    Указатель на возвращаемое значение.

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

    Возвраты kIOReturnSuccess на успехе или коде ошибки иначе.

  • Получает адрес метода, определяемого для обработки исходящих пакетов для сетевого контроллера.

    Объявление

    C++

    virtual IOOutputAction getOutputHandler() const;

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

    Возвращает указатель на outputPacket () метод.

  • Создали объект IOOutputQueue createOutputQueue ().

    Объявление

    C++

    virtual IOOutputQueue * getOutputQueue() const;

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

    Возвращает ссылку на объект очереди вывода, создаваемый createOutputQueue ().

  • Получает ограничения буфера пакетов контроллера.

    Объявление

    C++

    virtual void getPacketBufferConstraints( IOPacketBufferConstraints *constraints) const;

    Параметры

    constraints

    Указатель на структуру IOPacketBufferConstraints, которую этот метод, как ожидают, инициализирует. См. определение структуры IOPacketBufferConstraints.

    Обсуждение

    Вызванный запуском () для получения ограничений на буфер памяти для каждого mbuf пакета, выделенного через allocatePacket (). Драйверы могут переопределить этот метод для указания буферных ограничений, наложенных их аппаратными средствами устройства управления шиной. Обратите внимание на то, что исходящие пакеты, те, которые происходят из сетевого стека, в настоящее время не подвергаются ограничениям, сообщил здесь.

  • Получает набор фильтров пакетов, поддерживаемых сетевым контроллером для данной группы фильтра.

    Объявление

    C++

    virtual IOReturn getPacketFilters( const OSSymbol *group, UInt32 *filters) const = 0;

    Параметры

    group

    Имя группы фильтра.

    filters

    Указатель на маску поддерживаемых фильтров, возвращенных этим методом.

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

    Возвраты kIOReturnSuccess на успехе или ошибке указать отказ обнаружить набор поддерживаемых фильтров.

    Обсуждение

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

  • Получает текущий выбранный носитель.

    Объявление

    C++

    virtual const IONetworkMedium * getSelectedMedium() const;

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

    Возвращает текущий выбранный носитель, носитель по умолчанию, или 0.

    Обсуждение

    Если драйвер ранее вызвал setSelectedMedium () для указания его текущего выбора носителей, то этот метод возвратит тот средний объект. Иначе, с водительской таблицей свойства консультируются, и исследовано среднее свойство по умолчанию, и соответствующая запись в среднем словаре возвращается.

  • Обрабатывает клиент близко.

    Объявление

    C++

    virtual void handleClose( IOService *client, IOOptionBitsoptions);

    Параметры

    client

    Клиент, закрывающий контроллер.

    options

    Не используемый. См. IOService.

    Обсуждение

    Этот метод обрабатывает завершение от одного из объектов клиента. IOService вызывает этот метод с арбитражной сохраненной блокировкой. Подклассы не должны переопределять этот метод.

  • Запросы, есть ли у клиента открытое на контроллере.

    Объявление

    C++

    virtual bool handleIsOpen( const IOService *client) const;

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

    Возвращает true, если у указанного клиента или какого-либо клиента, если ни один (0) не указан, в настоящее время есть открытое на этом объекте.

    Обсуждение

    Этот метод всегда вызывает IOService с арбитражной сохраненной блокировкой. Подклассы не должны переопределять этот метод.

  • Обрабатывает открытый клиент.

    Объявление

    C++

    virtual bool handleOpen( IOService *client, IOOptionBitsoptions, void *argument);

    Параметры

    client

    Клиент, пытающийся открыть контроллер.

    options

    Не используемый. См. IOService.

    argument

    Не используемый. См. IOService.

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

    Возвращает true, чтобы принять, что клиент, открытый, ложный, отказывается от него.

    Обсуждение

    Этот метод обрабатывает клиент, открытый на объекте контроллера. IOService вызывает этот метод с арбитражной сохраненной блокировкой. Подклассы не должны переопределять этот метод.

  • Инициализирует объект IONetworkController.

    Объявление

    C++

    virtual bool init( OSDictionary *properties);

    Параметры

    properties

    Объект словаря, содержащий таблицу свойства, связался с этим экземпляром.

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

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

    Обсуждение

    Переменные экземпляра инициализируются, тогда супер:: init () вызывают.

  • Получает сообщения, освобожденные от присоединенного провайдера.

    Объявление

    C++

    virtual IOReturn message( UInt32type, IOService *provider, void *argument );

    Параметры

    type

    Тип, определенный в IOMessage.h.

    provider

    Провайдер, из которого происходит сообщение.

    argument

    Параметр определяется типом сообщения.

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

    Код IOReturn определяется типом сообщения.

    Обсуждение

    Дескрипторы kIOMessageDeviceSignaledWakeup сообщение от провайдера, идентифицирующего IONetworkController как источник пробуждения.

  • Объявление

    C++

    virtual const OSString * newModelString() const;

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

    Возвращает строку, описывающую модель сетевого контроллера. Вызывающая сторона ответственна за выпуск строкового возвращенного объекта.

  • Объявление

    C++

    virtual const OSString * newRevisionString() const;

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

    Возвращает строку, описывающую версию оборудования сетевого контроллера. Вызывающая сторона ответственна за выпуск строкового возвращенного объекта.

  • Объявление

    C++

    virtual const OSString * newVendorString() const;

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

    Возвращает строку, описывающую поставщика сетевого контроллера. Вызывающая сторона ответственна за выпуск строкового возвращенного объекта.

  • Передает исходящий пакет.

    Объявление

    C++

    virtual UInt32 outputPacket( mbuf_t, void *param);

    Параметры

    mbuf_t

    mbuf цепочка, содержащая исходящий пакет, который будет отправлен в сети.

    param

    Параметр, предоставленный вызывающей стороной.

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

    Возвращает код возврата, определенный вызывающей стороной.

    Обсуждение

    Если IOOutputQueue создавался createOutputQueue (), то этот метод вызовет объект очереди вывода. Иначе, интерфейсный объект вызовет этот метод непосредственно, когда это получит исходящий пакет от канального уровня.

    Нет никакого верхнего предела числа mbufs, следовательно число фрагментов памяти, в mbuf предоставленной цепочке. Когда количество mbuf могло бы превысить предел, поддерживаемый их механизмами DMA, и выполнить объединение для копирования различных фрагментов памяти в меньшее число фрагментов, драйверы должны быть в состоянии обработать случаи. Эта сложность может быть скрыта от драйвера, когда IOMbufMemoryCursor используется, который в состоянии преобразовать mbuf цепочку в рассеяние физического адреса - собирают список, который не превысит конкретное количество физически непрерывных сегментов памяти. Посмотрите IOMbufMemoryCursor.

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

  • Подготавливает контроллер, прежде чем IOService будет создан и присоединен как клиент.

    Объявление

    C++

    virtual IOReturn prepare();

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

    Возвраты kIOReturnSuccess на успехе или коде ошибки иначе. Возврат ошибки приведет клиентское присоединение к сбою.

    Обсуждение

    Этот метод вызывает attachInterface () или attachDebuggerClient () для подготовки контроллера, прежде чем будет присоединен новый объект клиента. Этот метод вызовет publishProperties () для публикации возможностей контроллера и свойств, которые могут использоваться объектами клиента. Однако publishProperties () вызовут только один раз, даже если подготовятся (), вызывается многократно. Этот вызов метода синхронизируется логическим элементом workloop.

  • Публикует словарь объектов IONetworkMedium распространить выбор носителей, поддерживаемый сетевым контроллером.

    Объявление

    C++

    virtual bool publishMediumDictionary( const OSDictionary *mediumDict);

    Параметры

    mediumDict

    Словарь объектов IONetworkMedium.

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

    Если словарь допустим, и успешно экспортировался в таблицу свойства, ложь иначе, возвращает true.

    Обсуждение

    Вызванный драйверами для публикации их среднего словаря. Каждая запись в словаре является объектом IONetworkMedium, представляющим единственный носитель, поддерживающийся контроллером. Этот метод заставит копию словаря если, затем добавить копию к водительской таблице свойства. Предоставленный словарь может быть выпущен вызывающей стороной после возврата из этого метода. Допустимо вызвать этот метод многократно, который может быть необходимым, если возможность носителей аппаратных средств изменяется динамично. Однако, если возможность будет статична, который часто имеет место, тогда то драйвер будет обычно вызывать этот метод только один раз от его запуска () метод.

    Несколько методов зависят от присутствия среднего словаря. Их нужно вызвать после того, как средний словарь был опубликован. Те методы: setSelectedMedium () getSelectedMedium () getMediumDictionary () copyMediumDictionary ()

  • Публикует свойства контроллера и возможности.

    Объявление

    C++

    virtual bool publishProperties();

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

    Если все свойства были обнаружены и опубликованы успешно, ложь иначе, возвращает true. Возвращение false будет препятствовать тому, чтобы объекты клиента присоединили к контроллеру, так как свойство, на которое полагается клиент, может отсутствовать.

    Обсуждение

    Вызванный IONetworkController, чтобы обнаружить свойства контроллера и опубликовать их к таблице свойства в Реестре Набора I/O. Этот метод вызывают, как только подготавливаются ().

  • Опрошенный режим отладчика получает обработчик.

    Объявление

    C++

    virtual void receivePacket( void *pkt, UInt32 *pktSize, UInt32timeout);

    Параметры

    pkt

    Адрес получить буфера, где должен быть сохранен полученный пакет. Этот буфер имеет пространство для 1 518 байтов.

    pktSize

    Адрес, где должно быть зарегистрировано число полученных байтов. Обнулите это, если никакие пакеты не были получены во время интервала тайм-аута.

    timeout

    Максимальная сумма времени в миллисекундах для опроса относительно пакета для поступления перед этим методом должна возвратиться.

    Обсуждение

    Этот метод должен быть реализован драйвером, поддерживающим отладку ядра. После того, как клиент отладчика был присоединен через attachDebuggerClient (), этот метод вызовет клиент отладчика для опроса относительно входящего пакета, когда отладчик ядра будет активен. Этот метод можно вызвать от основного контекста прерывания, и реализация должна избежать любого выделения памяти и никогда не должна блокировать. receivePacket () метод в IONetworkController используется в качестве заполнителя, это не выполняет полезного действия и не должно быть вызвано. Драйвер, присоединяющий клиент отладчика, должен переопределить этот метод.

  • Реализованный драйверами контроллера для регистрации во влиятельном политике управления питанием.

    Объявление

    C++

    virtual IOReturn registerWithPolicyMaker( IOService *policyMaker);

    Параметры

    policyMaker

    Влиятельный политик, выбранный для управления питанием для этого сетевого контроллера.

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

    Возвраты kIOReturnSuccess на успехе, kIOReturnUnsupported, если драйвер не поддерживает управление питанием или надлежащий ошибочный код возврата. Возврат по умолчанию является kIOReturnUnsupported.

    Обсуждение

    Драйверы, которые в состоянии привести в действие, управляют, их аппаратные средства должны переопределить этот метод и зарегистрироваться во влиятельном политике, предоставленном путем вызова IOService:: registerPowerDriver (). IONetworkController вызовет этот метод, прежде чем начальная попытка будет предпринята для присоединения клиента.

  • Выпускает глобальную блокировку отладчика.

    Объявление

    C++

    void releaseDebuggerLock();

    Обсуждение

    Этот метод не должен использоваться. Вместо этого вызовите разблокировать () метод, предоставленный IOKernelDebugger.

  • Выпуски все пакеты сохранены в свободной очереди пакетов.

    Объявление

    C++

    virtual UInt32 releaseFreePackets();

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

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

    Обсуждение

    Свободная очередь пакетов не защищена блокировкой. Эта функция должна быть вызвана однопоточным способом относительно всех вызовов к freePacket () с kDelayFree набором опции.

  • Вспомогательный метод, комбинирующий функциональность copyPacket () и replacePacket () для обработки пакета, содержащего полученный кадр.

    Объявление

    C++

    virtual mbuf_t replaceOrCopyPacket( mbuf_t *mp, UInt32length, bool *replaced);

    Параметры

    mp

    Дескриптор к существующему пакету, который может быть заменен.

    length

    Число байтов получило сохраненный в пакете. Должно быть больше, чем нуль.

    replaced

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

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

    Если пакетное выделение перестало работать, возвращает замену или копию существующего пакета, или 0.

    Обсуждение

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

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

    Объявление

    C++

    virtual mbuf_t replacePacket( mbuf_t *mp, UInt32 size = 0);

    Параметры

    mp

    Дескриптор к существующему пакету.

    size

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

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

    Если пакетное выделение было успешно, то замена будет иметь место, и исходный пакет будет возвращен. Иначе, 0 возвращается, и исходный пакет оставят нетронутым.

  • Берет глобальную блокировку отладчика.

    Объявление

    C++

    void reserveDebuggerLock();

    Обсуждение

    Этот метод не должен использоваться. Вместо этого вызовите блокировку () метод, предоставленный IOKernelDebugger.

  • Клиентский запрос для изменения среднего выбора.

    Объявление

    C++

    virtual IOReturn selectMedium( const IONetworkMedium *medium);

    Параметры

    medium

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

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

    Возвраты kIOReturnUnsupported. Если выбор был успешен, или код ошибки иначе, драйверы могут переопределить этот метод и возвратить kIOReturnSuccess.

    Обсуждение

    Когда клиент дает команду для контроллера для изменения его текущего среднего выбора, этот метод вызывают. Реализация должна вызвать setSelectedMedium () после того, как произошло изменение. Этот вызов метода синхронизируется логическим элементом workloop.

  • Клиентский запрос для изменения среднего выбора.

    Объявление

    C++

    virtual IOReturn selectMediumWithName( const OSSymbol *mediumName);

    Параметры

    mediumName

    Объект OSSymbol, описывающий имя нового носителя, выбранного клиентом.

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

    Возвращает возврат из selectMedium (), если соответствующая запись была найдена из среднего словаря. Возвраты kIOReturnUnsupported, если средний словарь не существует, или kIOReturnBadArgument, если данное имя не соответствует записи в среднем словаре.

    Обсуждение

    Когда клиент дает команду для контроллера для изменения его текущего среднего выбора, этот метод вызывают. Эта реализация будет искать запись в среднем словаре, опубликованном драйвером, связанным с данным ключом. Если соответствие найдено, то selectMedium () вызывают для выполнения выбора, иначе ошибка сообщена клиенту. Подклассы должны переопределить selectMedium () и не этот метод. Этот вызов метода синхронизируется логическим элементом workloop.

  • Опрошенный режим отладчика передает обработчик.

    Объявление

    C++

    virtual void sendPacket( void *pkt, UInt32pktSize);

    Параметры

    pkt

    Указатель на буфер передачи, содержащий пакет, который будет отправлен в сети.

    pktSize

    Размер буфера передачи в байтах.

    Обсуждение

    Этот метод должен быть реализован драйвером, поддерживающим отладку ядра. После того, как клиент отладчика был присоединен через attachDebuggerClient (), этот метод вызовет отладчик для отправки исходящего пакета только, когда отладчик ядра будет активен. Этот метод можно вызвать от основного контекста прерывания, и реализация должна избежать любого выделения памяти и никогда не должна блокировать. sendPacket () метод в IONetworkController используется в качестве заполнителя, это не выполняет полезного действия и не должно быть вызвано. Драйвер, присоединяющий клиент отладчика, должен переопределить этот метод.

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

    Объявление

    C++

    virtual bool setChecksumResult( mbuf_t packet, UInt32 checksumFamily, UInt32 resultMask, UInt32 validMask, UInt32 param0 = 0, UInt32 param1 = 0 );

    Параметры

    packet

    mbuf, содержащий пакет, который был проверен суммированием аппаратными средствами.

    checksumFamily

    Значение, указывающее семью контрольной суммы.

    resultMask

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

    validMask

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

    param0

    Дополнительный параметр 0, значения по умолчанию к 0.

    param1

    Дополнительный параметр 1, значения по умолчанию к 0.

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

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

    Обсуждение

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

  • Режим отладчика набора для сетевых драйверов.

    Объявление

    C++

    virtual bool setDebuggerMode( boolactive);

    Параметры

    active

    Набор к истине при вводе KDP и лжи при отъезде KDP.

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

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

    Обсуждение

    Этот метод должен быть реализован драйвером, хотящим быть уведомленным при вводе или отъезде KDP. После того, как клиент отладчика был присоединен через attachDebuggerClient (), этот метод вызовет отладчик, чтобы сообщить драйверу, что отладчик ядра идет активный или неактивный. Этот метод можно вызвать от основного контекста прерывания. В результате реализация должна избежать любого выделения памяти, не используют спин-блокировки, и никогда не блокируют.

    setDebuggerMode () метод в IONetworkController используется в качестве заполнителя и ничего не делает. Если драйвер хочет выполнить определенные действия, основанные на том, активен ли отладчик или нет, это должно переопределить этот метод. Например, драйверы могут хотеть изменить настройки управлением электропитанием или выполнить другие реконфигурирования чипсета, основанные на активном состоянии отладчика.

  • Наборы или изменения адрес станции используются сетевым контроллером.

    Объявление

    C++

    virtual IOReturn setHardwareAddress( const void *addr, UInt32addrBytes) = 0;

    Параметры

    addr

    Буфер, содержащий аппаратный адрес, предоставленный клиентом.

    addrBytes

    Размер буфера адресов, предоставленного клиентом в байтах.

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

    Возвраты kIOReturnSuccess на успехе или ошибке иначе.

    Обсуждение

    Этот вызов метода синхронизируется логическим элементом workloop.

  • Сообщают состояние канала и активный носитель.

    Объявление

    C++

    virtual bool setLinkStatus( UInt32 status, const IONetworkMedium *activeMedium = 0, UInt64 speed = 0, OSData *data = 0);

    Параметры

    status

    Биты состояния канала. Посмотрите IONetworkMedium для определения битов состояния канала.

    activeMedium

    Объект в опубликованном среднем словаре, представляющем активный носитель. Это может не совпасть с выбранным носителем. Установите это в 0, если ссылка неактивна.

    speed

    Скорость канала в модулях бит в секунду. Если нуль, то скорость канала взята от среднего предоставленного объекта.

    data

    OSData, содержащий любой дополнительный параметр ссылки, который драйвер хочет опубликовать к реестру.

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

    Если все свойства ссылок были успешно обновлены, ложь иначе, возвращает true.

    Обсуждение

    Когда изменение ссылки обнаруживается, драйверы должны вызвать этот метод. IONetworkController обновит свойства состояния канала в реестре и генерирует событие для информирования верхних уровней об изменении.

  • Клиентский запрос для изменения максимального размера пакета.

    Объявление

    C++

    virtual IOReturn setMaxPacketSize( UInt32maxSize);

    Параметры

    maxSize

    Новый максимальный размер пакета.

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

    Возвраты kIOReturnUnsupported. Драйверы могут переопределить этот метод и возвратить или kIOReturnSuccess, чтобы указать, что новый размер был принят и имеет силу, или код ошибки для указания отказа.

    Обсуждение

    Этот вызов метода синхронизируется логическим элементом workloop.

  • Определяет запись в опубликованном среднем словаре как текущий выбранный носитель.

    Объявление

    C++

    virtual bool setSelectedMedium( const IONetworkMedium *medium);

    Параметры

    medium

    Средний объект, представляющий текущий выбор.

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

    Возвращает true, если табличное обновление свойства было успешным, ложным, если обновление перестало работать, или если предоставленный носитель не соответствует записи из опубликованного среднего словаря.

    Обсуждение

    После того, как драйвер сконфигурировал аппаратные средства для выбора одного из его поддерживаемых типов среды, это должно вызвать этот метод для информирования его родителя о произошедшем изменении. IONetworkController обновит свойство в реестре для отражения текущего выбора.

  • Запускает сетевой контроллер.

    Объявление

    C++

    virtual bool start( IOService *provider);

    Параметры

    provider

    Провайдер, что контроллер был соответствующим (и присоединен) к.

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

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

    Обсуждение

    После того, как драйвер контроллера успешно соответствовал к провайдеру, этот метод вызывают для запуска сетевого контроллера. IONetworkController выделит ресурсы и соберет свойства контроллера в его реализации. Никакой I/O не будет выполняться, пока подкласс не пытается присоединить объект клиента. Драйвер должен переопределить этот метод и вызвать супер:: запустите () в начале его собственной реализации. Тогда проверьте возвращаемое значение, чтобы удостовериться, что его суперкласс был запущен успешно перед продолжением. Задачи, обычно выполняющиеся водительским методом запуска: распределение ресурсов, инициализация аппаратного обеспечения, выделение IOEventSources и присоединение их к workloop, публикуя средний словарь, и наконец, присоединяя интерфейсный объект, когда это готово обработать клиентские запросы.

  • Останавливает сетевой контроллер.

    Объявление

    C++

    virtual void stop( IOService *provider);

    Параметры

    provider

    Провайдер, что контроллер был соответствующим (и присоединен) к.

    Обсуждение

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

  • Завершение работы системы дескрипторов и уведомления перезапуска.

    Объявление

    C++

    virtual void systemWillShutdown( IOOptionBitsspecifier );

    Параметры

    specifier

    kIOMessageSystemWillPowerOff или kIOMessageSystemWillRestart.

    Обсуждение

    Переопределения IOService::systemWillShutdown чтобы уведомить сетевых клиентов, что должен быть отключен управляемый питанием контроллер. В результате драйверы могут ожидать их disable метод, который вызовут перед завершением работы системы или перезапуском. Эта реализация синхронна и может блокировать перед вызовом IOService::systemWillShutdown и возвратитесь.

    См. также

    IOService::systemWillShutdown

Обратные вызовы

  • Объявление

    C++

    typedef IOReturn ( *Action)( void *target, void *param0, void *param1, void *param2, void *param3);

    Параметры

    target

    Первый параметр передал действию.

    param0

    Параметр действия 0.

    param1

    Параметр действия 1.

    param2

    Параметр действия 2.

    param3

    Параметр действия 3.

    Обсуждение

    Определение функции C, которая может быть вызвана через executeCommand ().

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

    Objective C

    #include <IOCommandGate.h>;

    Доступность

    Доступный в OS X v10.0 через OS X v10.5.

  • Объявление

    C++

    typedef IOReturn ( *Action)( void *target, void *param0, void *param1, void *param2, void *param3);

    Параметры

    target

    Первый параметр передал действию.

    param0

    Параметр действия 0.

    param1

    Параметр действия 1.

    param2

    Параметр действия 2.

    param3

    Параметр действия 3.

    Обсуждение

    Определение функции C, которая может быть вызвана через executeCommand ().

    См. также

    Action

Константы

  • Контрольные суммы TCP/IP, которые могут поддерживаться аппаратными средствами.

    Объявление

    CPlusPlus

    enum { kChecksumFamilyTCPIP = 0x00000001, kChecksumIP = 0x0001, kChecksumTCP = 0x0002, kChecksumUDP = 0x0004, kChecksumTCPIPv6 = 0x0020, kChecksumUDPIPv6 = 0x0040, kChecksumTCPNoPseudoHeader = 0x0100, kChecksumUDPNoPseudoHeader = 0x0200, kChecksumTCPSum16 = 0x1000 };

    Константы

    • kChecksumFamilyTCPIP

      kChecksumFamilyTCPIP

      Значение, описывающее набор контрольных сумм TCP/IP.

    • kChecksumIP

      kChecksumIP

      Контрольная сумма заголовка IP.

    • kChecksumTCP

      kChecksumTCP

      Контрольная сумма TCP, покрывающая заголовок TCP и данные TCP.

    • kChecksumUDP

      kChecksumUDP

      Контрольная сумма UDP, покрывающая заголовок UDP и данные UDP.

    • kChecksumTCPIPv6

      kChecksumTCPIPv6

      Контрольная сумма TCP, покрывающая IPv6 псевдо заголовок, заголовок TCP и данные TCP.

    • kChecksumUDPIPv6

      kChecksumUDPIPv6

      Контрольная сумма UDP, покрывающая IPv6 псевдо заголовок, заголовок UDP и данные UDP.

    • kChecksumTCPNoPseudoHeader

      kChecksumTCPNoPseudoHeader

      Контрольная сумма TCP, покрывающая заголовок TCP и данные TCP, но псевдо заголовок не включен в вычисление контрольной суммы. Частичное 16-разрядное значение контрольной суммы должно быть предоставлено, чтобы позволить стекам протоколов вычислять и проверять заключительную контрольную сумму. Этот тип контрольной суммы в настоящее время не поддерживается на выходном пути.

    • kChecksumUDPNoPseudoHeader

      kChecksumUDPNoPseudoHeader

      Контрольная сумма UDP, покрывающая заголовок UDP и данные UDP, но псевдо заголовок не включен в вычисление контрольной суммы. Частичное 16-разрядное значение контрольной суммы должно быть предоставлено, чтобы позволить стекам протоколов вычислять и проверять заключительную контрольную сумму. Этот тип контрольной суммы в настоящее время не поддерживается на выходном пути.

    • kChecksumTCPSum16

      kChecksumTCPSum16

      Аппаратные средства имеют простой механизм контрольной суммы, который может выполнить сумму поразрядного дополнения до единицы стиля TCP 16-разрядных слов по определенному диапазону байтов в пакете. Аппаратные средства не имеют возможности отсканировать для IP или заголовков TCP, и драйвер должен передать/получить дополнительный параметр (ы) или от стека протоколов для координирования усилия по вычислению контрольной суммы.

    Обсуждение

    Контрольные суммы

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

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

      Объявление

      C++

      ExpansionData * _reserved;

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

      Объявление

      C++

      ExpansionData * _reserved;