DLL 服务器要求
虽然大多数 DLL 可以在代理项中运行,但某些 DLL 无法运行。
如果要使用系统提供的代理项,DLL 必须表现良好。 例如,调用从客户端注册回调的方法的 DLL 会尝试调用这些回调,就好像收到的函数指针用于其地址空间中的指令,情况并非如此。 同样,使用其期望客户端访问的全局变量的 DLL 将不起作用。 通常,无法正确封送的参数将阻止 DLL 服务器在客户端进程外部运行。 在许多情况下,可以编写专门为补偿“坏”行为的自定义代理项。 (有关详细信息,请参阅 编写自定义代理项。)
如果 DLL 服务器使用自定义接口,则必须确保封送代码可用于这些接口。 例如,可以生成和注册代理 DLL,或者提供并注册一个类型库,该类型库允许服务器在代理项中运行时正常运行。
DLL 服务器将仅加载到在适当安全上下文中运行的代理项进程中。 DLL 服务器代理项的安全上下文与 EXE 服务器的安全上下文相同。 DLL 服务器代理项在客户端的安全上下文中运行,除非 RunAs 值(确定安全上下文)在服务器的 AppID 注册表部分中设置。
相关主题