Использование XFS

Обсуждаем инструментарий, технологии, прочие рабочие моменты.
Ledoff
Прохожий
Сообщения: 3
Зарегистрирован: 05 дек 2011, 19:20
Авто: Nissan Terrano
Откуда: Казахстан, Алматы.
Контактная информация:

Использование XFS

Непрочитанное сообщение Ledoff »

Господа, доброго времени суток, по работе сейчас сижу плотно над составлением постановок для софта, который будет мониторить состояние банкоматов на основе значений XFS статусов. И всё бы ничего, и XFS статусы уже освоил и значения их, но мучает вопрос, все ли производители банкоматов, а точнее основных аппликаций, придерживаются XFS?
То есть если на NCR допустим XFS статус X со значением Y означает, что карта зажата, то будет ли это же значение Y, но на Wincor, означать то же самое?

P.S. Если у кого-то есть вопросы касательно XFS, обращайтесь, чем смогу помогу.
Andrey_Fish
Местный
Сообщения: 120
Зарегистрирован: 07 июн 2010, 12:12
Авто: Nissan Pimera
Поблагодарили: 2 раза

Re: Использование XFS

Непрочитанное сообщение Andrey_Fish »

здравствуйте,мне помогите)))пытаюсь с помошью wosa/xfs подхватить статус карты вставили -вынули на банкомате Nautilus с установленным TellMe,ничего не получилось,могу подхватить только карта вынута,умные люди говорят что получиться только установкой хука с внедрением в процесс использующий msxfs.dll,так ли это?попроще не получиться?
Ledoff
Прохожий
Сообщения: 3
Зарегистрирован: 05 дек 2011, 19:20
Авто: Nissan Terrano
Откуда: Казахстан, Алматы.
Контактная информация:

Re: Использование XFS

Непрочитанное сообщение Ledoff »

А какой именно статус вы мониторите, XFS_IDC_fwMedia? Хук это 100% результат, если так же знать что "слушать".
На всякий случай, карта вставлена - XFS_IDC_fwMedia, WFS_IDC_MEDIAPRESENT, value-1; карта вынута\нет карты-XFS_IDC_fwMedia, WFS_IDC_MEDIANOTPRESENT, value-2.
Вот тут и сыграл бы роль факт, если быть уверенным, что Nautilus полностью придерживается XFS 3.10
Andrey_Fish
Местный
Сообщения: 120
Зарегистрирован: 07 июн 2010, 12:12
Авто: Nissan Pimera
Поблагодарили: 2 раза

Re: Использование XFS

Непрочитанное сообщение Andrey_Fish »

может хук это более надежнее но для меня сложновато (( мониторить пытался все классы от Service_Event до Execute_Event(мониторить последний как я понимаю смысла нет,я команд никаких не исполняю,просто слушаю).Мне кстати не понятно каким образмо можно поймать статус WFS_IDC_MEDIAPRESENT ? у меня получилось поймать только WFS_SRVE_IDC_MEDIAREMOVED
если не трудно ,гляньте код,делал все попроще,для отладки
запускаю
HRESULT hr;
WFSVERSION ver;
DWORD version = 0x00036303;используем xfs от 3 и выше
hr = WFSStartUp(version,&ver);
открыли сесию
hr = WFSOpen("CardReader",WFS_DEFAULT_HAPP,NULL,NULL,WFS_INDEFINITE_WAIT,version,&v1,&v2,&h);
регистрируюсь,по незнанию указал на всякий случай все классы,hWnd1 - хэндл основного окна
hr=WFSRegister(h,SERVICE_EVENTS|SYSTEM_EVENTS|USER_EVENTS|EXECUTE_EVENTS,hWnd1);
обрабатываю все сообщения в основной процедуре окна,сообщения пишу в файл,на всякий случай перед фильтром пишу все
сообщения в файл ,в итоге ловлю только WFS_SRVE_IDC_MEDIAREMOVED (((

case WFS_SERVICE_EVENT:
Спойлер
lpWFSResult=(LPWFSRESULT)lParam;
пишу до фильтра все что получаю
fprintf(file ,"Service \n");
fprintf(file,"%d \n",lpWFSResult->u.dwEventID);

switch(lpWFSResult->u.dwEventID)
{
case WFS_EXEE_IDC_MEDIAINSERTED:
fprintf(file,"Service_MEDIAINSERTED \n");
break;

case WFS_SRVE_IDC_MEDIAREMOVED:
fprintf(file,"Service_MEDIAREMOVED \n");
break;
}
break;

case WFS_SYSTEM_EVENT:
lpWFSResult=(LPWFSRESULT)lParam;
пишу до фильтра все что получаю
fprintf(file,"System \n");
fprintf(file,"%d \n",lpWFSResult->u.dwEventID);


switch(lpWFSResult->u.dwEventID)
{
case WFS_EXEE_IDC_MEDIAINSERTED:
fprintf(file,"System_MEDIAINSERTED \n");
break;

case WFS_SRVE_IDC_MEDIAREMOVED:
fprintf(file,"System_MEDIAREMOVED \n");
break;
}
break;

case WFS_USER_EVENT:

lpWFSResult=(LPWFSRESULT)lParam;
пишу до фильтра все что получаю
fprintf(file,"User \n");
fprintf(file,"%d \n",lpWFSResult->u.dwEventID);

switch(lpWFSResult->u.dwEventID)
{
case WFS_EXEE_IDC_MEDIAINSERTED:
fprintf(file,"User_MEDIAINSERTED \n");
break;

case WFS_SRVE_IDC_MEDIAREMOVED:
fprintf(file,"User_MEDIAREMOVED \n");
break;
}
break;


case WFS_EXECUTE_EVENT:
lpWFSResult=(LPWFSRESULT)lParam;
пишу до фильтра все что получаю
fprintf(file,"Execute \n");
fprintf(file,"%d \n",lpWFSResult->u.dwEventID);

switch(lpWFSResult->u.dwEventID)
{
case WFS_EXEE_IDC_MEDIAINSERTED:
fprintf(file,"Execute_MEDIAINSERTED \n");
break;

case WFS_SRVE_IDC_MEDIAREMOVED:
fprintf(file,"Execute_MEDIAREMOVED \n");
break;
}
break;
Ledoff
Прохожий
Сообщения: 3
Зарегистрирован: 05 дек 2011, 19:20
Авто: Nissan Terrano
Откуда: Казахстан, Алматы.
Контактная информация:

Re: Использование XFS

Непрочитанное сообщение Ledoff »

Боюсь в коде я Вам не помошник, я же системный аналитик :oops:
Ответить