kmod_unload 内核服务

用途

卸装一个内核对象文件。

语法

#include <sys/types.h>
#include <sys/errno.h>
#include <sys/ldr.h>
int kmod_unload ( kmid
,  flags)
mid_t kmid;
uint flags;

参数

描述
克米德 指定所要卸装的对象文件的内核模块标识。 使用 kmod_load 内核服务时,会返回此内核模块标识。
标志 指定卸载选项的标志。 定义了以下标志:
重大安全事件数量
卸载由其 克米德 参数指定的对象模块以及由于装入指定的对象文件而装入的任何对象模块 (如果此文件未在使用中)。

描述

kmod_unload 内核服务会卸载先前装入的内核扩展对象文件。 要卸装的对象是由 克米德 参数指定的。 成功完成后,将卸载或标记以下对象: 卸载暂挂:

  • 指定的对象文件
  • 由于装入指定的模块而装入的任何已导入内核对象模块

这些导出或系统调用的用户是绑定到此模块的导出符号的模块。 如果没有任何模块的内核导出或系统调用的用户,那么会立即卸装该模块。 如果有此模块的用户,那么不会卸载该模块,但会将其标记为 卸载暂挂

标记模块 卸载暂挂 将从内核名称空间中除去模块的导出符号。 此模块导出的任何系统调用也会被移除。 这禁止这些符号的新用户。 仅当所有当前用户都已卸载时,才会卸载该模块。

如果卸载已成功完成或标记为 暂挂,那么将返回值 0。 发生错误时,不会卸载指定的模块和任何导入的模块。 非零返回值指示该错误。

执行环境

仅可从 流程环境 调用 kmod_unload 内核服务。

返回值

描述
重大安全事件数量 指示成功完成。
EINVAL 指示 克米德 参数 (用于指定内核模块) 无效或与当前装入的模块不对应。
EBUSY 克米德 参数指定一个仍在拦截系统调用的内核扩展。