当前位置:编程学习 > VC++ >>

关于CEN/XFS(原WOSA)的SP开发的几个问题。

1、请问是否一次WFPUnlock可以关闭指定hService会话用若干个(可能>1)WFPLock设置的锁?即是否多次上锁,一次解锁? 2、请问WFPOpen的参数HSERVICE是否全系统唯一?例如可能存在多实例(多进程)的情况下,也唯一?或者只是在HAPP指定的范围内唯一?HAPP参数的作用是什么?我看除WFPOpen之外,所有其他SPI函数都只用一个HSERVICE标明所属会话,那么说明至少在一个进程内HSERVICE是不会重复的,HAPP用来标明什么呢?难道HAPP可以跨越不同进程? 3、CWA 15748-1:2008 P29页提到: Service state:LOCKED WFPUnlock and WFPClose requests that are not from the owner of the lock are treated as non-deferred requests, i.e. processed on arrival. 如果WFPClose在到达时即处理,那么同一会话内尚未处理的DEFERRED请求(e.g. WFPGetInfo)如何处理?是取消这些请求并返回WFS_ERR_CANCELED吗? 另外,WFPUnlock that are not from the owner of the lock 需要做些什么操作?直接返回WFS_ERR_NOT_LOCKED还是需要取消同一会话之前设置的WFPLock请求呢? 4、例如有三个会话同时请求上锁;首先第一个会话获得了锁,第二个和第三个会话触发WFS_SYSE_LOCK_REQUESTED;然后第一个会话释放了锁,第二个会话获取到了锁,此时第三个会话是否应该再次触发WFS_SYSE_LOCK_REQUESTED? 5、对于WFS_SERVICE_EVENT,WFS_USER_EVENT,WFS_SYSTEM_EVENT,WFS_EXECUTE_EVENT,这些事件触发时,LPARAM参数为一个WFSRESULT结构体的指针。这个结构体应该由谁释放呢?如果SP释放,那么释放的时机无法预知;如果由接收者释放,那么存在如下问题:同一个消息可能被POST盗多个对象,每个对象都要求释放的话内存肯定崩溃。应该是怎么样一个机制呢? 6、请问fwPaper [WFS_PTR_SUPPLYUPPER] 跟fwPaper [WFS_PTR_SUPPLYLOWER] 有何区别呢? 谢谢您的回复。
补充:谢谢您的回答;还需要继续向您请教。
1、谢谢;

2、您指的是HSERVICE跨进程唯一还是指HAPP是唯一的?如果HSERVICE不是全系统唯一的话,对于非WFPOpen请求都只有HSERVICE标识客户,SP如何区分不同的客户呢?

3、CWA16374-1-2011的P29页有如下内容:
Service state: LOCKED
Deferred requests that are not  WFPExecute  requests are placed in the deferred queue.
也就是说,在锁定状态下,未拥有锁的HSERVICE会话的WFPGetInfo请求将进入延期队列?
另外,WFPUnlock  that are not from the owner of the lock 需要做些什么操作?直接返回WFS_ERR_NOT_LOCKED还是需要取消同一会话之前设置的WFPLock请求呢?

4、如果第二个会话只有在收到WFS_SYSE_LOCK_REQUESTED时才释放锁,那么第三个会话岂不是要额外白等很多时间(如果第三个会话第二次无需触发WFS_SYSE_LOCK_REQUESTED的话)?

5、谢谢;


6、我在猪八戒网(http://task.zhubajie.com/1933135/ )上发布了一个有偿XFS任务,希望您能不吝赐教。

再次感谢!
追问:追问的字数有限制,所以我将追问内容写在“问题补充”内了,请您继续不吝赐教!

感谢!就是查不到才来求助的;专业的文档也看过几遍了,但是语意比较含糊,模棱两可。
答案:1、可以。
2、是唯一的。按协议SP不只能跨进程,还应该可以分布式。
3、LOCK后,其他会话的DEFERRED请求不可能进队了,因此,不会出现你说的情况。
4、不触发
5、APP释放,POST多个的话,每个的空间应该分别分配
6、只是打印机的抽象纸源而已。如果只有一个纸源,使用任意一个都可以。
 
这个协议有些地方是不明确,所以,不同的厂商理解不同,实现出来的东西也完全可能有差别。
其他:此类问题你应该直接去专业的论坛和知识网站查询!这里应该没有这样的专业答案!希望对你有帮助,别忘记给个最佳答案! 发大水 发大水 !! 

上一个:CFile* 参数是什么
下一个:VC++编译报错

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,