Windows VxD 与应用程序通信技术解析
1. Windows 95 下 VxD 与 Win16 应用程序通信
在 Windows 3.x 中,需要分两步来处理与应用程序的通信,即先调用Call_Priority_VM_Event,然后在事件处理程序中进行嵌套执行服务。而在 Windows 95 中,这一过程可以简化为单次调用SHELL_PostMessage。如果版本检查确定为 Windows 95,POSTVXD中的OnVmInit和OnVmTerminate处理程序只需执行以下操作:
SHELL_PostMessage( PostMsghWnd, WM_USER_POSTVXD,1, (DWORD)hVM, PostMessageHandler, NULL );这里不再需要动态分配的VMINFO结构,因为消息处理程序本身可以直接将 VM 句柄和布尔值传递给SHELL_PostMessage。
1.1 “appy - time” 功能
在 Windows 95 下运行的 VxD 与 Win16 代码通信时,除了使用SHELL_PostMessage外,还可以使用新的 “appy - time” 功能。通过这些功能,VxD 可以调用 Win16 DLL