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( UInt32
size
);Параметры
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
, тогда сопровождаемый abusyState
декремент после присоединения и регистрации интерфейса, или после разумного тайм-аута. -
Конфигурирует недавно создаваемый объект сетевого интерфейса.
Объявление
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
, UInt32aFilter
, UInt32enabledFilters
, 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
, UInt32aFilter
, UInt32enabledFilters
, IOOptionBits options = 0) = 0;Параметры
group
Имя группы фильтра, содержащей фильтр, который будет включен.
aFilter
Фильтр для включения.
enabledFilters
Все фильтры в настоящее время включены клиентом.
options
Дополнительные флаги для разрешать запроса.
Возвращаемое значение
Возвраты kIOReturnSuccess на успехе или ошибке иначе.
Обсуждение
Клиент вызовет этот метод для включения поддерживаемого фильтра из указанной группы фильтра. Если клиент хочет включить больше чем один фильтр, он должен вызвать этот метод многократно для включения желаемого набора фильтров. Этот вызов метода синхронизируется логическим элементом workloop.
-
Делает вызов функции C через логический элемент команды.
Объявление
C++
virtual IOReturn executeCommand( OSObject *
client
, Actionaction
, 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
, UInt32checksumFamily
, 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( UInt32
type
, 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
, UInt32checksumFamily
, UInt32resultMask
, UInt32validMask
, UInt32 param0 = 0, UInt32 param1 = 0 );Параметры
packet
mbuf, содержащий пакет, который был проверен суммированием аппаратными средствами.
checksumFamily
Значение, указывающее семью контрольной суммы.
resultMask
Маска всех контрольных сумм, проверенных или вычисленных. Установка немного подразумевает, что драйвер в состоянии сообщить о результате вычисления контрольной суммы путем утверждения законности контрольной суммы, или путем возврата частичного значения контрольной суммы.
validMask
Маска всех контрольных сумм, были вычислены и проверены аппаратными средствами как допустимые. Определенные типы контрольной суммы, выполняемой аппаратными средствами, inheritely неполный, и поэтому никогда не должны отмечаться как допустимые. Контрольная сумма не может быть отмечена допустимая, если она не была также проверена.
param0
Дополнительный параметр 0, значения по умолчанию к 0.
param1
Дополнительный параметр 1, значения по умолчанию к 0.
Возвращаемое значение
Возвращает true, если семья контрольной суммы допустима, и пакет был закодирован с результатом контрольной суммы если, ложь иначе.
Обсуждение
Сетевой контроллер, который может проверить контрольную сумму (ы) для полученного пакета, должен вызвать этот метод для кодирования результата на пакете перед отказыванием от нее к стекам протоколов.
-
Режим отладчика набора для сетевых драйверов.
Объявление
C++
virtual bool setDebuggerMode( bool
active
);Параметры
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( UInt32
maxSize
);Параметры
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( IOOptionBits
specifier
);Параметры
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;