See SF# 1751801: Windows: Add the _fileio builtin module, and undefine
HAVE_FTRUNCATE because ftruncate does not exist on Windows.
diff --git a/Modules/_fileio.c b/Modules/_fileio.c
index 3ca3172..feae513 100644
--- a/Modules/_fileio.c
+++ b/Modules/_fileio.c
@@ -22,7 +22,7 @@
 
 #ifdef MS_WINDOWS
 /* can simulate truncate with Win32 API functions; see file_truncate */
-#define HAVE_FTRUNCATE
+/* #define HAVE_FTRUNCATE */
 #define WIN32_LEAN_AND_MEAN
 #include <windows.h>
 #endif
@@ -581,6 +581,7 @@
 	return portable_lseek(self->fd, NULL, 1);
 }
 
+#ifdef HAVE_FTRUNCATE
 static PyObject *
 fileio_truncate(PyFileIOObject *self, PyObject *args)
 {
@@ -629,6 +630,7 @@
 
 	return posobj;
 }
+#endif
 
 static char *
 mode_string(PyFileIOObject *self)
@@ -711,10 +713,12 @@
 "\n"
 "Note that not all file objects are seekable.");
 
+#ifdef HAVE_FTRUNCATE
 PyDoc_STRVAR(truncate_doc,
 "truncate([size: int]) -> None.	 Truncate the file to at most size bytes.\n"
 "\n"
 "Size defaults to the current file position, as returned by tell().");
+#endif
 
 PyDoc_STRVAR(tell_doc,
 "tell() -> int.	 Current file position");
@@ -747,7 +751,9 @@
 	{"write",    (PyCFunction)fileio_write,	   METH_VARARGS, write_doc},
 	{"seek",     (PyCFunction)fileio_seek,	   METH_VARARGS, seek_doc},
 	{"tell",     (PyCFunction)fileio_tell,	   METH_VARARGS, tell_doc},
+#ifdef HAVE_FTRUNCATE
 	{"truncate", (PyCFunction)fileio_truncate, METH_VARARGS, truncate_doc},
+#endif
 	{"close",    (PyCFunction)fileio_close,	   METH_NOARGS,	 close_doc},
 	{"seekable", (PyCFunction)fileio_seekable, METH_NOARGS,	 seekable_doc},
 	{"readable", (PyCFunction)fileio_readable, METH_NOARGS,	 readable_doc},
diff --git a/PC/config.c b/PC/config.c
index 8ca8cef..68fa84f 100644
--- a/PC/config.c
+++ b/PC/config.c
@@ -59,6 +59,7 @@
 extern void init_lsprof(void);
 extern void init_ast(void);
 extern void init_types(void);
+extern void init_fileio(void);
 
 /* tools/freeze/makeconfig.py marker for additional "extern" */
 /* -- ADDMODULE MARKER 1 -- */
@@ -145,6 +146,7 @@
         {"sys", NULL},
         
         {"_types", init_types},
+        {"_fileio", init_fileio},
 
         /* Sentinel */
         {0, 0}
diff --git a/PCbuild/pythoncore.vcproj b/PCbuild/pythoncore.vcproj
index 2de1611..1da5593 100644
--- a/PCbuild/pythoncore.vcproj
+++ b/PCbuild/pythoncore.vcproj
@@ -371,6 +371,9 @@
 			RelativePath="..\Modules\_csv.c">
 		</File>
 		<File
+			RelativePath="..\Modules\_fileio.c">
+		</File>
+		<File
 			RelativePath="..\Modules\_functoolsmodule.c">
 		</File>
 		<File