Fix for bug #110670 - Win32 os.listdir raises confusing errors:
The existing win32_error() function now returns the new(ish) WindowsError, ensuring we get correct error messages.
diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c
index e7f35cf..d7755bf 100644
--- a/Modules/posixmodule.c
+++ b/Modules/posixmodule.c
@@ -349,12 +349,16 @@
 static PyObject *
 win32_error(char* function, char* filename)
 {
-	/* XXX this could be improved */
+	/* XXX We should pass the function name along in the future.
+	   (_winreg.c also wants to pass the function name.)
+	   This would however require an additional param to the 
+	   Windows error object, which is non-trivial.
+	*/
 	errno = GetLastError();
 	if (filename)
-		return PyErr_SetFromErrnoWithFilename(PyExc_OSError, filename);
+		return PyErr_SetFromWindowsErrWithFilename(errno, filename);
 	else
-		return PyErr_SetFromErrno(PyExc_OSError);
+		return PyErr_SetFromWindowsErr(errno);
 }
 #endif