阅读:1865回复:6
高手请指点:程序关闭后仍然有线程运行???
我使用在Packet程序中用WriteFileEx发包,发现系统不能调用在WriteFileEx中设置的回调函数,而且在程序关闭后发现仍然有线程在运行,不知道怎么回事,哪位高手指点一下!!
|
|
沙发#
发布于:2002-04-18 10:19
我使用在Packet程序中用WriteFileEx发包,发现系统不能调用在WriteFileEx中设置的回调函数,而且在程序关闭后发现仍然有线程在运行,不知道怎么回事,哪位高手指点一下!! lpCompletionRoutine Pointer to a completion routine to be called when the write operation has been completed and the calling thread is in an alertable wait state. For more information about this completion routine, |
|
|
板凳#
发布于:2002-04-19 11:53
发现系统不能调用在WriteFileEx中设置的回调函数,而且在程序关闭后发现仍然有线程在运行,不知道怎么回事,哪位高手指点一下!! 1、driver是你写的,还是DDK提供的? 2、如果没有调用回调函数,肯定是包没有真正发送,因为一旦成功,系统就会立即返回到你的回调里面。 3、你在driver中加上你的调试语句,看看! |
|
|
地板#
发布于:2002-04-22 10:27
1.Driver是DDK的Packet程序改的。本来是发单包,改成了多包
2.经过跟踪,包确实发送了,并且每个包都返回了PacketSendComplete函数 3.当跟踪到PacketSendComplete后,Softice直接转到应用程序的WriteFileEx下面继续执行,并不调用回调函数。 真是奇怪。 |
|
地下室#
发布于:2002-04-23 10:20
3.当跟踪到PacketSendComplete后,Softice直接转到应用程序的WriteFileEx下面继续执行,并不调用回调函数。 试试不在驱动里面调试,在应用层调试,在回调中加断点,看是否能够进入回调???或者在回调和WriteFileEx下面加TRACE,看下! |
|
|
5楼#
发布于:2002-04-23 10:38
回调函数已经加了断点,所以可以判断没有执行回调函数。
帮助说当设备完成调用后,将进入一个Alert状态,然后才可以由系统启动回调函数,不知这个Alert状态是指什么 |
|
6楼#
发布于:2002-04-23 10:58
WriteFileEx返回是1????
|
|
|