Программист начального уровня пытается реализовать интерфейс COM.Я работаю над программой, которая взаимодействует с системой точек продаж Aloha.Aloha использует COM для работы с внешними программами.Я пытаюсь перехватить данные карты из устройства чтения магнитных карт, которое является считывателем OPOS, а не клавиатурным клином.Документация, которую я имею, не объясняет, как реализовать этот конкретный интерфейс, но она объясняет, как реализовать подобный интерфейс.Я пытался последовать этому примеру, но я никуда не попал.Поддержка от Aloha отсутствует, их документация плохая, устаревшая и иногда просто неправильная, хотя я заплатил за лицензию.
Я пытался создать простое приложение, чтобы протестировать эту функциональность.Вот что я сделал:
1) создайте новый проект в vc ++ 6.0 с помощью мастера приложений ATL COM 2) тип сервера dll 3) вставьте новый объект atl -> простой объект 4) щелкните правой кнопкой мыши на моем новом классе ивыберите интерфейс реализации 5) найдите библиотеку типов, выберите Iber.tlb (tlb Алохи) 6) выберите интерфейс, который я хочу реализовать
Это позволило создать файл .h, .cpp и .rgs.
.h файл имеет:
public:
// IInterceptMagcard
STDMETHOD(InterceptMagcard)(BSTR bstrAccountNumber, BSTR bstrCustomerName, BSTR bstrExpirationDate, BSTR bstrTrack1Info, BSTR bstrTrack2Info, BSTR bstrTrack3Info, BSTR bstrRawMagcardData, LONG * bWasDataHandled)
{
if (bWasDataHandled == NULL)
return E_POINTER;
return E_NOTIMPL;
}
Это где я реализую свой код?Я положил туда некоторый тестовый код, чтобы записать его в текстовый файл, просто чтобы проверить его.Затем я использовал:
HRESULT hr = CoCreateInstance(CLSID_AlohaMag, NULL, CLSCTX_INPROC_SERVER,
IID_IAlohaMag, (void **) &g_pIInterceptMagcard);
, где g_pIInterceptMagcard - указатель на мой класс интерфейса, созданный с помощью мастера выше.
Когда я пытаюсь зарегистрироваться, я получаю следующий HRESULT: 0x80040112 То есть "класс"не лицензирован для использования. "
Означает ли это, что моя программа не сделала необходимые записи в реестре?