Copyright | (c) The University of Glasgow 2009 |
---|---|
License | see libraries/base/LICENSE |
Maintainer | libraries@haskell.org |
Stability | internal |
Portability | non-portable |
Safe Haskell | Trustworthy |
Language | Haskell2010 |
Windows functionality used by several modules.
ToDo: this just duplicates part of System.Win32.Types, which isn't available yet. We should move some Win32 functionality down here, maybe as part of the grand reorganisation of the base package...
- type BOOL = Bool
- type LPBOOL = Ptr BOOL
- type BYTE = Word8
- type DWORD = Word32
- type UINT = Word32
- type ErrCode = DWORD
- type HANDLE = Ptr ()
- type LPWSTR = Ptr CWchar
- type LPTSTR = LPWSTR
- iNFINITE :: DWORD
- iNVALID_HANDLE_VALUE :: HANDLE
- throwGetLastError :: String -> IO a
- failWith :: String -> ErrCode -> IO a
- getLastError :: IO ErrCode
- getErrorMessage :: ErrCode -> IO String
- errCodeToIOError :: String -> ErrCode -> IO IOError
- failIf :: (a -> Bool) -> String -> IO a -> IO a
- failIf_ :: (a -> Bool) -> String -> IO a -> IO ()
- failIfNull :: String -> IO (Ptr a) -> IO (Ptr a)
- failIfZero :: (Eq a, Num a) => String -> IO a -> IO a
- failIfFalse_ :: String -> IO Bool -> IO ()
- failUnlessSuccess :: String -> IO ErrCode -> IO ()
- failUnlessSuccessOr :: ErrCode -> String -> IO ErrCode -> IO Bool
- c_maperrno :: IO ()
- c_maperrno_func :: ErrCode -> Errno
Types
Be careful with this. LPTSTR can mean either WCHAR* or CHAR*, depending on whether the UNICODE macro is defined in the corresponding C code. Consider using LPWSTR instead.
Constants
System errors
throwGetLastError :: String -> IO a #
Get the last system error, and throw it as an IOError
exception.
getLastError :: IO ErrCode #
Get the last system error produced in the current thread.
getErrorMessage :: ErrCode -> IO String #
Get a string describing a Windows error code. This uses the
FormatMessage
system call.
Guards for system calls that might fail
Mapping system errors to errno
On Windows, errno
is defined by msvcrt.dll for compatibility with other
systems, and is distinct from the system error as returned
by GetLastError
.
c_maperrno :: IO () #
Map the last system error to an errno value, and assign it to errno
.
c_maperrno_func :: ErrCode -> Errno #
Pure function variant of c_maperrno
that does not call GetLastError
or modify errno
.