Win32-2.3.1.0: A binding to part of the Win32 library

Copyright | (c) Esa Ilari Vuokko, 2006
License | BSD-style (see the file LICENSE)
Maintainer | Esa Ilari Vuokko <ei@vuokko.info>
Stability | provisional
Portability | portable
Safe Haskell | Safe
Language | Haskell98

System.Win32.DebugApi

Description

A collection of FFI declarations for using Windows DebugApi.

# Documentation

type PID = DWORD

type TID = DWORD

type DebugEventId = (PID, TID)

type ForeignAddress = Word32

type PHANDLE = Ptr ()

type THANDLE = Ptr ()

type ThreadInfo = (THANDLE, ForeignAddress, ForeignAddress)

type ImageInfo = (HANDLE, ForeignAddress, DWORD, DWORD, ForeignAddress)

type ExceptionInfo = (Bool, Bool, ForeignAddress)

data Exception

Constructors

UnknownException |
AccessViolation Bool ForeignAddress |
ArrayBoundsExceeded |
Breakpoint |
DataTypeMisalignment |
FltDenormalOperand |
FltDivideByZero |
FltInexactResult |
FltInvalidOperation |
FltOverflow |
FltStackCheck |
FltUnderflow |
IllegalInstruction |
InPageError |
IntDivideByZero |
IntOverflow |
InvalidDisposition |
NonContinuable |
PrivilegedInstruction |
SingleStep |
StackOverflow |

Instances

Show Exception |

data DebugEventInfo

Constructors

UnknownDebugEvent |
Exception ExceptionInfo Exception |
CreateThread ThreadInfo |
CreateProcess PHANDLE ImageInfo ThreadInfo |
ExitThread TID |
ExitProcess PID |
LoadDll ImageInfo |
UnloadDll TID |
DebugString ForeignAddress Bool WORD |

Instances

Show DebugEventInfo |

type DebugEvent = (DebugEventId, DebugEventInfo)

peekDebugEvent :: Ptr a -> IO DebugEvent

waitForDebugEvent :: Maybe Int -> IO (Maybe DebugEvent)

getDebugEvents :: Int -> IO [DebugEvent]

continueDebugEvent :: DebugEventId -> Bool -> IO ()

debugActiveProcess :: PID -> IO ()

peekProcessMemory :: PHANDLE -> ForeignAddress -> Int -> Ptr a -> IO ()

readProcessMemory :: PHANDLE -> ForeignAddress -> Int -> IO (ForeignPtr a)

pokeProcessMemory :: PHANDLE -> ForeignAddress -> Int -> Ptr a -> IO ()

withProcessMemory :: PHANDLE -> ForeignAddress -> Int -> (Ptr a -> IO b) -> IO b

peekP :: Storable a => PHANDLE -> ForeignAddress -> IO a

pokeP :: Storable a => PHANDLE -> ForeignAddress -> a -> IO ()

suspendThread :: THANDLE -> IO DWORD

resumeThread :: THANDLE -> IO DWORD

withSuspendedThread :: THANDLE -> IO a -> IO a

getThreadContext :: THANDLE -> Ptr a -> IO ()

setThreadContext :: THANDLE -> Ptr a -> IO ()

useAllRegs :: Ptr a -> IO ()

withThreadContext :: THANDLE -> (Ptr a -> IO b) -> IO b

eax :: Int

ebx :: Int

ecx :: Int

edx :: Int

esi :: Int

edi :: Int

ebp :: Int

eip :: Int

esp :: Int

segCs :: Int

segDs :: Int

segEs :: Int

segFs :: Int

segGs :: Int

eFlags :: Int

dr :: Int -> Int

setReg :: Ptr a -> Int -> DWORD -> IO ()

getReg :: Ptr a -> Int -> IO DWORD

modReg :: Ptr a -> Int -> (DWORD -> DWORD) -> IO DWORD

makeModThreadContext :: [(Int, DWORD -> DWORD)] -> Ptr a -> IO [DWORD]

modifyThreadContext :: THANDLE -> [(Int, DWORD -> DWORD)] -> IO [DWORD]

outputDebugString :: String -> IO ()

c_SuspendThread :: THANDLE -> IO DWORD

c_ResumeThread :: THANDLE -> IO DWORD

c_WaitForDebugEvent :: Ptr () -> DWORD -> IO BOOL

c_ContinueDebugEvent :: DWORD -> DWORD -> DWORD -> IO BOOL

c_DebugActiveProcess :: DWORD -> IO Bool

c_ReadProcessMemory :: PHANDLE -> Ptr () -> Ptr Word8 -> DWORD -> Ptr DWORD -> IO BOOL

c_WriteProcessMemory :: PHANDLE -> Ptr () -> Ptr Word8 -> DWORD -> Ptr DWORD -> IO BOOL

c_GetThreadContext :: THANDLE -> Ptr () -> IO BOOL

c_SetThreadContext :: THANDLE -> Ptr () -> IO BOOL

c_OutputDebugString :: LPTSTR -> IO ()

isDebuggerPresent :: IO BOOL

debugBreak :: IO ()