VXDLDR_Notify

include vmm.inc
include vxdldr.inc

; Install a hook procedure
mov esi, OFFSET32 HookProc
VMMcall Hook_Device_Service

jc error
 

This service is called internally by VXDLDR at various stages of its operation. Devices which need to be notified of VXDLDR activity should hook this service.

The system calls the hook procedure as follows:

mov eax, NotificationCode
; other registers depending on the NotificationCode
call HookProc
 
NotificationCode
The notification code. Note that other registers may be used depending on the notification code. The following VXDLDR notification codes are defined:
Code Meaning
Ordinal of VXDLDR_Notify General notification.
VXDLDR_NOTIFY_OBJECTUNLOAD A dynamic object is being uloaded.

Register Meaning
EDI Address of the DeviceInfo structure for device being unloaded
EBX Address of the ObjectInfo structure for object being unloaded.
EDX Object number.

Each hook must preserve all registers and propagate the call down the chain. Any registers not explicitly defined are reserved for future extension of this service.

Do not use the DI_DDB member in the DeviceInfo structure because the DDB may have been freed.