Virtual Devices (3.1) (vdag31qh.hlp) (Table of Contents; Topic list)
Out_Debug_String
                                                     Up Next Previous
────────────────────────────────────────────────────────────────────────────
 
include vmm.inc
 
pushfd                              ; save flags on stack
pushad                              ; save registers on stack
mov     esi, OFFSET32 String        ; points to string to write
VMMcall Out_Debug_String
popad
popfd
 
The Out_Debug_String service writes the specified null-terminated string to
the debugging device (the COM1 serial port). If the string contains register
placeholders, Out_Debug_String replaces these with the actual register
values (in hexadecimal), or the symbolic label nearest to the specified
addresses.
 
Parameter  Description
────────────────────────────────────────────────────────────────────────────
 
String     Points to a null-terminated string specifying the message to
           write to the debugging device. Out_Debug_String uses the lods
           instruction to process characters in the string, so the DS
           register must specify the correct segment selector for the
           string.
 
           The string can contain one or more placeholders having the
           following forms:
 
           Placeholder         Description
           ─────────────────────────────────────────────────────────────────
           #register           Displays the current value of the specified
                               register. For example, the service replaces
                               #AX with the value of the AX register. The
                               register must not be the name of a segment
                               register.
 
           ?register           Displays the label nearest the address
                               specified by the registers. For example, the
                               service replaces ?EAX with the VMM code
                               segment label nearest the address in the EAX
                               register. The register must not be the name
                               of a segment register.
 
           ?register:register  Displays the label nearest the address
                               specified by the registers. For example, the
                               service replaces ?AX:EBX with the label in
                               the segment specified by the AX register that
                               is nearest to the address in the EBX
                               register. The register must not be the name
                               of a segment register.
 
Return Value
 
This service has no return value.
 
Comments
 
This service has no effect in the retail version of Windows. It is intended
to be used with the debugging version.
 
If the string contains placeholders, Out_Debug_String requires the caller to
use the pushfd and pushad instructions before carrying out a near call to
this service.
 
Uses
 
All registers and flags
 
See Also
 
Trace_Out