About VMM Messages

This chapter is an alphabetic listing of the system control messages sent to virtual devices by the virtual machine manager (VMM). Other components (for example, Vcomm, Vwin32, and the Configuration Manager) also direct system control messages to particular VxDs. Consult documentation for those other components for additional information.

In this chapter, the term "general registers" refers to the registers consisting of EAX, EBX, ECX, EDX, ESI, EDI, and EBP.

The purpose of the xx2 messages (such as SYS_VM_TERMINATE2 and VM_TERMINATE2) is to address a problem in Windows 3.1 where exit-like messages were sent in increasing initialization order, which created complicated dependencies in a layered device architecture. For example, suppose virtual device B always requires virtual device A. This is traditionally solved by giving virtual device A a lower initialization order. This solves the problem at initialization, but since Windows 3.1 sent shutdown messages in increasing initialization order, virtual device A would get the shutdown message first and uninstall itself. Then virtual device B got into trouble when it received the shutdown message because it requires services from virtual device A, which is already gone. There are various ways of working around this problem, none of them entirely satisfactory.

By introducing xx2 messages which are sent in reverse initialization order, virtual devices A and B can perform their shutdown on the xx2 message, in which case virtual device B will shut down first, while virtual device A is still ready to service requests, and only after B has finished processing the shutdown message will it then be given to virtual device A.

Note that these messages are sent by the virtual machine manager or other system components. Virtual devices should not send these messages on their own, unless otherwise indicated.