请求执行时间段与shell函数
下载例子程序 【程序编程相关:ABAP学习笔记之四-指针】
【推荐阅读:ABAP学习笔记之五-报表的事件】
请求执行时间段通常被简称为"appy time".是指当系统vm稳定到充许vxds与ring-3级别的应用软件(特别是16-bit的应用软件)交互时的时间段.例如,在一个特定时间段,vxds能加载并调用在16-bit dlls中的函数.这个appy time在windows 3.x中是无效的.在windows3.x,一个vxd能包含在16-bit dlls中的任意函数的地址,并模拟一个远调用到这个地址.然而,因为造成了vmm重入,这个操作将中断所有正在ring-3中执行的任务.所以能被vxds能调用的apis被要求是中断安全的,象postmessage.在windows 95,一个vxd在appy time的帮助下能调用任意一个在16-bit dlls中的函数. 【扩展信息:刚在博客堂上看到思归作的一个java与c】
理论:
假如你的vxds被通知正处在appy time,它就能加载16-bit dlls并调用其中的函数.vxds怎么知道appy time到来了呢?这就要使用shell vxd请求一个appy time.当系统vm在稳定状态,shell vxd将调用某vxd的一个回调函数,此函数是在vxd请求appy time时指定的.shell vxd发生一次appy time事件仅仅调用一次你的回调函数.这就象找工作.你到职业介绍所,登记你的名字与电话号码.当你回到家,如有一个工作适合你,职业介绍所将电话通知你这个好消息.当你收到了这个消息,他们就不再通知你了.
在一个appy time起作用前要花上一些时间进行相关处理.appy time事件以下环境中将不起作用:
1.系统启动或关机时.
2.当系统vm在临界段或等待一个信号量时.管理一个appy time事件
你可以通过调用_shell_callatappytime来注册一个appy time事件,它的定义如下:
vxdcall _shell_callatappytime, <<offset32 pfncallback>, dwrefdata, dwflags, dwtimeout>
pfncallback -- 当appy time事件发生时你要shell vxd调用的回调函数的平板地址.这个函数接收两个参数,dwrefdata与dwflags,与你传送给_shell_callatappytime的两个一样.记住,shell vxd采用c调用顺序调用你的回调函数.总而言之,你要象这样定义你的回调函数:beginproc onappytime, ccall, publicargvar dwrefdata,dword ; declare argument name and type argvar dwflags, dword enterproc 你的代码... leaveproc return endproc onappytime dwrefdata -- 你要shell vxd传送给你的回调函数的参考数据.... 下一页