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

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

Разработчик

Ссылка класса OSMetaClass

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

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

OSMetaClass

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


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

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


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

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


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

Objective C

@import Kernel;

Доступность


Доступный в OS X v10.0 и позже.
  • Резервирует vtable пространство для новых виртуальных функций в классе C++ Libkern.

    Объявление

    C++

    #if 1 #define OSMetaClassDeclareReservedUnused(className, index) #else #define OSMetaClassDeclareReservedUnused(className, index) #endif

    Параметры

    className

    Имя класса C++, как необработанный маркер, не строка или макрос.

    index

    Числовой индекс vtable слота, как необработанная константа, начинаясь от 0.

    Обсуждение

    Классы C++ Libkern в расширениях ядра, которые могут использоваться в качестве библиотек, могут предусмотреть обратную совместимость путем объявления многих зарезервированных vtable слотов, которые могут быть заменены новыми функциями, поскольку они добавляются. Каждое зарезервированное объявление должно сопровождаться в реализации соответствующей ссылкой на OSMetaClassDefineReservedUnused.

    При замене зарезервированного слота измените макрос от «Неиспользованного» до «Используемого» для документирования факта, что слот раньше резервировался и объявлял, что новая функция сразу после «Используемого» макроса сохраняет vtable упорядочивание. Посмотрите OSMetaClassDeclareReservedUsed.

  • Определяет зарезервированный vtable слот для класса C++ Libkern.

    Объявление

    C++

    #if 1 #define OSMetaClassDefineReservedUnused(className, index) #else #define OSMetaClassDefineReservedUnused(className, index) #endif

    Параметры

    className

    Имя класса C++, как необработанный маркер, не строка или макрос.

    index

    Числовой индекс vtable слота, как необработанная константа, начинаясь от 0.

    Обсуждение

    Классы C++ Libkern в расширениях ядра, которые могут использоваться в качестве библиотек, могут предусмотреть обратную совместимость путем объявления многих зарезервированных vtable слотов, которые могут быть заменены новыми функциями, поскольку они добавляются. Каждый зарезервировал defintion, сопровождает соответствующее объявление, создаваемое с OSMetaClassDeclareReservedUnused.

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

    При замене зарезервированного слота измените макрос от «Неиспользованного» до «Используемого» для документирования факта, что слот раньше резервировался и объявлял, что новая функция сразу после «Используемого» макроса сохраняет vtable упорядочивание. Посмотрите OSMetaClassDefineReservedUsed.

  • Объявляет информацию о типах во время выполнения и функции для абстрактного класса C++ Libkern.

    Объявление

    C++

    #define OSDeclareAbstractStructors(className)

    Параметры

    className

    Имя класса C++, как необработанный маркер, не строка или макрос.

    Обсуждение

    Абстрактные классы C++ Libkern - те по крайней мере с одним чистым виртуальным методом - должны сразу «вызвать» этот макрос после вводной фигурной скобки в объявлении класса. Это оставляет текущее состояние конфиденциальности как protected:.

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

    Objective C

    #include <OSMetaClass.h>;

    Доступность

    Доступный в OS X v10.0 и позже.

  • Объявляет информацию о типах во время выполнения и функции для конкретного класса C++ Libkern.

    Объявление

    C++

    #define OSDeclareDefaultStructors(className)

    Параметры

    className

    Имя класса C++, как необработанный маркер, не строка или макрос.

    Обсуждение

    Конкретные классы C++ Libkern должны сразу «вызвать» этот макрос после вводной фигурной скобки в объявлении класса. Это оставляет текущее состояние конфиденциальности как protected:.

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

    Objective C

    #include <OSMetaClass.h>;

    Доступность

    Доступный в OS X v10.0 и позже.

  • Объявляет информацию о типах во время выполнения и функции для заключительного (неподподдающегося классификации) класса C++ Libkern.

    Объявление

    C++

    #define OSDeclareFinalStructors(className)

    Параметры

    className

    Имя класса C++, как необработанный маркер, не строка или макрос.

    Обсуждение

    Заключительные классы C++ Libkern - те, которые не позволяют разделять на подклассы - должны сразу «вызвать» этот макрос после вводной фигурной скобки в объявлении класса. (Заключительные классы в ядре могут фактически иметь подклассы в ядре, но kexts не может определить подклассы заключительного класса.) Это оставляет текущее состояние конфиденциальности как protected:.

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

    Предупреждение: Изменение класса от «Значения по умолчанию» до «Финала» повредит совместимость на уровне двоичных кодов.

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

    Objective C

    #include <OSMetaClass.h>;

    Доступность

    Доступный в OS X v10.6 и позже.

  • Определяет OSMetaClass и связанные подпрограммы для абстрактного класса C++ Libkern.

    Объявление

    C++

    #define OSDefineMetaClassAndAbstractStructors(className, superclassName)

    Параметры

    className

    Имя класса C++, как необработанный маркер, не строка или макрос.

    superclassName

    Имя суперкласса класса C++, как необработанный маркер, не строка или макрос.

    Обсуждение

    Абстрактные классы C++ Libkern - те по крайней мере с одним чистым виртуальным методом - должны «вызвать» этот макрос в начале своих файлов реализации перед любыми реализациями функции для класса.

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

    Objective C

    #include <OSMetaClass.h>;

    Доступность

    Доступный в OS X v10.0 и позже.

  • Определяет OSMetaClass и связанные подпрограммы для заключительного (неподподдающегося классификации) класса C++ Libkern.

    Объявление

    C++

    #define OSDefineMetaClassAndFinalStructors(className, superclassName)

    Параметры

    className

    Имя класса C++, как необработанный маркер, не строка или макрос.

    superclassName

    Имя суперкласса класса C++, как необработанный маркер, не строка или макрос.

    Обсуждение

    Заключительные классы C++ Libkern - те, которые не позволяют разделять на подклассы - должны «вызвать» этот макрос в начале их файлов реализации перед любыми реализациями функции для класса. (Заключительные классы в ядре могут фактически иметь подклассы в ядре, но kexts не может определить подклассы заключительного класса.)

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

    Предупреждение: Изменение класса от «Значения по умолчанию» до «Финала» повредит совместимость на уровне двоичных кодов.

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

    Objective C

    #include <OSMetaClass.h>;

    Доступность

    Доступный в OS X v10.6 и позже.

  • Определяет OSMetaClass и связанные подпрограммы для конкретного класса C++ Libkern.

    Объявление

    C++

    #define OSDefineMetaClassAndStructors(className, superclassName)

    Параметры

    className

    Имя класса C++, как необработанный маркер, не строка или макрос.

    superclassName

    Имя суперкласса класса C++, как необработанный маркер, не строка или макрос.

    Обсуждение

    Конкретные классы C++ Libkern должны «вызвать» этот макрос в начале своих файлов реализации перед любыми реализациями функции для класса.

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

    Objective C

    #include <OSMetaClass.h>;

    Доступность

    Доступный в OS X v10.0 и позже.

  • Использование документов зарезервированного vtable пространства для новых виртуальных функций в классе C++ Libkern.

    Объявление

    C++

    #define OSMetaClassDeclareReservedUsed(className, index)

    Параметры

    className

    Имя класса C++, как необработанный маркер, не строка или макрос.

    index

    Числовой индекс vtable слота, как необработанная константа, начинаясь от 0.

    Обсуждение

    Этот макрос не оценивает ни к чему и используется для документирования зарезервированных vtable слотов, поскольку они переполнены. Посмотрите OSMetaClassDeclareReservedUnused.

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

    Objective C

    #include <OSMetaClass.h>;

    Доступность

    Доступный в OS X v10.0 и позже.

  • Резервирует vtable пространство для новых виртуальных функций в классе C++ Libkern.

    Объявление

    C++

    #define OSMetaClassDefineReservedUsed(className, index)

    Параметры

    className

    Имя класса C++, как необработанный маркер, не строка или макрос.

    index

    Числовой индекс vtable слота, как необработанная константа, начинаясь от 0.

    Обсуждение

    Этот макрос не оценивает ни к чему и используется для документирования зарезервированных vtable слотов, поскольку они переполнены. Посмотрите OSMetaClassDefineReservedUnused.

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

    Objective C

    #include <OSMetaClass.h>;

    Доступность

    Доступный в OS X v10.0 и позже.

  • Выделяет экземпляр класса C++, которым управляет этот метакласс.

    Объявление

    C++

    virtual OSObject * alloc() const = 0;

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

    Указатель на недавно выделенный, неинициализированный экземпляр, с сохранить количеством 1; NULL при отказе выделения.

    Обсуждение

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

  • Выделяет экземпляр именованного OSObject-производного-класса.

    Объявление

    C++

    static OSObject * allocClassWithName( const char *name);

    Параметры

    name

    Имя желаемого класса.

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

    Указатель на недавно выделенный, неинициализированный объект на успехе; NULL при отказе.

    Обсуждение

    функция allocClassWithName

  • Выделяет экземпляр именованного OSObject-производного-класса.

    Объявление

    C++

    static OSObject * allocClassWithName( const OSString *name);

    Параметры

    name

    Имя желаемого класса.

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

    Указатель на недавно выделенный, неинициализированный объект на успехе; NULL при отказе.

    Обсуждение

    функция allocClassWithName

  • Выделяет экземпляр именованного OSObject-производного-класса.

    Объявление

    C++

    static OSObject * allocClassWithName( const OSSymbol *name);

    Параметры

    name

    Имя желаемого класса.

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

    Указатель на недавно выделенный, неинициализированный объект на успехе; NULL при отказе.

    Обсуждение

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

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

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

    Объявление

    C++

    OSMetaClassBase * checkMetaCast( const OSMetaClassBase *object) const;

    Параметры

    object

    Объект проверить на наследование.

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

    object если это получено из класса получателя, NULL если нет.

  • Ищите иерархию наследования метакласса по имени экземпляр объекта.

    Объявление

    C++

    static OSMetaClassBase * checkMetaCastWithName( const char *className, const OSMetaClassBase *object);

    Параметры

    className

    Имя желаемого класса или суперкласса.

    object

    Объект, метакласс которого начинает поиск.

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

    object если это получено из className; NULL иначе.

    Обсуждение

    Расширения ядра не должны использовать эту функцию непосредственно, вместо этого с помощью OSDynamicCast или OSCheckTypeInst.

  • Ищите иерархию наследования метакласса по имени экземпляр объекта.

    Объявление

    C++

    static OSMetaClassBase * checkMetaCastWithName( const OSString *className, const OSMetaClassBase *object);

    Параметры

    className

    Имя желаемого класса или суперкласса.

    object

    Объект, метакласс которого начинает поиск.

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

    object если это получено из className; NULL иначе.

    Обсуждение

    Расширения ядра не должны использовать эту функцию непосредственно, вместо этого с помощью OSDynamicCast или OSCheckTypeInst.

  • Ищите иерархию наследования метакласса по имени экземпляр объекта.

    Объявление

    C++

    static OSMetaClassBase * checkMetaCastWithName( const OSSymbol *className, const OSMetaClassBase *object);

    Параметры

    className

    Имя желаемого класса или суперкласса.

    object

    Объект, метакласс которого начинает поиск.

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

    object если это получено из className; NULL иначе.

    Обсуждение

    Эта функция является основанием времени выполнения Libkern проверяющая тип система. Расширения ядра не должны использовать его непосредственно, вместо этого с помощью OSDynamicCast или OSCheckTypeInst.

  • Проверки, может ли продолжиться текущая работа загрузки kext.

    Объявление

    C++

    static bool checkModLoad( void *loadHandle);

    Параметры

    loadHandle

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

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

    true если никакие ошибки не являются выдающимися, и система готова обработать больше метаклассов.

    Обсуждение

    Не для использования расширениями ядра.

  • Запланируйте автоматическую разгрузку неиспользованных расширений ядра.

    Объявление

    C++

    static void considerUnloads();

    Обсуждение

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

    Когда соответствие идет неактивное, Набор I/O вызывает эту функцию.

    Расширения ядра, определяющие подклассы IOService, приемлемы на автоматическую разгрузку.

    (На выпусках Mac OS X до Snow Leopard (10.6), любое расширение ядра, определяющее любой класс C++ Libkern, было приемлемо на автоматическую разгрузку, но которые разгружаются, не вызывал подпрограмму остановки модуля. Расширения ядра Набора Non-I/O, определяющие подклассы C++ Libkern, несомненно, должны будут иметь объявления OSBundleLibraries, гарантирующие, что они не загрузятся на выпусках до Snow Leopard.)

  • Возвращает имя класса C++, которым управляет этот метакласс.

    Объявление

    C++

    const char * getClassName() const;

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

    Возвращает имя класса C++, которым управляет этот метакласс.

  • Возвращает размер выделения класса C++, которым управляет этот метакласс.

    Объявление

    C++

    unsigned int getClassSize() const;

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

    Размер выделения класса C++, которым управляет этот метакласс.

  • Возвращает число существующих экземпляров класса метакласса.

    Объявление

    C++

    unsigned int getInstanceCount() const;

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

    Число существующих экземпляров класса метакласса, плюс 1 для каждого подкласса с любым экземпляром.

  • Возвращает идентификатор пакета расширения ядра, определяющего этот метакласс.

    Объявление

    C++

    const OSSymbol * getKmodName() const;

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

    Идентификатор пакета расширения ядра, определяющего этот метакласс.

    Обсуждение

    «Kmod» является более старым сроком для расширения ядра.

  • Ищите метакласс в системе информации о типах во время выполнения.

    Объявление

    C++

    static const OSMetaClass * getMetaClassWithName( const OSSymbol *name);

    Параметры

    name

    Имя метакласса желаемого класса.

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

    Указатель на метакласс возражает, если найдено, NULL иначе.

  • Реализует краткий обзор getRetainCount функционируйте для возврата 0.

    Объявление

    C++

    virtual int getRetainCount() const;

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

    Всегда возвраты 0.

    Обсуждение

    Так как экземпляр OSMetaClass должен остаться существующим столько, сколько его расширение ядра загружается, OSMetaClass не использует подсчет ссылок.

  • Возвращает суперметакласс получателя.

    Объявление

    C++

    const OSMetaClass * getSuperClass() const;

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

    Возвращает указатель на суперметакласс получения OSMetaClass, или NULL для метакласса OSOBJECT.

  • Считает экземпляры класса управляемыми этим метаклассом.

    Объявление

    C++

    void instanceConstructed() const;

    Обсуждение

    Не для использования расширениями ядра.

    Каждый неабстрактный класс, наследовавшийся от OSObject, имеет конструктора по умолчанию, вызывающего свой собственный метакласс instanceConstructed функция. Этот конструктор определяется OSDefineMetaClassAndStructors макрос, который должны использовать все подклассы OSObject.

    Если количество экземпляра класса идет от 0 до 1 - т.е. после создания первой инстанции того класса - количество экземпляра суперкласса также постепенно увеличивается. Это распространяет подсчеты ссылок цепочка наследования так, чтобы суперклассы считались как «в использовании», когда подклассы имеют экземпляры.

  • Считает экземпляры класса управляемыми этим метаклассом.

    Объявление

    C++

    void instanceDestructed() const;

    Обсуждение

    Каждый неабстрактный класс, наследовавшийся от OSObject, имеет деструктор по умолчанию, вызывающий свой собственный метакласс instanceDestructed функция. Этот конструктор определяется макросом OSDefineMetaClassAndStructors, который должны использовать все подклассы OSObject.

    Если количество экземпляра класса идет от 1 до 0 - т.е. после уничтожения последнего экземпляра того класса - количество экземпляра суперкласса также постепенно уменьшается. Когда их подклассы больше не имеют экземпляры, это сокращает «в использовании» количества от суперклассов.

  • Возвраты, имеют ли какие-либо классы, определенные именованным расширением ядра (или их подклассы), существующие экземпляры.

    Объявление

    C++

    static bool modHasInstance( const char *kextID);

    Параметры

    kextID

    Пакет ID расширения ядра для проверки.

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

    true если kext найден и если какой-либо класс определил, которым kext имеет ненулевое количество экземпляра, false иначе.

    Обсуждение

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

  • Конструктор для объектов OSMetaClass.

    Объявление

    C++

    OSMetaClass( const char *className, const OSMetaClass *superclass, unsigned intclassSize);

    Параметры

    className

    Струна до, называющая класс C++, который представляет этот OSMetaClass.

    superclass

    Объект OSMetaClass представление суперкласса класса этого метакласса.

    classSize

    Размер выделения представленного класса C++.

    Обсуждение

    Этот конструктор защищен и не может использоваться для инстанцирования OSMetaClass непосредственно, поскольку OSMetaClass является абстрактным классом. Эта функция вызвана во время kext, загружающегося к классам C++ очереди для регистрации. Посмотрите preModLoad и postModLoad.

  • Регистрирует метаклассы, создаваемые во время загрузки расширения ядра.

    Объявление

    C++

    static OSReturn postModLoad( void *loadHandle);

    Параметры

    loadHandle

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

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

    Код ошибки первой ошибки встретился, или kOSReturnSuccess если не произошла никакая ошибка.

    Обсуждение

    Не для использования расширениями ядра.

    Вызванный после того, как все статические конструкторы в расширении ядра создали метаклассы, эта функция проверки на двойные имена классов, затем регистрирует новые метаклассы под kext ID, с которым вызвали preModLoad, так, чтобы они могли быть динамично выделены и отслеживать их количества экземпляра. postModLoad выпускает блокировку, взятую preModLoad.

  • Подготавливает систему типа выполнения к созданию новых метаклассов во время загрузки расширения ядра (модуль).

    Объявление

    C++

    static void * preModLoad( const char *kextID);

    Параметры

    kextID

    Пакет ID kext быть загруженным.

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

    Непрозрачный дескриптор к контексту загрузки для расширения ядра на успехе; NULL при отказе.

    Обсуждение

    Не для использования расширениями ядра.

    Подготавливает систему информации о типах во время выполнения, чтобы записать и зарегистрировать метаклассы, создаваемые статическими конструкторами до последующего вызова к postModLoad. preModLoad берет блокировку для обеспечения обработки единственной работы загрузки за один раз; блокировка выпущена postModLoad. Любой OSMetaClass, созданный между этими двумя вызовами функции, будет связан с kextID.

  • Реализует краткий обзор release функция, чтобы ничего не сделать.

    Объявление

    C++

    virtual void release() const;

    Обсуждение

    Так как экземпляр OSMetaClass должен остаться существующим столько, сколько его расширение ядра загружается, OSMetaClass не использует подсчет ссылок.

  • Реализует краткий обзор release(int freeWhen) функция, чтобы ничего не сделать.

    Объявление

    C++

    virtual void release( intfreeWhen) const;

    Параметры

    freeWhen

    Неиспользованный.

    Обсуждение

    Так как экземпляр OSMetaClass должен остаться существующим столько, сколько его расширение ядра загружается, OSMetaClass не использует подсчет ссылок.

  • Журналы экземпляр значат классы, определенные расширением ядра.

    Объявление

    C++

    static void reportModInstances( const char *kextID);

    Параметры

    kextID

    Пакет ID расширения ядра для создания отчетов относительно.

    Обсуждение

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

  • Реализует краткий обзор retain функция, чтобы ничего не сделать.

    Объявление

    C++

    virtual void retain() const;

    Обсуждение

    Так как экземпляр OSMetaClass должен остаться существующим столько, сколько его расширение ядра загружается, OSMetaClass не использует подсчет ссылок.

  • Реализует краткий обзор taggedRelease(const void *) функция, чтобы ничего не сделать.

    Объявление

    C++

    virtual void taggedRelease( const void *tag = 0) const;

    Параметры

    tag

    Неиспользованный.

    Обсуждение

    Так как экземпляр OSMetaClass должен остаться существующим столько, сколько его расширение ядра загружается, OSMetaClass не использует подсчет ссылок.

  • Реализует краткий обзор taggedRelease(const void *, cont int) функция, чтобы ничего не сделать.

    Объявление

    C++

    virtual void taggedRelease( const void *tag, const intfreeWhen) const;

    Параметры

    tag

    Неиспользованный.

    freeWhen

    Неиспользованный.

    Обсуждение

    Так как экземпляр OSMetaClass должен остаться существующим столько, сколько его расширение ядра загружается, OSMetaClass не использует подсчет ссылок.

  • Реализует краткий обзор taggedRetain(const void *) функция, чтобы ничего не сделать.

    Объявление

    C++

    virtual void taggedRetain( const void *tag = 0) const;

    Параметры

    tag

    Неиспользованный.

    Обсуждение

    Так как экземпляр OSMetaClass должен остаться существующим столько, сколько его расширение ядра загружается, OSMetaClass не использует подсчет ссылок.

  • Деструктор для объектов OSMetaClass.

    Объявление

    C++

    virtual ~OSMetaClass();

    Обсуждение

    Эта функция вызвана, когда разгружено расширение ядра, реализующее класс метакласса. Деструктор удаляет все ссылки на класс от системы информации о типах во время выполнения.

Константы

  • OSMetaClass управляет информацией о типах во время выполнения для Libkern и классов C++ Набора I/O.

    Объявление

    CPlusPlus

    Константы

    Обсуждение

    OSMetaClass управляет информацией о типах во время выполнения для Libkern и классов C++ Набора I/O. Экземпляр OSMetaClass существует для (почти) каждого такого класса C++, отслеживания отношений наследования, поиска класса по имени, количества экземпляра и т.д. OSMetaClass работает почти полностью негласно, и расширения ядра редко должны, если когда-нибудь, должны взаимодействовать непосредственно с OSMetaClass.

    Использование расширениями ядра

    В то время как расширения ядра rarey взаимодействуют непосредственно с OSMetaClass во время выполнения, они должны зарегистрировать свои классы в системе метакласса с помощью макросов, объявленных здесь. Объявление класса должно использовать один из этих двух макросы перед его первым объявлением функции элемента:

    • OSDeclareDefaultStructors - для классов без абстрактных объявлений функции элемента

    • OSDeclareAbstractStructors - для классов по крайней мере с одним абстрактным объявлением функции элемента

    • OSDeclareFinalStructors - для классов, которые не должны быть подподдающимися классификации другим kext

    Реализация класса должна тогда использовать один из них макросы:

    Классы в расширениях ядра, предназначающихся для использования в качестве библиотек, возможно, должны зарезервировать vtable слоты для сохранения совместимости на уровне двоичных кодов, поскольку добавляются новые функции. Они могут сделать так с ними макросы:

    • OSMetaClassDeclareReservedUnused - резервирует vtable слот

    • OSMetaClassDefineReservedUnused - определяет зарезервированный vtable слот как нереализованную функцию

    • OSMetaClassDeclareReservedUsed - документы, что теперь используется раньше зарезервированный слот

    • OSMetaClassDefineReservedUsed - документы, что теперь используется раньше зарезервированный слот

    Используйте ограничения

    OSMetaClass не должен быть явно разделен на подклассы расширениями ядра (объявить/определить макросы делают это), и при этом расширения ядра не должны вызывать его функции типа выполнения непосредственно.

    Функции OSMetaClass нужно считать небезопасными вызвать в основном контексте прерывания.

    Защита параллелизма

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

  • Объявление

    CPlusPlus

    Константы