Получение ссылки на драйвер Kext от агента пространства пользователя

У меня есть драйвер IOKit, который происходит от public IOService + пользовательский клиентский интерфейс, производный от public IOUserClient,

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

Вот моя попытка:

_ioObject = IOIteratorNext( _ioIterator );

className = IOObjectCopyClass(_ioObject);
if (CFEqual(className, CFSTR("com_my_driver")) == true)
{
    IOObjectRetain( _ioObject );
    IOObjectRetain( _ioIterator );
    return _ioIterator;
}

Тем не менее, проверка количества ссылок с помощью IOClassCount | grep <MY_DRIVER> Команда видит, что счетчик ссылок остается прежним. это правильный способ сделать это?

РЕДАКТИРОВАТЬ:

Я также пытался получить ссылку изнутри драйвера, используя метод OSObject::taggedRetain но я все еще могу удалить драйвер с помощью команды kextunload

0 ответов

Другие вопросы по тегам