【发布时间】:2015-10-03 06:16:10
【问题描述】:
我正在编写的示例 MSR OPOS 服务对象未正确初始化。我添加这个问题是为了帮助遇到同样问题的其他人,因为各种搜索都没有任何帮助。
我的问题是:如何确定 OPOS 服务对象中缺少什么方法?是否有某种实用程序可以运行 OPOS 服务对象并告诉我缺少什么?有什么方法可以确定接口应该提供哪些方法以及缺少哪些方法?
我正在遵循Writing an OPOS Service Object using ATL 中的过程,以了解如何创建 OPOS 服务对象。我在 Windows XP 下使用 Visual Studio 2005。为了测试基本功能,我使用 NCR 零售服务管理器 (RSM) 实用程序为 MSR 创建配置文件,以便测试磁条阅读器模拟器服务对象的基本功能。
Visual Studio 项目创建 COM 对象并正确注册它。当我尝试在服务对象配置文件上使用 RSM 的诊断功能时,我收到错误 OPOS_E_NOSERVICE。我在 COM 对象中创建了一个日志文件记录函数,显示服务对象已加载,COM 对象的DLLMain() 函数被调用,DLLGetClassObject() 被调用。但是,没有创建记录各种服务对象接口方法的第二个日志文件,表明没有调用任何服务对象接口方法。
因此,服务对象接口似乎存在问题,导致在加载 COM 对象时进行的检查失败。
DllGetClassObject() 函数由 Visual Studio ATL 项目向导生成,不需要更改。
使用 POS .NET 1.12 附带的 Microsoft POS .NET 示例实用程序,我尝试使用示例实用程序。我可以在 MSR 节点下的树控件中看到使用 NCR RSM 创建的配置文件。但是,当我尝试 Open 时,会出现错误消息。 Windows 事件日志显示以下错误。
Microsoft.PointOfService.PosControlException:方法打开抛出了一个 例外。服务对象不支持以下一项或多项 其发布所需的方法。
【问题讨论】:
-
如果您没有以正确的方式执行此操作,您的帖子最终将被删除。提出问题,发布答案。
-
@HansPassant,这样更好吗?我在
OPOS_E_NOSERVICE上进行了谷歌搜索,这个问题出现在结果的第一页。如果我两天前有这个问题,它会对我有所帮助,所以我希望它对其他人有所帮助。这似乎是一个相当深奥的领域,没有大量文档。
标签: visual-c++ atl point-of-sale opos service-object