packages feed

Win32 2.7.0.0 → 2.8.0.0

raw patch · 6 files changed

+109/−23 lines, 6 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

- System.Win32.Process: sYNCHORNIZE :: ProcessAccessRights
+ System.Win32.Registry: c_RegGetValue :: PKEY -> LPCTSTR -> LPCTSTR -> DWORD -> LPDWORD -> LPVOID -> LPDWORD -> IO ErrCode
+ System.Win32.Registry: rRF_NOEXPAND :: RegTypeRestriction
+ System.Win32.Registry: rRF_RT_ANY :: RegTypeRestriction
+ System.Win32.Registry: rRF_RT_DWORD :: RegTypeRestriction
+ System.Win32.Registry: rRF_RT_QWORD :: RegTypeRestriction
+ System.Win32.Registry: rRF_RT_REG_BINARY :: RegTypeRestriction
+ System.Win32.Registry: rRF_RT_REG_DWORD :: RegTypeRestriction
+ System.Win32.Registry: rRF_RT_REG_EXPAND_SZ :: RegTypeRestriction
+ System.Win32.Registry: rRF_RT_REG_MULTI_SZ :: RegTypeRestriction
+ System.Win32.Registry: rRF_RT_REG_NONE :: RegTypeRestriction
+ System.Win32.Registry: rRF_RT_REG_QWORD :: RegTypeRestriction
+ System.Win32.Registry: rRF_RT_REG_SZ :: RegTypeRestriction
+ System.Win32.Registry: rRF_SUBKEY_WOW6432KEY :: RegTypeRestriction
+ System.Win32.Registry: rRF_SUBKEY_WOW6464KEY :: RegTypeRestriction
+ System.Win32.Registry: rRF_ZEROONFAILURE :: RegTypeRestriction
+ System.Win32.Registry: regGetValue :: HKEY -> Maybe String -> Maybe String -> RegTypeRestriction -> Maybe LPDWORD -> Maybe LPVOID -> Maybe LPDWORD -> IO ()
+ System.Win32.Registry: regQueryDefaultValue :: HKEY -> String -> IO String
+ System.Win32.Registry: type RegTypeRestriction = DWORD
- System.Win32.Registry: regQueryValue :: HKEY -> String -> IO String
+ System.Win32.Registry: regQueryValue :: HKEY -> Maybe String -> IO String
- System.Win32.Registry: regQueryValueKey :: HKEY -> String -> IO String
+ System.Win32.Registry: regQueryValueKey :: HKEY -> Maybe String -> IO String
- System.Win32.Types: nullPtr :: Ptr a
+ System.Win32.Types: nullPtr :: () => Ptr a

Files

System/Win32/Automation/Input/Mouse.hsc view
@@ -36,7 +36,7 @@     alignment _ = #alignment MOUSEINPUT
     poke buf input = do
         (#poke MOUSEINPUT, dx) buf (dx input)
-        (#poke MOUSEINPUT, dx) buf (dx input)
+        (#poke MOUSEINPUT, dy) buf (dy input)
         (#poke MOUSEINPUT, mouseData)   buf (mouseData input)
         (#poke MOUSEINPUT, dwFlags)     buf (dwFlags input)
         (#poke MOUSEINPUT, time)        buf (time input)
System/Win32/Process.hsc view
@@ -54,7 +54,6 @@     , pROCESS_VM_OPERATION          = PROCESS_VM_OPERATION     , pROCESS_VM_READ               = PROCESS_VM_READ     , pROCESS_VM_WRITE              = PROCESS_VM_WRITE-    , sYNCHORNIZE                   = SYNCHRONIZE      }  foreign import WINDOWS_CCONV unsafe "windows.h OpenProcess"@@ -71,7 +70,7 @@ getProcessId h = failIfZero "GetProcessId" $ c_GetProcessId h  foreign import WINDOWS_CCONV unsafe "windows.h GetCurrentProcess"-    c_GetCurrentProcess :: IO ProcessHandle +    c_GetCurrentProcess :: IO ProcessHandle  foreign import WINDOWS_CCONV unsafe "windows.h GetCurrentProcessId"     c_GetCurrentProcessId :: IO ProcessId@@ -105,7 +104,7 @@     } {-     , tH32CS_SNAPGETALLMODS = TH32CS_GETALLMODS-    , tH32CS_SNAPNOHEAPS    = TH32CS_SNAPNOHEAPS +    , tH32CS_SNAPNOHEAPS    = TH32CS_SNAPNOHEAPS -}  foreign import WINDOWS_CCONV unsafe "tlhelp32.h CreateToolhelp32Snapshot"
System/Win32/Registry.hsc view
@@ -39,12 +39,14 @@         , regOpenKey         -- :: HKEY -> String -> IO HKEY         , regOpenKeyEx       -- :: HKEY -> String -> REGSAM -> IO HKEY         , regQueryInfoKey    -- :: HKEY -> IO RegInfoKey-        , regQueryValue      -- :: HKEY -> String -> IO String-        , regQueryValueKey   -- :: HKEY -> String -> IO String+        , regQueryValue      -- :: HKEY -> Maybe String -> IO String+        , regQueryDefaultValue -- :: HKEY -> String -> IO String         , regQueryValueEx    -- :: HKEY -> String -> Addr -> Int -> IO RegValueType         , regReplaceKey      -- :: HKEY -> Maybe String -> String -> String -> IO ()         , regRestoreKey      -- :: HKEY -> String -> RegRestoreFlags -> IO ()         , regSaveKey         -- :: HKEY -> String -> Maybe LPSECURITY_ATTRIBUTES -> IO ()+        , regGetValue        -- :: HKEY -> Maybe String -> Maybe String -> RegTypeRestriction+                             -- -> Maybe LPDWORD -> Maybe LPVOID -> Maybe LPDWORD -> IO ()         , regSetValue        -- :: HKEY -> String -> String -> IO ()         , regSetValueEx      -- :: HKEY -> String -> RegValueType -> LPTSTR -> Int -> IO ()         , regSetStringValue  -- :: HKEY -> String -> String -> IO ()@@ -72,12 +74,13 @@ import System.Win32.Time (FILETIME) import System.Win32.Types (DWORD, ErrCode, HKEY, LPCTSTR, PKEY, withTString) import System.Win32.Types (HANDLE, LONG, LPBYTE, newForeignHANDLE, peekTString)-import System.Win32.Types (LPTSTR, TCHAR, failUnlessSuccess)+import System.Win32.Types (LPTSTR, TCHAR, LPDWORD, LPVOID, failUnlessSuccess) import System.Win32.Types (castUINTPtrToPtr, failUnlessSuccessOr, maybePtr)  ##include "windows_cconv.h"  #include <windows.h>+#include "winreg_compat.h"  #{enum HKEY, (unsafePerformIO . newForeignHANDLE . castUINTPtrToPtr)  , hKEY_CLASSES_ROOT    = (UINT_PTR)HKEY_CLASSES_ROOT@@ -382,16 +385,25 @@  -- RegQueryMultipleValues :: HKEY -> IO ([VALENT],String) --- RegQueryValue() isn't really that, it just allows you to--- get at the default values of keys, so we provide our own--- (and better!) version of it. If you want RegQueryValue()s--- behaviour, use regQueryValueKey.--regQueryValueKey :: HKEY -> String -> IO String+{-# DEPRECATED regQueryValueKey "Use regQueryValue instead." #-}+regQueryValueKey :: HKEY -> Maybe String -> IO String regQueryValueKey key mb_subkey =   withForeignPtr key $ \ p_key ->-  withTString mb_subkey $ \ c_subkey ->+  maybeWith withTString mb_subkey $ \ c_subkey ->   alloca $ \ p_value_len -> do+  failUnlessSuccess "RegQueryValueKey" $+    c_RegQueryValue p_key c_subkey nullPtr p_value_len+  value_len <- peek p_value_len+  allocaArray0 (fromIntegral value_len) $ \ c_value -> do+    failUnlessSuccess "RegQueryValueKey" $+      c_RegQueryValue p_key c_subkey c_value p_value_len+    peekTString c_value++regQueryValue :: HKEY -> Maybe String -> IO String+regQueryValue key mb_subkey =+  withForeignPtr key $ \ p_key ->+  maybeWith withTString mb_subkey $ \ c_subkey ->+  alloca $ \ p_value_len -> do   failUnlessSuccess "RegQueryValue" $     c_RegQueryValue p_key c_subkey nullPtr p_value_len   value_len <- peek p_value_len@@ -402,19 +414,21 @@ foreign import WINDOWS_CCONV unsafe "windows.h RegQueryValueW"   c_RegQueryValue :: PKEY -> LPCTSTR -> LPTSTR -> Ptr LONG -> IO ErrCode -regQueryValue :: HKEY -> String -> IO String-regQueryValue key mb_subkey =+-- Gets the data associated with the default value of a key (assumed to be of+-- type REG_SZ) using RegQeryValueEx.+regQueryDefaultValue :: HKEY -> String -> IO String+regQueryDefaultValue key mb_subkey =   withForeignPtr key $ \ p_key ->   withTString mb_subkey $ \ c_subkey ->   alloca $ \ p_ty ->   alloca $ \ p_value_len -> do-  failUnlessSuccess "RegQueryValue" $+  failUnlessSuccess "regQueryDefaultValue" $     c_RegQueryValueEx p_key c_subkey nullPtr p_ty nullPtr p_value_len   ty <- peek p_ty-  failUnlessSuccess "RegQueryValue" $ return (if ty == rEG_SZ then 0 else 1)+  failUnlessSuccess "regQueryDefaultValue" $ return (if ty == rEG_SZ then 0 else 1)   value_len <- peek p_value_len   allocaArray0 (fromIntegral value_len) $ \ c_value -> do-    failUnlessSuccess "RegQueryValue" $+    failUnlessSuccess "regQueryDefaultValue" $       c_RegQueryValueEx p_key c_subkey nullPtr p_ty c_value p_value_len     peekTString (castPtr c_value) @@ -472,6 +486,35 @@ -- endif  -- 3.1 compat. - only allows storage of REG_SZ values.++regGetValue :: HKEY -> Maybe String -> Maybe String -> RegTypeRestriction -> Maybe LPDWORD -> Maybe LPVOID -> Maybe LPDWORD -> IO ()+regGetValue key m_subkey m_valuename flags m_type m_value m_size =+  withForeignPtr key $ \ p_key ->+  maybeWith withTString m_subkey $ \ c_subkey ->+  maybeWith withTString m_valuename $ \ c_valuename ->+  failUnlessSuccess "RegGetValue" $+    c_RegGetValue p_key c_subkey c_valuename flags (maybePtr m_type) (maybePtr m_value) (maybePtr m_size)+foreign import WINDOWS_CCONV unsafe "windows.h RegGetValueW"+  c_RegGetValue :: PKEY -> LPCTSTR -> LPCTSTR -> DWORD -> LPDWORD -> LPVOID -> LPDWORD -> IO ErrCode++type RegTypeRestriction = DWORD++#{enum RegTypeRestriction,+  , rRF_RT_ANY            = RRF_RT_ANY+  , rRF_RT_DWORD          = RRF_RT_DWORD+  , rRF_RT_QWORD          = RRF_RT_QWORD+  , rRF_RT_REG_BINARY     = RRF_RT_REG_BINARY+  , rRF_RT_REG_DWORD      = RRF_RT_REG_DWORD+  , rRF_RT_REG_EXPAND_SZ  = RRF_RT_REG_EXPAND_SZ+  , rRF_RT_REG_MULTI_SZ   = RRF_RT_REG_MULTI_SZ+  , rRF_RT_REG_NONE       = RRF_RT_REG_NONE+  , rRF_RT_REG_QWORD      = RRF_RT_REG_QWORD+  , rRF_RT_REG_SZ         = RRF_RT_REG_SZ+  , rRF_NOEXPAND          = RRF_NOEXPAND+  , rRF_ZEROONFAILURE     = RRF_ZEROONFAILURE+  , rRF_SUBKEY_WOW6464KEY = RRF_SUBKEY_WOW6464KEY+  , rRF_SUBKEY_WOW6432KEY = RRF_SUBKEY_WOW6432KEY+  }  regSetValue :: HKEY -> String -> String -> IO () regSetValue key subkey value =
Win32.cabal view
@@ -1,5 +1,5 @@ name:		Win32-version:	2.7.0.0+version:	2.8.0.0 license:	BSD3 license-file:	LICENSE author:		Alastair Reid, shelarcy, Tamar Christina@@ -13,8 +13,8 @@ build-type:     Simple cabal-version:  >=1.10 extra-source-files:-	include/diatemp.h include/dumpBMP.h include/ellipse.h include/errors.h-	include/Win32Aux.h include/win32debug.h include/alignment.h+        include/diatemp.h include/dumpBMP.h include/ellipse.h include/errors.h+        include/Win32Aux.h include/win32debug.h include/alignment.h         changelog.md  Library@@ -105,7 +105,7 @@     ghc-options:      -Wall     include-dirs:     include     includes:         "alphablend.h", "diatemp.h", "dumpBMP.h", "ellipse.h", "errors.h", "HsGDI.h", "HsWin32.h", "Win32Aux.h", "win32debug.h", "windows_cconv.h", "WndProc.h", "alignment.h"-    install-includes: "HsWin32.h", "HsGDI.h", "WndProc.h", "windows_cconv.h", "alphablend.h", "winternl_compat.h", "winuser_compat.h"+    install-includes: "HsWin32.h", "HsGDI.h", "WndProc.h", "windows_cconv.h", "alphablend.h", "winternl_compat.h", "winuser_compat.h", "winreg_compat.h"     c-sources:         cbits/HsGDI.c         cbits/HsWin32.c
changelog.md view
@@ -1,5 +1,17 @@ # Changelog for [`Win32` package](http://hackage.haskell.org/package/Win32) +## 2.8.0.0 *May 2018*++* Deprecated `regQueryValueKey`. (See #105, #108)+* Updated `regQueryValue` signature (See #108)+* Add `regQueryDefaultValue` (See #108)+* Add `regGetValue` and `RegTypeRestriction` (See #109)+* Remove `sYNCHRONIZE` from System.Win32.Process, use System.Win32.File instead. (See #110)++## 2.7.1.0 *April 2018*++* Fixed `MOUSEINPUT` storable instance. (See #106)+ ## 2.7.0.0 *March 2018*  * Fixed `DWORD_PTR` type (See #99)
+ include/winreg_compat.h view
@@ -0,0 +1,32 @@+#ifndef WINREG_COMPAT_H+#define WINREG_COMPAT_H++#if defined(x86_64_HOST_ARCH) || __GLASGOW_HASKELL__ > 708+#+#else+#define RRF_RT_REG_NONE 0x00000001+#define RRF_RT_REG_SZ 0x00000002+#define RRF_RT_REG_EXPAND_SZ 0x00000004+#define RRF_RT_REG_BINARY 0x00000008+#define RRF_RT_REG_DWORD 0x00000010+#define RRF_RT_REG_MULTI_SZ 0x00000020+#define RRF_RT_REG_QWORD 0x00000040++#define RRF_RT_DWORD (RRF_RT_REG_BINARY | RRF_RT_REG_DWORD)+#define RRF_RT_QWORD (RRF_RT_REG_BINARY | RRF_RT_REG_QWORD)+#define RRF_RT_ANY 0x0000ffff++#define RRF_NOEXPAND 0x10000000+#define RRF_ZEROONFAILURE 0x20000000++#endif++#ifndef RRF_SUBKEY_WOW6464KEY+#define RRF_SUBKEY_WOW6464KEY 0x00010000+#endif++#ifndef RRF_SUBKEY_WOW6432KEY+#define RRF_SUBKEY_WOW6432KEY 0x00020000+#endif++#endif /* WINREG_COMPAT_H */