>>485
書いてみた。
普段、Win APIを直接叩いたりしないので、外部ポインタの開放とかでミスってるかもしれん。

module Main where

import Data.ByteString
import Data.ByteString.Internal
import Data.ByteString.UTF8
import Foreign.ForeignPtr
import Foreign.Marshal.Alloc
import System.Win32.File

main = do
  fptr <- mallocByteString 128

  len <- withForeignPtr fptr $ \ptr -> do 
    handle <- createFile "test.txt" gENERIC_READ fILE_SHARE_NONE Nothing 

oPEN_EXISTING fILE_ATTRIBUTE_NORMAL Nothing
    len <- win32_ReadFile handle ptr 128 Nothing
    closeHandle handle
    return $ fromIntegral len

  print $ toString $ fromForeignPtr fptr 0 len
  finalizeForeignPtr fptr