Function 69, subfunction 9 - set/clear hardware breakpoint.
Parameters:
- eax = 69 - function number
- ebx = 9 - subfunction number
- ecx = thread identifier
- dl = index of breakpoint, from 0 to 3 inclusively
- dh = flags:
- if high bit is cleared - set breakpoint:
- bits 0-1 - condition:
- 00 = breakpoint on execution
- 01 = breakpoint on read
- 11 = breakpoint on read/write
- bits 2-3 - length; for breakpoints on exception it must be
00, otherwise one of
- 00 = byte
- 01 = word
- 11 = dword
- esi = breakpoint address; must be aligned according to
the length (i.e. must be even for word breakpoints,
divisible by 4 for dword)
- if high bit is set - clear breakpoint
Returned value:
- eax = 0 - success
- eax = 1 - error in the input data
- eax = 2 - (reserved, is never returned in the current
implementation) a global breakpoint with that index is already set
Remarks:
- Process must be loaded for debugging (as is shown in
general description).
- Hardware breakpoints are implemented through DRx-registers of
the processor, all limitations results from this.
- The function can reinstall the breakpoint, previously set
by it (and it does not inform on this).
Carry on the list of set breakpoints in the debugger.
- Breakpoints generate debug exception #DB, on which the system
notifies debugger.
- Breakpoints on write and read/write act after
execution of the caused it instruction.