【发布时间】:2017-05-14 07:06:37
【问题描述】:
我将为我自己的硬件(可能是虚拟的)实现一个 SPI。正如我发现(也许我弄错了)当应用程序调用 WFSOpen 时,XFS 在 SPI 中调用 WFPOpen。但是这个“in SPI”是指哪里呢?也许我应该给出在注册表某处找到 WFPOpen 的 dll 文件的地址。我还认为应该在 HKLM\XFS\Service_Provider\\DllName 中给出 dll 路径。是这样吗?够了吗? XFS 是否对此注册表路径和密钥敏感并使用它来查找 SPI 在哪里? 我已经完成了上述操作,但我得到了 WFS_ERR_SERVICE_NOT_FOUND。 XFS 似乎没有在 dll 中查找函数。 有什么问题?
我认为最好发送 xfs 日志以便您能够更好地处理问题。 https://www.dropbox.com/s/6wwbjfpxxibjnl1/9603071652%20-%20XFSTrace.7z?dl=0
【问题讨论】:
-
您是否从您的 SPI dll 模块中导出了 WFSOpen?您的 SPI 必须导出文档中声明的全套 XFS 函数。然后 XFS 管理器可以从您在注册表中定义的路径加载您的 dll,并为每个函数调用 GetProcAddress。
-
您真的是指 WFSOpen 而不是 WFPOpen?我认为我应该只将 WFPOpen 和其他 WFP 函数的实现放在我的 SPI DLL 中。现在你说我也应该实现 WFSOpen 的主体?!
-
当然,你是对的,我是说 WFP 职能
-
好的,我做到了。我把 spi dll 放在那里,但似乎有问题导致我收到错误。我可以参考哪些文件?你觉得怎么了?
-
出现此类错误的原因有很多。可能是 dll 导出、依赖项、注册表中的 SPI 注册等有问题。您可以访问 XFS 日志吗?可能有更多关于您的错误原因的详细信息。而XFS documentation 只是关于如何处理 XFS 的一个很好的信息来源。