{-# LINE 1 "System\\Win32\\WindowsString\\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.
--
-----------------------------------------------------------------------------
moduleSystem.Win32.WindowsString.DLL(moduleSystem.Win32.WindowsString.DLL ,moduleSystem.Win32.DLL )whereimportSystem.Win32.DLL hiding(disableThreadLibraryCalls ,freeLibrary ,getModuleFileName ,getModuleHandle ,getProcAddress ,loadLibrary ,loadLibraryEx ,setDllDirectory ,lOAD_LIBRARY_AS_DATAFILE ,lOAD_WITH_ALTERED_SEARCH_PATH )importSystem.Win32.DLL.Internal importSystem.Win32.WindowsString.Types importForeignimportData.Maybe(fromMaybe)importSystem.OsString.Windows importGHC.IO.Encoding.UTF16(mkUTF16le)importGHC.IO.Encoding.Failure(CodingFailureMode(..))getModuleFileName ::HMODULE ->IOWindowsString getModuleFileName :: HMODULE -> IO WindowsString
getModuleFileName HMODULE
hmod =Int -> (Ptr TCHAR -> IO WindowsString) -> IO WindowsString
forall a b. Storable a => Int -> (Ptr a -> IO b) -> IO b
allocaArrayInt
512((Ptr TCHAR -> IO WindowsString) -> IO WindowsString)
-> (Ptr TCHAR -> IO WindowsString) -> IO WindowsString
forall a b. (a -> b) -> a -> b
$\Ptr TCHAR
c_str ->doString -> IO Bool -> IO ()
failIfFalse_ String
"GetModuleFileName"(IO Bool -> IO ()) -> IO Bool -> IO ()
forall a b. (a -> b) -> a -> b
$HMODULE -> Ptr TCHAR -> Int -> IO Bool
c_GetModuleFileName HMODULE
hmod Ptr TCHAR
c_str Int
512Ptr TCHAR -> IO WindowsString
peekTString Ptr TCHAR
c_str getModuleHandle ::MaybeWindowsString ->IOHMODULE getModuleHandle :: Maybe WindowsString -> IO HMODULE
getModuleHandle Maybe WindowsString
mb_name =(WindowsString -> (Ptr TCHAR -> IO HMODULE) -> IO HMODULE)
-> Maybe WindowsString -> (Ptr TCHAR -> IO HMODULE) -> IO HMODULE
forall a b c.
(a -> (Ptr b -> IO c) -> IO c)
-> Maybe a -> (Ptr b -> IO c) -> IO c
maybeWithWindowsString -> (Ptr TCHAR -> IO HMODULE) -> IO HMODULE
forall a. WindowsString -> (Ptr TCHAR -> IO a) -> IO a
withTString Maybe WindowsString
mb_name ((Ptr TCHAR -> IO HMODULE) -> IO HMODULE)
-> (Ptr TCHAR -> IO HMODULE) -> IO HMODULE
forall a b. (a -> b) -> a -> b
$\Ptr TCHAR
c_name ->String -> IO HMODULE -> IO HMODULE
forall a. String -> IO (Ptr a) -> IO (Ptr a)
failIfNull String
"GetModuleHandle"(IO HMODULE -> IO HMODULE) -> IO HMODULE -> IO HMODULE
forall a b. (a -> b) -> a -> b
$Ptr TCHAR -> IO HMODULE
c_GetModuleHandle Ptr TCHAR
c_name loadLibrary ::WindowsString ->IOHMODULE loadLibrary :: WindowsString -> IO HMODULE
loadLibrary WindowsString
name =WindowsString -> (Ptr TCHAR -> IO HMODULE) -> IO HMODULE
forall a. WindowsString -> (Ptr TCHAR -> IO a) -> IO a
withTString WindowsString
name ((Ptr TCHAR -> IO HMODULE) -> IO HMODULE)
-> (Ptr TCHAR -> IO HMODULE) -> IO HMODULE
forall a b. (a -> b) -> a -> b
$\Ptr TCHAR
c_name ->String -> IO HMODULE -> IO HMODULE
forall a. String -> IO (Ptr a) -> IO (Ptr a)
failIfNull String
"LoadLibrary"(IO HMODULE -> IO HMODULE) -> IO HMODULE -> IO HMODULE
forall a b. (a -> b) -> a -> b
$Ptr TCHAR -> IO HMODULE
c_LoadLibrary Ptr TCHAR
c_name loadLibraryEx ::WindowsString ->HANDLE ->LoadLibraryFlags ->IOHMODULE loadLibraryEx :: WindowsString -> HMODULE -> LoadLibraryFlags -> IO HMODULE
loadLibraryEx WindowsString
name HMODULE
h LoadLibraryFlags
flags =WindowsString -> (Ptr TCHAR -> IO HMODULE) -> IO HMODULE
forall a. WindowsString -> (Ptr TCHAR -> IO a) -> IO a
withTString WindowsString
name ((Ptr TCHAR -> IO HMODULE) -> IO HMODULE)
-> (Ptr TCHAR -> IO HMODULE) -> IO HMODULE
forall a b. (a -> b) -> a -> b
$\Ptr TCHAR
c_name ->String -> IO HMODULE -> IO HMODULE
forall a. String -> IO (Ptr a) -> IO (Ptr a)
failIfNull String
"LoadLibraryEx"(IO HMODULE -> IO HMODULE) -> IO HMODULE -> IO HMODULE
forall a b. (a -> b) -> a -> b
$Ptr TCHAR -> HMODULE -> LoadLibraryFlags -> IO HMODULE
c_LoadLibraryEx Ptr TCHAR
c_name HMODULE
h LoadLibraryFlags
flags setDllDirectory ::MaybeWindowsString ->IO()setDllDirectory :: Maybe WindowsString -> IO ()
setDllDirectory Maybe WindowsString
name =(WindowsString -> (Ptr TCHAR -> IO ()) -> IO ())
-> Maybe WindowsString -> (Ptr TCHAR -> IO ()) -> IO ()
forall a b c.
(a -> (Ptr b -> IO c) -> IO c)
-> Maybe a -> (Ptr b -> IO c) -> IO c
maybeWithWindowsString -> (Ptr TCHAR -> IO ()) -> IO ()
forall a. WindowsString -> (Ptr TCHAR -> IO a) -> IO a
withTString Maybe WindowsString
name ((Ptr TCHAR -> IO ()) -> IO ()) -> (Ptr TCHAR -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$\Ptr TCHAR
c_name ->doletnameS :: Maybe String
nameS =Maybe WindowsString
name Maybe WindowsString
-> (WindowsString -> Maybe String) -> Maybe String
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>=(EncodingException -> Maybe String)
-> (String -> Maybe String)
-> Either EncodingException String
-> Maybe String
forall a c b. (a -> c) -> (b -> c) -> Either a b -> c
either(Maybe String -> EncodingException -> Maybe String
forall a b. a -> b -> a
constMaybe String
forall a. Maybe a
Nothing)String -> Maybe String
forall a. a -> Maybe a
Just(Either EncodingException String -> Maybe String)
-> (WindowsString -> Either EncodingException String)
-> WindowsString
-> Maybe String
forall b c a. (b -> c) -> (a -> b) -> a -> c
.TextEncoding -> WindowsString -> Either EncodingException String
decodeWith (CodingFailureMode -> TextEncoding
mkUTF16leCodingFailureMode
TransliterateCodingFailure)String -> IO Bool -> IO ()
failIfFalse_ ([String] -> String
unwords[String
"SetDllDirectory",String -> Maybe String -> String
forall a. a -> Maybe a -> a
fromMaybeString
"NULL"Maybe String
nameS ])(IO Bool -> IO ()) -> IO Bool -> IO ()
forall a b. (a -> b) -> a -> b
$Ptr TCHAR -> IO Bool
c_SetDllDirectory Ptr TCHAR
c_name 

AltStyle によって変換されたページ (->オリジナル) /