summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcliechti <cliechti@f19166aa-fa4f-0410-85c2-fa1106f25c8a>2011-08-05 02:33:14 +0000
committercliechti <cliechti@f19166aa-fa4f-0410-85c2-fa1106f25c8a>2011-08-05 02:33:14 +0000
commite4a7cd2440527c01dce438492ff3af7ebfcbe14b (patch)
treeffbdf2688c867f10fae7b7c6bbbc62fccd8046f4
parent5035eb1265e6622ec525c4b093dc4ae657632bce (diff)
downloadpyserial-e4a7cd2440527c01dce438492ff3af7ebfcbe14b.tar.gz
implmement patch according to SF 3036175
git-svn-id: http://svn.code.sf.net/p/pyserial/code/trunk/pyserial@405 f19166aa-fa4f-0410-85c2-fa1106f25c8a
-rw-r--r--CHANGES.txt2
-rw-r--r--serial/win32.py33
2 files changed, 25 insertions, 10 deletions
diff --git a/CHANGES.txt b/CHANGES.txt
index f08f961..a83f498 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -421,4 +421,4 @@ Bugfixes (posix):
Bugfixes (win32):
- [SF 3057499] writeTimeoutError when write Timeout is 0
-
+- [SF 3036175] Windows 98 Support fix
diff --git a/serial/win32.py b/serial/win32.py
index 9b8c118..ca6c635 100644
--- a/serial/win32.py
+++ b/serial/win32.py
@@ -14,15 +14,30 @@ class _SECURITY_ATTRIBUTES(Structure):
pass
LPSECURITY_ATTRIBUTES = POINTER(_SECURITY_ATTRIBUTES)
-CreateEventW = _stdcall_libraries['kernel32'].CreateEventW
-CreateEventW.restype = HANDLE
-CreateEventW.argtypes = [LPSECURITY_ATTRIBUTES, BOOL, BOOL, LPCWSTR]
-CreateEvent = CreateEventW # alias
-
-CreateFileW = _stdcall_libraries['kernel32'].CreateFileW
-CreateFileW.restype = HANDLE
-CreateFileW.argtypes = [LPCWSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES, DWORD, DWORD, HANDLE]
-CreateFile = CreateFileW # alias
+
+try:
+ CreateEventW = _stdcall_libraries['kernel32'].CreateEventW
+except AttributeError:
+ # Fallback to non wide char version for old OS...
+ from ctypes.wintypes import LPCSTR
+ CreateEventA = _stdcall_libraries['kernel32'].CreateEventA
+ CreateEventA.restype = HANDLE
+ CreateEventA.argtypes = [LPSECURITY_ATTRIBUTES, BOOL, BOOL, LPCSTR]
+ CreateEvent=CreateEventA
+
+ CreateFileA = _stdcall_libraries['kernel32'].CreateFileA
+ CreateFileA.restype = HANDLE
+ CreateFileA.argtypes = [LPCSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES, DWORD, DWORD, HANDLE]
+ CreateFile = CreateFileA
+else:
+ CreateEventW.restype = HANDLE
+ CreateEventW.argtypes = [LPSECURITY_ATTRIBUTES, BOOL, BOOL, LPCWSTR]
+ CreateEvent = CreateEventW # alias
+
+ CreateFileW = _stdcall_libraries['kernel32'].CreateFileW
+ CreateFileW.restype = HANDLE
+ CreateFileW.argtypes = [LPCWSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES, DWORD, DWORD, HANDLE]
+ CreateFile = CreateFileW # alias
class _OVERLAPPED(Structure):
pass