loadbind 子例程

用途

提供模块的延迟符号的特定运行时解决。

语法

int loadbind( Flag,  ExportPointer,  ImportPointer)
int Flag;
void *ExportPointer, *ImportPointer;

描述

装入绑定 子例程控制先前装入的对象模块的未解析导入符号的运行时解析。

装入两个模块时,将使用 装入绑定 子例程。 模块 A 是使用 负载 子例程在运行时装入的对象模块,它已指定稍后解析它的某些导入符号。 模块 B 包含用于解析模块 A 的未解析导入的已导出符号。

要使模块 A 的导入符号不会被解析,直到调用 装入绑定 服务为止,您可以在装入模块 A 时指定 负载 子例程标志 _NOAUTODEFER

当 32 位进程在 跟踪 控制下执行时,在 装入绑定 处理完成后将重新复制该进程的部分地址空间。 将重新复制主程序文本 1 在段 1 中装入) 和共享库模块 (在段 13 中装入)。 对这些段的任何断点或其他修改都必须在 装入绑定 调用后重新插入。

当在 跟踪 控制下执行的 32 位进程调用 装入绑定时,将通过在 返回的状态中设置 _SLWTED 标志来通知调试器。

跟踪 控制下的 64 位进程调用 装入绑定时,不会通知调试器,并且正在调试的进程的执行将正常继续。

参数

描述
标志 当前未使用。
ExportPointer 指定装入模块 B 时由 负载 子例程返回的函数指针。
ImportPointer 指定装入模块 A 时由 负载 子例程返回的函数指针。
注: ImportPointerExportPointer 参数也可以设置为包含在关联模块中的任何导出静态数据区符号或函数指针。 通常,这将是从指定模块的 负载 返回的函数指针。

返回值

如果 装入绑定 子例程成功,那么返回 0。

错误代码

如果检测到错误,则返回-1,同时将errno全局变量设置为相关的错误代码:

描述
EINVAL 指示 ImportPointerExportPointer 参数无效 (指向 ExportPointerImportPointer 参数的指针与装入的程序模块或库不对应)。
ENOMEM 指示程序需要的内存超过系统施加的最大值所允许的内存量。

装入绑定 子例程返回错误后,您还可以使用 装入查询 子例程来获取有关 装入绑定 错误的更多信息。