大家是不都是在DLL中判断与修改数据包的?现在我想把这个DLL 做成一个通用的封包模块,其基本思路是在DLL 中保存一些函数指针,一些注册接口.当我要使用这个spi分层协议来进行封包时, 只要在我的应用程序中把应用程序中的某个函数地址传
给DLL, 那么当 Send Recive 等事件发生时.我期望我应用程序的函数会被回调.但是:好象就算是动态DLL, 每个应用程序使用的DLL 数据都会不一样,就算使用共享内存区域.
好象也是不行的.在这里想问一下大家的意见.

解决方案 »

  1.   

    SPI 的 dll 不会显式的加载到应用程序中,因此我觉得你的想法很难实现,
    可能需要使用一些底层的进程间通信的方法,来控制同步和传递数据。
      

  2.   

    dll提供函数,策略写在其它地方。
      

  3.   

    to pepsi1980:
    想问一下,你的策略是如何实现的?
      

  4.   

    首先,我记得以前做过的spi调用ExitProcess可以将被拦截的进程结束,说明spi函数被注入到了目标进程,那么目标进程load你的策略dll,也会load到你的目标进程地址空间,这时你传入策略dll函数地址是可以的,因为他们都在同一进程中。
    其次,对于数据共享问题,创建并使用共享内存段应该可以实现,或者使用Filemapping创建共享内存。