{-# LINE 1 "System\\Win32\\File\\Internal.hsc" #-}
{-# LINE 2 "System\\Win32\\File\\Internal.hsc" #-}
{-# LANGUAGE Safe #-}
{-# LINE 6 "System\\Win32\\File\\Internal.hsc" #-}
module System.Win32.File.Internal where
import System.Win32.Types
import System.Win32.Time
import Foreign hiding (void)
#include "windows_cconv.h"
type AccessMode = UINT
gENERIC_NONE :: AccessMode
gENERIC_NONE = 0
gENERIC_READ :: AccessMode
gENERIC_READ = 2147483648
gENERIC_WRITE :: AccessMode
gENERIC_WRITE = 1073741824
gENERIC_EXECUTE :: AccessMode
gENERIC_EXECUTE = 536870912
gENERIC_ALL :: AccessMode
gENERIC_ALL = 268435456
dELETE :: AccessMode
dELETE = 65536
rEAD_CONTROL :: AccessMode
rEAD_CONTROL = 131072
wRITE_DAC :: AccessMode
wRITE_DAC = 262144
wRITE_OWNER :: AccessMode
wRITE_OWNER = 524288
sYNCHRONIZE :: AccessMode
sYNCHRONIZE = 1048576
sTANDARD_RIGHTS_REQUIRED :: AccessMode
sTANDARD_RIGHTS_REQUIRED = 983040
sTANDARD_RIGHTS_READ :: AccessMode
sTANDARD_RIGHTS_READ = 131072
sTANDARD_RIGHTS_WRITE :: AccessMode
sTANDARD_RIGHTS_WRITE = 131072
sTANDARD_RIGHTS_EXECUTE :: AccessMode
sTANDARD_RIGHTS_EXECUTE = 131072
sTANDARD_RIGHTS_ALL :: AccessMode
sTANDARD_RIGHTS_ALL = 2031616
sPECIFIC_RIGHTS_ALL :: AccessMode
sPECIFIC_RIGHTS_ALL = 65535
aCCESS_SYSTEM_SECURITY :: AccessMode
aCCESS_SYSTEM_SECURITY = 16777216
mAXIMUM_ALLOWED :: AccessMode
mAXIMUM_ALLOWED = 33554432
fILE_ADD_FILE :: AccessMode
fILE_ADD_FILE = 2
fILE_ADD_SUBDIRECTORY :: AccessMode
fILE_ADD_SUBDIRECTORY = 4
fILE_ALL_ACCESS :: AccessMode
fILE_ALL_ACCESS = 2032127
fILE_APPEND_DATA :: AccessMode
fILE_APPEND_DATA = 4
fILE_CREATE_PIPE_INSTANCE :: AccessMode
fILE_CREATE_PIPE_INSTANCE = 4
fILE_DELETE_CHILD :: AccessMode
fILE_DELETE_CHILD = 64
fILE_EXECUTE :: AccessMode
fILE_EXECUTE = 32
fILE_LIST_DIRECTORY :: AccessMode
fILE_LIST_DIRECTORY = 1
fILE_READ_ATTRIBUTES :: AccessMode
fILE_READ_ATTRIBUTES = 128
fILE_READ_DATA :: AccessMode
fILE_READ_DATA = 1
fILE_READ_EA :: AccessMode
fILE_READ_EA = 8
fILE_TRAVERSE :: AccessMode
fILE_TRAVERSE = 32
fILE_WRITE_ATTRIBUTES :: AccessMode
fILE_WRITE_ATTRIBUTES = 256
fILE_WRITE_DATA :: AccessMode
fILE_WRITE_DATA = 2
fILE_WRITE_EA :: AccessMode
fILE_WRITE_EA = 16
{-# LINE 75 "System\\Win32\\File\\Internal.hsc" #-}
type ShareMode = UINT
fILE_SHARE_NONE :: ShareMode
fILE_SHARE_NONE = 0
fILE_SHARE_READ :: ShareMode
fILE_SHARE_READ = 1
fILE_SHARE_WRITE :: ShareMode
fILE_SHARE_WRITE = 2
fILE_SHARE_DELETE :: ShareMode
fILE_SHARE_DELETE = 4
{-# LINE 88 "System\\Win32\\File\\Internal.hsc" #-}
type CreateMode = UINT
cREATE_NEW :: CreateMode
cREATE_NEW = 1
cREATE_ALWAYS :: CreateMode
cREATE_ALWAYS = 2
oPEN_EXISTING :: CreateMode
oPEN_EXISTING = 3
oPEN_ALWAYS :: CreateMode
oPEN_ALWAYS = 4
tRUNCATE_EXISTING :: CreateMode
tRUNCATE_EXISTING = 5
{-# LINE 100 "System\\Win32\\File\\Internal.hsc" #-}
type FileAttributeOrFlag = UINT
fILE_ATTRIBUTE_READONLY :: FileAttributeOrFlag
fILE_ATTRIBUTE_READONLY = 1
fILE_ATTRIBUTE_HIDDEN :: FileAttributeOrFlag
fILE_ATTRIBUTE_HIDDEN = 2
fILE_ATTRIBUTE_SYSTEM :: FileAttributeOrFlag
fILE_ATTRIBUTE_SYSTEM = 4
fILE_ATTRIBUTE_DIRECTORY :: FileAttributeOrFlag
fILE_ATTRIBUTE_DIRECTORY = 16
fILE_ATTRIBUTE_ARCHIVE :: FileAttributeOrFlag
fILE_ATTRIBUTE_ARCHIVE = 32
fILE_ATTRIBUTE_NORMAL :: FileAttributeOrFlag
fILE_ATTRIBUTE_NORMAL = 128
fILE_ATTRIBUTE_TEMPORARY :: FileAttributeOrFlag
fILE_ATTRIBUTE_TEMPORARY = 256
fILE_ATTRIBUTE_COMPRESSED :: FileAttributeOrFlag
fILE_ATTRIBUTE_COMPRESSED = 2048
fILE_ATTRIBUTE_REPARSE_POINT :: FileAttributeOrFlag
fILE_ATTRIBUTE_REPARSE_POINT = 1024
fILE_FLAG_WRITE_THROUGH :: FileAttributeOrFlag
fILE_FLAG_WRITE_THROUGH = 2147483648
fILE_FLAG_OVERLAPPED :: FileAttributeOrFlag
fILE_FLAG_OVERLAPPED = 1073741824
fILE_FLAG_NO_BUFFERING :: FileAttributeOrFlag
fILE_FLAG_NO_BUFFERING = 536870912
fILE_FLAG_RANDOM_ACCESS :: FileAttributeOrFlag
fILE_FLAG_RANDOM_ACCESS = 268435456
fILE_FLAG_SEQUENTIAL_SCAN :: FileAttributeOrFlag
fILE_FLAG_SEQUENTIAL_SCAN = 134217728
fILE_FLAG_DELETE_ON_CLOSE :: FileAttributeOrFlag
fILE_FLAG_DELETE_ON_CLOSE = 67108864
fILE_FLAG_BACKUP_SEMANTICS :: FileAttributeOrFlag
fILE_FLAG_BACKUP_SEMANTICS = 33554432
fILE_FLAG_POSIX_SEMANTICS :: FileAttributeOrFlag
fILE_FLAG_POSIX_SEMANTICS = 16777216
{-# LINE 124 "System\\Win32\\File\\Internal.hsc" #-}
{-# LINE 125 "System\\Win32\\File\\Internal.hsc" #-}
sECURITY_ANONYMOUS :: FileAttributeOrFlag
sECURITY_ANONYMOUS = 0
sECURITY_IDENTIFICATION :: FileAttributeOrFlag
sECURITY_IDENTIFICATION = 65536
sECURITY_IMPERSONATION :: FileAttributeOrFlag
sECURITY_IMPERSONATION = 131072
sECURITY_DELEGATION :: FileAttributeOrFlag
sECURITY_DELEGATION = 196608
sECURITY_CONTEXT_TRACKING :: FileAttributeOrFlag
sECURITY_CONTEXT_TRACKING = 262144
sECURITY_EFFECTIVE_ONLY :: FileAttributeOrFlag
sECURITY_EFFECTIVE_ONLY = 524288
sECURITY_SQOS_PRESENT :: FileAttributeOrFlag
sECURITY_SQOS_PRESENT = 1048576
sECURITY_VALID_SQOS_FLAGS :: FileAttributeOrFlag
sECURITY_VALID_SQOS_FLAGS = 2031616
{-# LINE 135 "System\\Win32\\File\\Internal.hsc" #-}
{-# LINE 136 "System\\Win32\\File\\Internal.hsc" #-}
type MoveFileFlag = DWORD
mOVEFILE_REPLACE_EXISTING :: MoveFileFlag
mOVEFILE_REPLACE_EXISTING = 1
mOVEFILE_COPY_ALLOWED :: MoveFileFlag
mOVEFILE_COPY_ALLOWED = 2
mOVEFILE_DELAY_UNTIL_REBOOT :: MoveFileFlag
mOVEFILE_DELAY_UNTIL_REBOOT = 4
{-# LINE 146 "System\\Win32\\File\\Internal.hsc" #-}
type FilePtrDirection = DWORD
fILE_BEGIN :: FilePtrDirection
fILE_BEGIN = 0
fILE_CURRENT :: FilePtrDirection
fILE_CURRENT = 1
fILE_END :: FilePtrDirection
fILE_END = 2
{-# LINE 156 "System\\Win32\\File\\Internal.hsc" #-}
type DriveType = UINT
dRIVE_UNKNOWN :: DriveType
dRIVE_UNKNOWN = 0
dRIVE_NO_ROOT_DIR :: DriveType
dRIVE_NO_ROOT_DIR = 1
dRIVE_REMOVABLE :: DriveType
dRIVE_REMOVABLE = 2
dRIVE_FIXED :: DriveType
dRIVE_FIXED = 3
dRIVE_REMOTE :: DriveType
dRIVE_REMOTE = 4
dRIVE_CDROM :: DriveType
dRIVE_CDROM = 5
dRIVE_RAMDISK :: DriveType
dRIVE_RAMDISK = 6
{-# LINE 170 "System\\Win32\\File\\Internal.hsc" #-}
type DefineDosDeviceFlags = DWORD
dDD_RAW_TARGET_PATH :: DefineDosDeviceFlags
dDD_RAW_TARGET_PATH = 1
dDD_REMOVE_DEFINITION :: DefineDosDeviceFlags
dDD_REMOVE_DEFINITION = 2
dDD_EXACT_MATCH_ON_REMOVE :: DefineDosDeviceFlags
dDD_EXACT_MATCH_ON_REMOVE = 4
{-# LINE 180 "System\\Win32\\File\\Internal.hsc" #-}
type BinaryType = DWORD
sCS_32BIT_BINARY :: BinaryType
sCS_32BIT_BINARY = 0
sCS_DOS_BINARY :: BinaryType
sCS_DOS_BINARY = 1
sCS_WOW_BINARY :: BinaryType
sCS_WOW_BINARY = 2
sCS_PIF_BINARY :: BinaryType
sCS_PIF_BINARY = 3
sCS_POSIX_BINARY :: BinaryType
sCS_POSIX_BINARY = 4
sCS_OS216_BINARY :: BinaryType
sCS_OS216_BINARY = 5
{-# LINE 193 "System\\Win32\\File\\Internal.hsc" #-}
type FileNotificationFlag = DWORD
fILE_NOTIFY_CHANGE_FILE_NAME :: FileNotificationFlag
fILE_NOTIFY_CHANGE_FILE_NAME = 1
fILE_NOTIFY_CHANGE_DIR_NAME :: FileNotificationFlag
fILE_NOTIFY_CHANGE_DIR_NAME = 2
fILE_NOTIFY_CHANGE_ATTRIBUTES :: FileNotificationFlag
fILE_NOTIFY_CHANGE_ATTRIBUTES = 4
fILE_NOTIFY_CHANGE_SIZE :: FileNotificationFlag
fILE_NOTIFY_CHANGE_SIZE = 8
fILE_NOTIFY_CHANGE_LAST_WRITE :: FileNotificationFlag
fILE_NOTIFY_CHANGE_LAST_WRITE = 16
fILE_NOTIFY_CHANGE_SECURITY :: FileNotificationFlag
fILE_NOTIFY_CHANGE_SECURITY = 256
{-# LINE 206 "System\\Win32\\File\\Internal.hsc" #-}
type FileType = DWORD
fILE_TYPE_UNKNOWN :: FileType
fILE_TYPE_UNKNOWN = 0
fILE_TYPE_DISK :: FileType
fILE_TYPE_DISK = 1
fILE_TYPE_CHAR :: FileType
fILE_TYPE_CHAR = 2
fILE_TYPE_PIPE :: FileType
fILE_TYPE_PIPE = 3
fILE_TYPE_REMOTE :: FileType
fILE_TYPE_REMOTE = 32768
{-# LINE 218 "System\\Win32\\File\\Internal.hsc" #-}
type LockMode = DWORD
lOCKFILE_EXCLUSIVE_LOCK :: LockMode
lOCKFILE_EXCLUSIVE_LOCK = 2
lOCKFILE_FAIL_IMMEDIATELY :: LockMode
lOCKFILE_FAIL_IMMEDIATELY = 1
{-# LINE 227 "System\\Win32\\File\\Internal.hsc" #-}
newtype GET_FILEEX_INFO_LEVELS = GET_FILEEX_INFO_LEVELS (Word32)
{-# LINE 231 "System\\Win32\\File\\Internal.hsc" #-}
deriving (Eq, Ord)
getFileExInfoStandard :: GET_FILEEX_INFO_LEVELS
getFileExInfoStandard = GET_FILEEX_INFO_LEVELS 0
getFileExMaxInfoLevel :: GET_FILEEX_INFO_LEVELS
getFileExMaxInfoLevel = GET_FILEEX_INFO_LEVELS 1
{-# LINE 237 "System\\Win32\\File\\Internal.hsc" #-}
data SECURITY_ATTRIBUTES = SECURITY_ATTRIBUTES
{ nLength :: !DWORD
, lpSecurityDescriptor :: !LPVOID
, bInheritHandle :: !BOOL
} deriving Show
type PSECURITY_ATTRIBUTES = Ptr SECURITY_ATTRIBUTES
type LPSECURITY_ATTRIBUTES = Ptr SECURITY_ATTRIBUTES
type MbLPSECURITY_ATTRIBUTES = Maybe LPSECURITY_ATTRIBUTES
instance Storable SECURITY_ATTRIBUTES where
sizeOf = const (24)
{-# LINE 252 "System\\Win32\\File\\Internal.hsc" #-}
alignment _ = 8
{-# LINE 253 "System\\Win32\\File\\Internal.hsc" #-}
poke buf input = do
((\hsc_ptr -> pokeByteOff hsc_ptr 0)) buf (nLength input)
{-# LINE 255 "System\\Win32\\File\\Internal.hsc" #-}
((\hsc_ptr -> pokeByteOff hsc_ptr 8)) buf (lpSecurityDescriptor input)
{-# LINE 256 "System\\Win32\\File\\Internal.hsc" #-}
((\hsc_ptr -> pokeByteOff hsc_ptr 16)) buf (bInheritHandle input)
{-# LINE 257 "System\\Win32\\File\\Internal.hsc" #-}
peek buf = do
nLength' <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) buf
{-# LINE 259 "System\\Win32\\File\\Internal.hsc" #-}
lpSecurityDescriptor' <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) buf
{-# LINE 260 "System\\Win32\\File\\Internal.hsc" #-}
bInheritHandle' <- ((\hsc_ptr -> peekByteOff hsc_ptr 16)) buf
{-# LINE 261 "System\\Win32\\File\\Internal.hsc" #-}
return $ SECURITY_ATTRIBUTES nLength' lpSecurityDescriptor' bInheritHandle'
data BY_HANDLE_FILE_INFORMATION = BY_HANDLE_FILE_INFORMATION
{ bhfiFileAttributes :: FileAttributeOrFlag
, bhfiCreationTime, bhfiLastAccessTime, bhfiLastWriteTime :: FILETIME
, bhfiVolumeSerialNumber :: DWORD
, bhfiSize :: DDWORD
, bhfiNumberOfLinks :: DWORD
, bhfiFileIndex :: DDWORD
} deriving (Show)
instance Storable BY_HANDLE_FILE_INFORMATION where
sizeOf = const ((52))
{-# LINE 278 "System\\Win32\\File\\Internal.hsc" #-}
alignment _ = 4
{-# LINE 279 "System\\Win32\\File\\Internal.hsc" #-}
poke buf bhi = do
((\hsc_ptr -> pokeByteOff hsc_ptr 0)) buf (bhfiFileAttributes bhi)
{-# LINE 281 "System\\Win32\\File\\Internal.hsc" #-}
((\hsc_ptr -> pokeByteOff hsc_ptr 4)) buf (bhfiCreationTime bhi)
{-# LINE 282 "System\\Win32\\File\\Internal.hsc" #-}
((\hsc_ptr -> pokeByteOff hsc_ptr 12)) buf (bhfiLastAccessTime bhi)
{-# LINE 283 "System\\Win32\\File\\Internal.hsc" #-}
((\hsc_ptr -> pokeByteOff hsc_ptr 20)) buf (bhfiLastWriteTime bhi)
{-# LINE 284 "System\\Win32\\File\\Internal.hsc" #-}
((\hsc_ptr -> pokeByteOff hsc_ptr 28)) buf (bhfiVolumeSerialNumber bhi)
{-# LINE 285 "System\\Win32\\File\\Internal.hsc" #-}
((\hsc_ptr -> pokeByteOff hsc_ptr 32)) buf sizeHi
{-# LINE 286 "System\\Win32\\File\\Internal.hsc" #-}
((\hsc_ptr -> pokeByteOff hsc_ptr 36)) buf sizeLow
{-# LINE 287 "System\\Win32\\File\\Internal.hsc" #-}
((\hsc_ptr -> pokeByteOff hsc_ptr 40)) buf (bhfiNumberOfLinks bhi)
{-# LINE 288 "System\\Win32\\File\\Internal.hsc" #-}
((\hsc_ptr -> pokeByteOff hsc_ptr 44)) buf idxHi
{-# LINE 289 "System\\Win32\\File\\Internal.hsc" #-}
((\hsc_ptr -> pokeByteOff hsc_ptr 48)) buf idxLow
{-# LINE 290 "System\\Win32\\File\\Internal.hsc" #-}
where
(sizeHi,sizeLow) = ddwordToDwords $ bhfiSize bhi
(idxHi,idxLow) = ddwordToDwords $ bhfiFileIndex bhi
peek buf = do
attr <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) buf
{-# LINE 296 "System\\Win32\\File\\Internal.hsc" #-}
ctim <- ((\hsc_ptr -> peekByteOff hsc_ptr 4)) buf
{-# LINE 297 "System\\Win32\\File\\Internal.hsc" #-}
lati <- ((\hsc_ptr -> peekByteOff hsc_ptr 12)) buf
{-# LINE 298 "System\\Win32\\File\\Internal.hsc" #-}
lwti <- ((\hsc_ptr -> peekByteOff hsc_ptr 20)) buf
{-# LINE 299 "System\\Win32\\File\\Internal.hsc" #-}
vser <- ((\hsc_ptr -> peekByteOff hsc_ptr 28)) buf
{-# LINE 300 "System\\Win32\\File\\Internal.hsc" #-}
fshi <- ((\hsc_ptr -> peekByteOff hsc_ptr 32)) buf
{-# LINE 301 "System\\Win32\\File\\Internal.hsc" #-}
fslo <- ((\hsc_ptr -> peekByteOff hsc_ptr 36)) buf
{-# LINE 302 "System\\Win32\\File\\Internal.hsc" #-}
link <- ((\hsc_ptr -> peekByteOff hsc_ptr 40)) buf
{-# LINE 303 "System\\Win32\\File\\Internal.hsc" #-}
idhi <- ((\hsc_ptr -> peekByteOff hsc_ptr 44)) buf
{-# LINE 304 "System\\Win32\\File\\Internal.hsc" #-}
idlo <- ((\hsc_ptr -> peekByteOff hsc_ptr 48)) buf
{-# LINE 305 "System\\Win32\\File\\Internal.hsc" #-}
return $ BY_HANDLE_FILE_INFORMATION attr ctim lati lwti vser
(dwordsToDdword (fshi,fslo)) link (dwordsToDdword (idhi,idlo))
data WIN32_FILE_ATTRIBUTE_DATA = WIN32_FILE_ATTRIBUTE_DATA
{ fadFileAttributes :: DWORD
, fadCreationTime , fadLastAccessTime , fadLastWriteTime :: FILETIME
, fadFileSize :: DDWORD
} deriving (Show)
instance Storable WIN32_FILE_ATTRIBUTE_DATA where
sizeOf = const ((36))
{-# LINE 318 "System\\Win32\\File\\Internal.hsc" #-}
alignment _ = 4
{-# LINE 319 "System\\Win32\\File\\Internal.hsc" #-}
poke buf ad = do
((\hsc_ptr -> pokeByteOff hsc_ptr 0)) buf (fadFileAttributes ad)
{-# LINE 321 "System\\Win32\\File\\Internal.hsc" #-}
((\hsc_ptr -> pokeByteOff hsc_ptr 4)) buf (fadCreationTime ad)
{-# LINE 322 "System\\Win32\\File\\Internal.hsc" #-}
((\hsc_ptr -> pokeByteOff hsc_ptr 12)) buf (fadLastAccessTime ad)
{-# LINE 323 "System\\Win32\\File\\Internal.hsc" #-}
((\hsc_ptr -> pokeByteOff hsc_ptr 20)) buf (fadLastWriteTime ad)
{-# LINE 324 "System\\Win32\\File\\Internal.hsc" #-}
((\hsc_ptr -> pokeByteOff hsc_ptr 28)) buf sizeHi
{-# LINE 325 "System\\Win32\\File\\Internal.hsc" #-}
((\hsc_ptr -> pokeByteOff hsc_ptr 32)) buf sizeLo
{-# LINE 326 "System\\Win32\\File\\Internal.hsc" #-}
where
(sizeHi,sizeLo) = ddwordToDwords $ fadFileSize ad
peek buf = do
attr <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) buf
{-# LINE 331 "System\\Win32\\File\\Internal.hsc" #-}
ctim <- ((\hsc_ptr -> peekByteOff hsc_ptr 4)) buf
{-# LINE 332 "System\\Win32\\File\\Internal.hsc" #-}
lati <- ((\hsc_ptr -> peekByteOff hsc_ptr 12)) buf
{-# LINE 333 "System\\Win32\\File\\Internal.hsc" #-}
lwti <- ((\hsc_ptr -> peekByteOff hsc_ptr 20)) buf
{-# LINE 334 "System\\Win32\\File\\Internal.hsc" #-}
fshi <- ((\hsc_ptr -> peekByteOff hsc_ptr 28)) buf
{-# LINE 335 "System\\Win32\\File\\Internal.hsc" #-}
fslo <- ((\hsc_ptr -> peekByteOff hsc_ptr 32)) buf
{-# LINE 336 "System\\Win32\\File\\Internal.hsc" #-}
return $ WIN32_FILE_ATTRIBUTE_DATA attr ctim lati lwti
(dwordsToDdword (fshi,fslo))
foreign import WINDOWS_CCONV unsafe "windows.h DeleteFileW"
c_DeleteFile :: LPCTSTR -> IO Bool
foreign import WINDOWS_CCONV unsafe "windows.h CopyFileW"
c_CopyFile :: LPCTSTR -> LPCTSTR -> Bool -> IO Bool
foreign import WINDOWS_CCONV unsafe "windows.h MoveFileW"
c_MoveFile :: LPCTSTR -> LPCTSTR -> IO Bool
foreign import WINDOWS_CCONV unsafe "windows.h MoveFileExW"
c_MoveFileEx :: LPCTSTR -> LPCTSTR -> MoveFileFlag -> IO Bool
foreign import WINDOWS_CCONV unsafe "windows.h SetCurrentDirectoryW"
c_SetCurrentDirectory :: LPCTSTR -> IO Bool
foreign import WINDOWS_CCONV unsafe "windows.h CreateDirectoryW"
c_CreateDirectory :: LPCTSTR -> LPSECURITY_ATTRIBUTES -> IO Bool
foreign import WINDOWS_CCONV unsafe "windows.h CreateDirectoryExW"
c_CreateDirectoryEx :: LPCTSTR -> LPCTSTR -> LPSECURITY_ATTRIBUTES -> IO Bool
foreign import WINDOWS_CCONV unsafe "windows.h RemoveDirectoryW"
c_RemoveDirectory :: LPCTSTR -> IO Bool
foreign import WINDOWS_CCONV unsafe "windows.h GetBinaryTypeW"
c_GetBinaryType :: LPCTSTR -> Ptr DWORD -> IO Bool
foreign import WINDOWS_CCONV unsafe "windows.h CreateFileW"
c_CreateFile :: LPCTSTR -> AccessMode -> ShareMode -> LPSECURITY_ATTRIBUTES -> CreateMode -> FileAttributeOrFlag -> HANDLE -> IO HANDLE
foreign import WINDOWS_CCONV unsafe "windows.h CloseHandle"
c_CloseHandle :: HANDLE -> IO Bool
foreign import WINDOWS_CCONV unsafe "windows.h GetFileType"
getFileType :: HANDLE -> IO FileType
foreign import WINDOWS_CCONV unsafe "windows.h FlushFileBuffers"
c_FlushFileBuffers :: HANDLE -> IO Bool
foreign import WINDOWS_CCONV unsafe "windows.h SetEndOfFile"
c_SetEndOfFile :: HANDLE -> IO Bool
foreign import WINDOWS_CCONV unsafe "windows.h SetFileAttributesW"
c_SetFileAttributes :: LPCTSTR -> FileAttributeOrFlag -> IO Bool
foreign import WINDOWS_CCONV unsafe "windows.h GetFileAttributesW"
c_GetFileAttributes :: LPCTSTR -> IO FileAttributeOrFlag
foreign import WINDOWS_CCONV unsafe "windows.h GetFileAttributesExW"
c_GetFileAttributesEx :: LPCTSTR -> GET_FILEEX_INFO_LEVELS -> Ptr a -> IO BOOL
foreign import WINDOWS_CCONV unsafe "windows.h GetFileInformationByHandle"
c_GetFileInformationByHandle :: HANDLE -> Ptr BY_HANDLE_FILE_INFORMATION -> IO BOOL
foreign import WINDOWS_CCONV unsafe "windows.h GetTempFileNameW"
c_GetTempFileNameW :: LPCWSTR -> LPCWSTR -> UINT -> LPWSTR -> IO UINT
data OVERLAPPED
= OVERLAPPED { ovl_internal :: ULONG_PTR
, ovl_internalHigh :: ULONG_PTR
, ovl_offset :: DWORD
, ovl_offsetHigh :: DWORD
, ovl_hEvent :: HANDLE
} deriving (Show)
instance Storable OVERLAPPED where
sizeOf = const ((32))
{-# LINE 420 "System\\Win32\\File\\Internal.hsc" #-}
alignment _ = 8
{-# LINE 421 "System\\Win32\\File\\Internal.hsc" #-}
poke buf ad = do
((\hsc_ptr -> pokeByteOff hsc_ptr 0)) buf (ovl_internal ad)
{-# LINE 423 "System\\Win32\\File\\Internal.hsc" #-}
((\hsc_ptr -> pokeByteOff hsc_ptr 8)) buf (ovl_internalHigh ad)
{-# LINE 424 "System\\Win32\\File\\Internal.hsc" #-}
((\hsc_ptr -> pokeByteOff hsc_ptr 16)) buf (ovl_offset ad)
{-# LINE 425 "System\\Win32\\File\\Internal.hsc" #-}
((\hsc_ptr -> pokeByteOff hsc_ptr 20)) buf (ovl_offsetHigh ad)
{-# LINE 426 "System\\Win32\\File\\Internal.hsc" #-}
((\hsc_ptr -> pokeByteOff hsc_ptr 24)) buf (ovl_hEvent ad)
{-# LINE 427 "System\\Win32\\File\\Internal.hsc" #-}
peek buf = do
intnl <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) buf
{-# LINE 430 "System\\Win32\\File\\Internal.hsc" #-}
intnl_high <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) buf
{-# LINE 431 "System\\Win32\\File\\Internal.hsc" #-}
off <- ((\hsc_ptr -> peekByteOff hsc_ptr 16)) buf
{-# LINE 432 "System\\Win32\\File\\Internal.hsc" #-}
off_high <- ((\hsc_ptr -> peekByteOff hsc_ptr 20)) buf
{-# LINE 433 "System\\Win32\\File\\Internal.hsc" #-}
hevnt <- ((\hsc_ptr -> peekByteOff hsc_ptr 24)) buf
{-# LINE 434 "System\\Win32\\File\\Internal.hsc" #-}
return $ OVERLAPPED intnl intnl_high off off_high hevnt
type LPOVERLAPPED = Ptr OVERLAPPED
type MbLPOVERLAPPED = Maybe LPOVERLAPPED
foreign import WINDOWS_CCONV unsafe "windows.h ReadFile"
c_ReadFile :: HANDLE -> Ptr a -> DWORD -> Ptr DWORD -> LPOVERLAPPED -> IO Bool
foreign import WINDOWS_CCONV unsafe "windows.h WriteFile"
c_WriteFile :: HANDLE -> Ptr a -> DWORD -> Ptr DWORD -> LPOVERLAPPED -> IO Bool
foreign import WINDOWS_CCONV unsafe "windows.h SetFilePointerEx"
c_SetFilePointerEx :: HANDLE -> LARGE_INTEGER -> Ptr LARGE_INTEGER -> FilePtrDirection -> IO Bool
foreign import WINDOWS_CCONV unsafe "windows.h FindFirstChangeNotificationW"
c_FindFirstChangeNotification :: LPCTSTR -> Bool -> FileNotificationFlag -> IO HANDLE
foreign import WINDOWS_CCONV unsafe "windows.h FindNextChangeNotification"
c_FindNextChangeNotification :: HANDLE -> IO Bool
foreign import WINDOWS_CCONV unsafe "windows.h FindCloseChangeNotification"
c_FindCloseChangeNotification :: HANDLE -> IO Bool
type WIN32_FIND_DATA = ()
newtype FindData = FindData (ForeignPtr WIN32_FIND_DATA)
foreign import WINDOWS_CCONV unsafe "windows.h FindFirstFileW"
c_FindFirstFile :: LPCTSTR -> Ptr WIN32_FIND_DATA -> IO HANDLE
foreign import WINDOWS_CCONV unsafe "windows.h FindNextFileW"
c_FindNextFile :: HANDLE -> Ptr WIN32_FIND_DATA -> IO BOOL
foreign import WINDOWS_CCONV unsafe "windows.h FindClose"
c_FindClose :: HANDLE -> IO BOOL
foreign import WINDOWS_CCONV unsafe "windows.h DefineDosDeviceW"
c_DefineDosDevice :: DefineDosDeviceFlags -> LPCTSTR -> LPCTSTR -> IO Bool
foreign import WINDOWS_CCONV unsafe "windows.h AreFileApisANSI"
areFileApisANSI :: IO Bool
foreign import WINDOWS_CCONV unsafe "windows.h SetFileApisToOEM"
setFileApisToOEM :: IO ()
foreign import WINDOWS_CCONV unsafe "windows.h SetFileApisToANSI"
setFileApisToANSI :: IO ()
foreign import WINDOWS_CCONV unsafe "windows.h SetHandleCount"
setHandleCount :: UINT -> IO UINT
foreign import WINDOWS_CCONV unsafe "windows.h GetLogicalDrives"
c_GetLogicalDrives :: IO DWORD
foreign import WINDOWS_CCONV unsafe "windows.h GetDiskFreeSpaceW"
c_GetDiskFreeSpace :: LPCTSTR -> Ptr DWORD -> Ptr DWORD -> Ptr DWORD -> Ptr DWORD -> IO Bool
foreign import WINDOWS_CCONV unsafe "windows.h SetVolumeLabelW"
c_SetVolumeLabel :: LPCTSTR -> LPCTSTR -> IO Bool
foreign import WINDOWS_CCONV unsafe "LockFileEx"
c_LockFileEx :: HANDLE -> DWORD -> DWORD -> DWORD -> DWORD -> LPOVERLAPPED
-> IO BOOL
foreign import WINDOWS_CCONV unsafe "UnlockFileEx"
c_UnlockFileEx :: HANDLE -> DWORD -> DWORD -> DWORD -> LPOVERLAPPED -> IO BOOL