Пример объекта службы MSOS OPOS, который я пишу, не инициализировался должным образом. Я добавляю этот вопрос, чтобы помочь другим, сталкивающимся с одной и той же проблемой, поскольку различные поиски не привели к какой-либо помощи.OPOS_E_NOSERVICE после возврата из DllGetClassObject() в простой объект службы ATL COM OPOS
Мой вопрос: Как определить, какой метод в объекте службы OPOS отсутствует? Есть ли какая-либо полезность, которая может использовать объект службы OPOS и сказать мне, чего не хватает? Есть ли способ определить, какие методы должен предоставлять интерфейс, а какие отсутствуют?
Я следую процедуре в Writing an OPOS Service Object using ATL, чтобы узнать, как создается объект службы OPOS. Я использую Visual Studio 2005 под Windows XP. Чтобы проверить базовую функциональность, я использую утилиту NCR Retail Services Manager (RSM) для создания профиля для MSR, чтобы проверить базовые функциональные возможности сервисного объекта Simulator Reader Mag Stripe Reader.
Проект Visual Studio создает COM-объект и регистрирует его должным образом. Когда я пытаюсь использовать функцию диагностики RSM в профиле объекта службы, я получаю сообщение об ошибке OPOS_E_NOSERVICE
. Я создал функцию регистрации журнала в объекте COM, которая показывает, что объект службы загружен, вызывается функция объекта DLLMain()
объекта COM и вызывается DLLGetClassObject()
. Однако второй файл журнала, который регистрирует различные методы интерфейса Service Object, не создается, показывая, что не вызваны ни один из методов интерфейса Service Object.
По-видимому, существует проблема с интерфейсом Service Object, который не выполняет проверку, выполняемую во время загрузки COM-объекта.
Функция DllGetClassObject()
создана мастером проектов Visual Studio ATL и не требует изменений.
С помощью утилиты Microsoft POS .NET, которая поставляется с POS .NET 1.12, я попытался использовать утилиту sample. Я вижу профиль, созданный с помощью NCR RSM в дереве управления под узлом MSR. Однако при попытке ввода Open
появляется сообщение об ошибке. В журнале событий Windows отображается следующая ошибка.
Microsoft.PointOfService.PosControlException: метод Open бросил исключение . Объект службы не поддерживает один или несколько методов , необходимых для его выпуска.
Ваше сообщение будет удалено, если вы не сделаете это надлежащим образом. Задайте вопрос, напишите ответ. –
@ HansPassant, это лучше? Я выполнил поиск в Google на OPOS_E_NOSERVICE, и этот вопрос появился на первой странице результатов. Если бы у меня был этот вопрос два дня назад, это помогло бы мне, поэтому я надеюсь, что это поможет другим. Это кажется довольно эзотерической областью без большой документации. –