dist-install\build\System\Win32\DLL.hs

    {-# LINE 1 "libraries\\Win32\\System\\Win32\\DLL.hsc" #-}

    {-# LINE 2 "libraries\\Win32\\System\\Win32\\DLL.hsc" #-}
    {-# LANGUAGE Safe #-}

    {-# LINE 6 "libraries\\Win32\\System\\Win32\\DLL.hsc" #-}
    -----------------------------------------------------------------------------
    -- |
    -- Module      :  System.Win32.DLL
    -- Copyright   :  (c) Alastair Reid, 1997-2003
    -- License     :  BSD-style (see the file libraries/base/LICENSE)
    --
    -- Maintainer  :  Esa Ilari Vuokko <ei@vuokko.info>
    -- Stability   :  provisional
    -- Portability :  portable
    --
    -- A collection of FFI declarations for interfacing with Win32.
    --
    -----------------------------------------------------------------------------

    module System.Win32.DLL where

    import System.Win32.Types

    import Foreign
    import Foreign.C

    #include "windows_cconv.h"

    {-# LINE 30 "libraries\\Win32\\System\\Win32\\DLL.hsc" #-}

    disableThreadLibraryCalls :: HMODULE -> IO ()
    disableThreadLibraryCalls hmod =
      failIfFalse_ "DisableThreadLibraryCalls" $ c_DisableThreadLibraryCalls hmod
    foreign import WINDOWS_CCONV unsafe "windows.h DisableThreadLibraryCalls"
      c_DisableThreadLibraryCalls :: HMODULE -> IO Bool

    freeLibrary :: HMODULE -> IO ()
    freeLibrary hmod =
      failIfFalse_ "FreeLibrary" $ c_FreeLibrary hmod
    foreign import WINDOWS_CCONV unsafe "windows.h FreeLibrary"
      c_FreeLibrary :: HMODULE -> IO Bool

    {-# CFILES cbits/HsWin32.c #-}
    foreign import ccall "HsWin32.h &FreeLibraryFinaliser"
        c_FreeLibraryFinaliser :: FunPtr (HMODULE -> IO ())

    getModuleFileName :: HMODULE -> IO String
    getModuleFileName hmod =
      allocaArray 512 $ \ c_str -> do
      failIfFalse_ "GetModuleFileName" $ c_GetModuleFileName hmod c_str 512
      peekTString c_str
    foreign import WINDOWS_CCONV unsafe "windows.h GetModuleFileNameW"
      c_GetModuleFileName :: HMODULE -> LPTSTR -> Int -> IO Bool

    getModuleHandle :: Maybe String -> IO HMODULE
    getModuleHandle mb_name =
      maybeWith withTString mb_name $ \ c_name ->
      failIfNull "GetModuleHandle" $ c_GetModuleHandle c_name
    foreign import WINDOWS_CCONV unsafe "windows.h GetModuleHandleW"
      c_GetModuleHandle :: LPCTSTR -> IO HMODULE

    getProcAddress :: HMODULE -> String -> IO Addr
    getProcAddress hmod procname =
      withCAString procname $ \ c_procname ->
      failIfNull "GetProcAddress" $ c_GetProcAddress hmod c_procname
    foreign import WINDOWS_CCONV unsafe "windows.h GetProcAddress"
      c_GetProcAddress :: HMODULE -> LPCSTR -> IO Addr

    loadLibrary :: String -> IO HINSTANCE
    loadLibrary name =
      withTString name $ \ c_name ->
      failIfNull "LoadLibrary" $ c_LoadLibrary c_name
    foreign import WINDOWS_CCONV unsafe "windows.h LoadLibraryW"
      c_LoadLibrary :: LPCTSTR -> IO HINSTANCE

    type LoadLibraryFlags = DWORD

    lOAD_LIBRARY_AS_DATAFILE       :: LoadLibraryFlags
    lOAD_LIBRARY_AS_DATAFILE       =  2
    lOAD_WITH_ALTERED_SEARCH_PATH  :: LoadLibraryFlags
    lOAD_WITH_ALTERED_SEARCH_PATH  =  8

    {-# LINE 82 "libraries\\Win32\\System\\Win32\\DLL.hsc" #-}

    loadLibraryEx :: String -> HANDLE -> LoadLibraryFlags -> IO HINSTANCE
    loadLibraryEx name h flags =
      withTString name $ \ c_name ->
      failIfNull "LoadLibraryEx" $ c_LoadLibraryEx c_name h flags
    foreign import WINDOWS_CCONV unsafe "windows.h LoadLibraryExW"
      c_LoadLibraryEx :: LPCTSTR -> HANDLE -> LoadLibraryFlags -> IO HINSTANCE

    setDllDirectory :: String -> IO ()
    setDllDirectory name =
      withTString name $ \ c_name ->
      failIfFalse_ (unwords ["SetDllDirectory", name]) $ c_SetDllDirectory c_name

    foreign import WINDOWS_CCONV unsafe "windows.h SetDllDirectoryW"
      c_SetDllDirectory :: LPTSTR -> IO BOOL