include vmm.inc Control_Dispatch Message, Procedure Control_Dispatch Message, Procedure, CallType, <Param1, Param2, ...>
Dispatches the given control message to the specified procedure.
Message
Identifies the control message. Can be one of the following values:
Value | Description |
Begin_PM_App | A protected-mode application is starting. |
Close_VM_Notify | A virtual machine is closing. |
Create_Thread | New thread being created. |
Create_VM | A virtual machine is being created. |
Critical_Reboot_Notify | System is restarting (interrupt disabled). |
Debug_Query | Requests for virtual device's debugging interface. |
Destroy_Thread | Thread being destroyed. |
Destroy_VM | A virtual machine is being destroyed. |
Device_Init | Virtual devices initializing (interrupts enabled). |
Device_Reboot_Notify | System is restarting (interrupts enabled). |
End_PM_App | A protected-mode application is ending. |
Init_Complete | All virtual devices have initialized. |
PNP_New_Device | New devnode (directed). |
Power_Event | Power is being suspended or resumed. |
Reboot_Processor | Virtual device must restart system if it can. |
Set_Device_Focus | A virtual device is taking the focus. |
Sys_Critical_Exit | System is terminating (interrupt disabled). |
Sys_Critical_Init | Virtual devices initializing (interrupts disabled). |
Sys_VM_Init | System VM is being created. |
Sys_Dynamic_Device_Exit | Dynamic VxD being unloaded (directed). |
Sys_Dynamic_Device_Init | Dynamic VxD being loaded (directed). |
Sys_VM_Terminate | System VM is being destroyed. |
System_Exit | System is terminating (interrupts enabled). |
Terminate_Thread | Thread being terminated. |
Thread_Init | Thread being initialized. |
Thread_Not_Executeable | Thread has stopped executing. |
VM_Critical_Init | Virtual machine being created (interrupts disabled). |
VM_Init | Virtual machine being created (interrupts enabled). |
VM_Not_Executable | Virtual machine has stopped executing. |
VM_Resume | Virtual machine execution resumed. |
VM_Suspend | Virtual machine execution suspended. |
VM_Terminate | Virtual machine begin destroyed. |
W32_DeviceIoControl | Win32 DeviceIoControl entry (directed). |
Another value defined in vmm.h is also acceptable.
Procedure
Name of the procedure to which to dispatch the message.
CallType
Optional parameter that describes the calling convention employed by the procedure. The default value indictates that the procedure is called directly without any special pre- or post-processing. Otherwise, the value may be cCall, pCall, or sCall, indicating that the procedure should be called with the C, Pascal, or StdCall calling convention, respectively. See below for additional remarks.
Param1, Param2, ...
Optional parameters to be passed to the procedure. Typically, registers are pushed as parameters. See below for additional remarks.
This macro is typically used in conjunction with the Begin_Control_Dispatch and End_Control_Dispatch macros to build a dispatch table. The Control_Dispatch macro can be used without the Begin_Control_Dispatch macro, but becomes the programmer's responsibility to declare a procedure in locked code (VxD_LOCKED_CODE_SEG), and clear the carry flag for any messages not processed.
If you use the CallType variant of this macro, then this macro may not be combined with the Begin_Control_Dispatch and End_Control_Dispatch macros.
See also Begin_Control_Dispatch, End_Control_Dispatch