阅读:1609回复:9
如何与应用程序同步通讯?
我作一个文件拦截的程序,我想在拦截到某个文件时,Win32应用程序等待用户输入密码,如果密码正确则允许访问该文件,如果不对则不允许访问。这其中就要碰到一个这样的问题,
case IFS_OPEN: 发信息给Win32应用程序(filename, &result); if (result) return ...; else return ...; 但是我找不到这样一个可以同步通讯的function,请各位大虾帮帮我! |
|
最新喜欢:![]() |
沙发#
发布于:2001-12-11 10:51
帮帮我吧~!各位大虾~!
|
|
板凳#
发布于:2001-12-11 12:11
你这个机制可以实现, 但是如果要求在三层调对话框的话,就很危险了。 |
|
|
地板#
发布于:2001-12-11 12:23
能告诉我如何实现吗??谢谢!!!
|
|
地下室#
发布于:2001-12-11 16:18
你自己维护一个全局链表。 requestlist
hookproc { ........ case IFS_OPEN: create guiSempathore add your request data (szFilename, szProcessName guiSempathore) in requestlist Wait guiSempathore get result from requestlist destory guiSempathore if (result) return ...; else return ...; break; ...... } onwin32deveicecontrol { case GET_GUI_REQUEST: if requestlist not empty { get a node from requestlist put the data of node to outbuffer } break; case ANSWER_GUI_REQUEST; got the dealed node in inbuffer put data note back to requestlist Signal sampathore of this node. break; } Ring 3 App //* please use a loop, and don\'t use windows::Ontimer while(1) { if( deveiceIoControl(GET_GUI_REQUEST ,&data)) { result=askuser(data) data.result=result deveiceIoControl(ANSWER_GUI_REQUEST ,&data) } } 我的伪码中没有 requestlist 的同步处理, 你要加上。 当你实现了这个东东的时候,你就会逐渐发现我说的不安全的原因了。 |
|
|
5楼#
发布于:2001-12-11 16:45
是,这我知道,但是怎么
Wait guiSempathore? 我就是这个搞不懂。 |
|
6楼#
发布于:2001-12-11 19:57
谢谢~!我知道了!
|
|
7楼#
发布于:2001-12-12 11:57
:D :D :D :D good luck |
|
|
8楼#
发布于:2001-12-30 23:36
如果你是在win9x,me下实现的话。
iamaf~1老兄的那个方法不行,我使用6种方法试图在9x上解决这个问题花了2个月,全部失败。 具体不行的原因,参照一下 http://www.pcausa.com/resources/r3hang.txt 十分经典的分析。 因为文章比较老,我曾寄托于98,Me上有些改善。我特意问了Walter Oney,他给的回答是9x,Me下也不可能。 我曾请教过一位参与过NT的PowerPC移植的老兄,他对我说,98,Me上的IOS是DOS构造,不支持无限重入。 如果你在win2000,nt4 sp4上实现的话,没有问题。我和我的兄弟作成过。没有任何不安定因素。 ring0上的实现放弃为好。 |
|
9楼#
发布于:2002-01-02 23:37
To yangjun:
你的头像怎么跟我的一样?可有盗版的嫌疑呦!! 哈哈!! |
|
|