Control_Dispatch


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