DLL 服务器要求

虽然大多数 DLL 可以在代理项中运行,但某些 DLL 不能。

如果要使用系统提供的代理项,DLL 必须表现良好。 例如,调用从客户端注册回调的方法的 DLL 会尝试调用这些回调,就好像收到的函数指针用于其地址空间中的指令,但情况并非如此。 同样,使用其期望客户端访问的全局变量的 DLL 将无法正常工作。 通常,无法正确封送的参数将阻止 DLL 服务器在客户端进程外部运行。 在许多情况下,可以编写专用于补偿“错误”行为的自定义代理项。 (有关详细信息,请参阅编写自定义代理项。)

如果 DLL 服务器使用自定义接口,则必须确保封送代码可用于这些接口。 例如,可以生成和注册代理 DLL,或者提供并注册一个类型库,该类型库允许服务器在代理项中运行时正常运行。

仅将 DLL 服务器加载到在适当安全上下文中运行的代理项进程中。 DLL 服务器代理项的安全上下文的确定方式与 EXE 服务器相同。 除非在服务器的 AppID注册表部分设置确定安全上下文的 RunAs 值,否则 DLL 服务器代理项在客户端所在的同一安全上下文中运行。

DLL 代理项