WOSA/XFS
От: Vladimir_ Литва  
Дата: 08.06.06 14:34
Оценка:
Тема непопулярная, но всё-таки может кто-нибудь сталкивался с WOSA/XFS и сможет мне помочь?

Выполняю
WFSStartUp
WFSOpen
WFSLock
Затем WFSExecute(..., WFS_CMD_CDM_START_EXCHANGE,...),

но функция WFSExecute возвращает WFS_ERR_INTERNAL_ERROR. В чем может быть проблема??

WFSCDMSTARTEX WfsStartEx;                        // input data
USHORT ausNum[1];                                // input data
LPWFSCDMCUINFO lpCuInfoOut;                      // output data
HRESULT hRes;                                    // Result of the API call
LPWFSRESULT lpWfsRet;                            // Output

// prepare input data
// ==================

ausNum[0] = 2;                               // change logical cash unit number 2
WfsStartEx.usCount = 1;
WfsStartEx.lpusCUNumList = ausNum;

hRes = WFSExecute (hService,                      
                    WFS_CMD_CDM_START_EXCHANGE,    
                    (LPVOID)&WfsStartEx,           
                    WFS_INDEFINITE_WAIT,  
                    &lpWfsRet);
Re: WOSA/XFS
От: Nagelo  
Дата: 11.12.06 20:46
Оценка:
Здравствуйте, Vladimir_, Вы писали:

V_>Тема непопулярная, но всё-таки может кто-нибудь сталкивался с WOSA/XFS и сможет мне помочь?


V_>Выполняю

V_> WFSStartUp
V_> WFSOpen
V_> WFSLock
V_>Затем WFSExecute(..., WFS_CMD_CDM_START_EXCHANGE,...),

V_>но функция WFSExecute возвращает WFS_ERR_INTERNAL_ERROR. В чем может быть проблема??


V_>
V_>WFSCDMSTARTEX WfsStartEx;                        // input data
V_>USHORT ausNum[1];                                // input data
V_>LPWFSCDMCUINFO lpCuInfoOut;                      // output data
V_>HRESULT hRes;                                    // Result of the API call
V_>LPWFSRESULT lpWfsRet;                            // Output

V_>// prepare input data
V_>// ==================

V_>ausNum[0] = 2;                               // change logical cash unit number 2
V_>WfsStartEx.usCount = 1;
V_>WfsStartEx.lpusCUNumList = ausNum;

V_>hRes = WFSExecute (hService,                      
V_>                    WFS_CMD_CDM_START_EXCHANGE,    
V_>                    (LPVOID)&WfsStartEx,           
V_>                    WFS_INDEFINITE_WAIT,  
V_>                    &lpWfsRet);   


V_>


Здравствуйте Владимир, тема WOSA/XFS действительно непопулярна... В связи с этим хотелось бы задать вопрос... У меня ситуация следующая:
Выполняю

WFSStartUp
WFSOpen
Эти 2 функции выполняются успешно. После этого пытаюсь запустить WFSRegister, WFSGetInfo, WFSExecute... не работает даже WFSClose... все
эти функции возвращают 0хffffffd5, что означает недоступность библиотеки с драйвером устройства... В описании написано, что эта бага может
возникнуть при выполнении функции WFSOpen, но она возвращает успех... Если вы уже побывали в такой ситуации и вышли победителем... поведайте пожалуйста в чем было дело
Re[2]: WOSA/XFS
От: Vladimir_ Литва  
Дата: 14.12.06 10:42
Оценка:
Здравствуйте, Nagelo, Вы писали:

N>Здравствуйте Владимир, тема WOSA/XFS действительно непопулярна... В связи с этим хотелось бы задать вопрос... У меня ситуация следующая:

N>Выполняю

N> WFSStartUp

N> WFSOpen
N>Эти 2 функции выполняются успешно. После этого пытаюсь запустить WFSRegister, WFSGetInfo, WFSExecute... не работает даже WFSClose... все
N>эти функции возвращают 0хffffffd5, что означает недоступность библиотеки с драйвером устройства... В описании написано, что эта бага может
N>возникнуть при выполнении функции WFSOpen, но она возвращает успех... Если вы уже побывали в такой ситуации и вышли победителем... поведайте пожалуйста в чем было дело

Возможно дело в параметре lpszLogicalName, который Вы передаёте в WFSOpen.
Попробуйте его изменить:

    // in this example the ATM service is opened
    // (this has to be done for each service that should be used)
    lpszLogicalName = "ATM";         // corresponds to the name in the
                                             // LOGICAL_SERVICES part of the registry
    hApp            = WFS_DEFAULT_HAPP;      // use the default handle
    lpszAppID       = "Example Application"; // name of the application
    dwTraceLevel    = 0;                     // no tracing
    dwTimeOut       = WFS_INDEFINITE_WAIT;   // wait until completion
    dwVersionsRequired = 0x00010002;         // all versions from 1.0-2.0
                                             // are allowed

    // open the ATM service
    hRes = WFSOpen(lpszLogicalName, hApp, lpszAppID, dwTraceLevel,
                    dwTimeOut, dwVersionsRequired, &SrvcVersion,
                    &SPIVersion, &hService);
Re[3]: WOSA/XFS
От: Nagelo  
Дата: 19.12.06 08:35
Оценка:
Здравствуйте, Vladimir_, Вы писали:

V_>Здравствуйте, Nagelo, Вы писали:


N>>Здравствуйте Владимир, тема WOSA/XFS действительно непопулярна... В связи с этим хотелось бы задать вопрос... У меня ситуация следующая:

N>>Выполняю

N>> WFSStartUp

N>> WFSOpen
N>>Эти 2 функции выполняются успешно. После этого пытаюсь запустить WFSRegister, WFSGetInfo, WFSExecute... не работает даже WFSClose... все
N>>эти функции возвращают 0хffffffd5, что означает недоступность библиотеки с драйвером устройства... В описании написано, что эта бага может
N>>возникнуть при выполнении функции WFSOpen, но она возвращает успех... Если вы уже побывали в такой ситуации и вышли победителем... поведайте пожалуйста в чем было дело

V_>Возможно дело в параметре lpszLogicalName, который Вы передаёте в WFSOpen.

V_>Попробуйте его изменить:

V_>
V_>    // in this example the ATM service is opened
V_>    // (this has to be done for each service that should be used)
V_>    lpszLogicalName = "ATM";         // corresponds to the name in the
V_>                                             // LOGICAL_SERVICES part of the registry
V_>    hApp            = WFS_DEFAULT_HAPP;      // use the default handle
V_>    lpszAppID       = "Example Application"; // name of the application
V_>    dwTraceLevel    = 0;                     // no tracing
V_>    dwTimeOut       = WFS_INDEFINITE_WAIT;   // wait until completion
V_>    dwVersionsRequired = 0x00010002;         // all versions from 1.0-2.0
V_>                                             // are allowed

V_>    // open the ATM service
V_>    hRes = WFSOpen(lpszLogicalName, hApp, lpszAppID, dwTraceLevel,
V_>                    dwTimeOut, dwVersionsRequired, &SrvcVersion,
V_>                    &SPIVersion, &hService);
V_>


Здравствуйте Владимир, спасибо за совет... в общем то с драйвером я разобрался... сейчас другая проблема... выглядит она примерно так:
в качестве сервиса я создал приложение, с которым в функции Open создается TCP соединение, в XFS Manager из этой же функции Open я посылаю хэндл соединения (сокета). Однако другие функции все равно не вызываются. Причем когда я впервые создал TCP сессию между WFPOpen и сервисом WFSClose возвратила успех. Но к сожалению в ходе дальнейшей работы этот результат был утерян и возвращаемое всеми функциями значение — 0xfffffff1(WFS_INTERNAL_ERROR)
Re[4]: WOSA/XFS
От: Vladimir_ Литва  
Дата: 20.12.06 16:04
Оценка:
N>Здравствуйте Владимир, спасибо за совет... в общем то с драйвером я разобрался... сейчас другая проблема... выглядит она примерно так:
N>в качестве сервиса я создал приложение, с которым в функции Open создается TCP соединение, в XFS Manager из этой же функции Open я посылаю хэндл соединения (сокета). Однако другие функции все равно не вызываются. Причем когда я впервые создал TCP сессию между WFPOpen и сервисом WFSClose возвратила успех. Но к сожалению в ходе дальнейшей работы этот результат был утерян и возвращаемое всеми функциями значение — 0xfffffff1(WFS_INTERNAL_ERROR)

хмм.. хороший вопрос..так сходу никаких идей нет ((...
Re[5]: WOSA/XFS
От: vaduha  
Дата: 16.06.08 13:13
Оценка:
Тема *супер* непопулярная вот натолкнулся случайно спустя столько лет. Возможно кто-то может еще ответить. Стоит задача собирать сообщения от устройств по мере их поступления, т.е. подписаться на все сообщения которые ходят в WOSA и фильтровать их для логирования. Может кто сталкивался с подобной задачей? Все что смог найти это спецификации CEN, но к сожалению там написано хоть и много, но без определенных примеров, и понять достаточно сложно, не говоря уж о том что разные вендоры выпускают различные менеджеры и прочее. Буду благодарен за любую инфу.
Re[6]: WOSA/XFS
От: Vladimir_ Литва  
Дата: 17.06.08 05:14
Оценка:
Здравствуйте, vaduha, Вы писали:

Здравствуйте, vaduha, Вы писали:

Здравствуйте , да тема действительно не самая популярная. Задача несложная, но требует наличия соответствующей документации по WOSA.
В качестве небольшого примера работы с event'ом из доков:

The WFS_EXEE_PTR_MEDIAINSERTED Execute Event is generated by the commands of the PTR service.

#include "xfsptr.h"

LPWFSRESULT lpWfsRet; // Output

// Evaluation of the Windows messages

// ==================================

switch(msg) // Message type

{

// Evaluation of the Execute Events

// ================================

case WFS_EXECUTE_EVENT:



lpWfsRet = (LPWFSRESULT)lParam; // 2nd msg parameter

if (lpWfsRet->hResult == WFS_SUCCESS)

{


switch (lpWfsRet->u.dwEventID) // Event ID

{

// Event WFS_EXEE_PTR_MEDIAINSERTED

case WFS_EXEE_PTR_MEDIAINSERTED:

// no event data

break;

}

}

else

{

// do error handling

}

WFSFreeResult(lpWfsRet);

break;

}
Re[7]: WOSA/XFS
От: vaduha  
Дата: 17.06.08 06:23
Оценка:
Здравствуйте, Владимир!

Как я понял оба ответа Ваши, спасибо большое! А что это за такая *соответствующая* секретная документация ? Например WFS_EXEE_PTR_MEDIAINSERTED в спецификации от CEN я ненашел. Не видел я и таких примеров. В спецификации описан типичный сценарий StartUp->Open->Register->...->Deregister->Close->CleanUp. Собственно непонятен шаг регистрации.

Во-первых, описаны 4 вида событий SERVICE_EVENTS, USER_EVENTS, SYSTEV_EVENTS, EXECUTE_EVENTS. Судя по описанию мне в основном нужны события последнего типа, но там же сказано что они посылаются *только* приложению которое вызывало WFSExecute. Мне же как раз нужно чтобы мое приложение перехватывало события которые происходят в системе, мое же приложения никаких функций провайдеров использовать не будет.

Во-вторых, далее описан пример вызова функции
hr = WFSRegister( hService,USER_EVENTS|SERVICE_EVENTS,hWnd );
как я понимаю здесь hService это то что мне вернуло WFSOpen по LogicalName. Но если я незнаю какие устройства присутствуют в системе? Я не нашел ни одной функции типа EnumerateServices. Можно конечно прочитать реестр, но это же не факт что все эти сервисы запущены. Как правильно поступить в этой ситуации?
Re[8]: WOSA/XFS
От: Vladimir_ Литва  
Дата: 18.06.08 08:34
Оценка:
Здравствуйте, vaduha, Вы писали:

V>Во-вторых, далее описан пример вызова функции

V>hr = WFSRegister( hService,USER_EVENTS|SERVICE_EVENTS,hWnd );
V>как я понимаю здесь hService это то что мне вернуло WFSOpen по LogicalName.

Да, именно так.

V>Но если я незнаю какие устройства присутствуют в системе? Я не нашел ни одной функции типа EnumerateServices. Можно V>конечно прочитать реестр, но это же не факт что все эти сервисы запущены. Как правильно поступить в этой ситуации?


К сожалению, Вам нужно знать logical names устройств, которые вы хотите "слушать".
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.