]> sigrok.org Git - libserialport.git/commitdiff
windows: Use a fixed worst-case WRITEFILE_MAX_SIZE.
authorMartin Ling <redacted>
Mon, 20 Jan 2020 02:01:38 +0000 (02:01 +0000)
committerMartin Ling <redacted>
Thu, 23 Jan 2020 03:35:47 +0000 (03:35 +0000)
This saves needing to include and isolate the DDK headers.

Makefile.am
libserialport_internal.h
windows_ddk.c [deleted file]
windows_ddk.h [deleted file]

index 10493de6a49b6de870a58ff76a58d59120110776..bbc4b3b162e2100a7ac283451475b74000a6ceb8 100644 (file)
@@ -32,7 +32,7 @@ if LINUX
 libserialport_la_SOURCES += linux.c linux_termios.c linux_termios.h
 endif
 if WIN32
-libserialport_la_SOURCES += windows.c windows_ddk.c windows_ddk.h
+libserialport_la_SOURCES += windows.c
 endif
 if MACOSX
 libserialport_la_SOURCES += macosx.c
index fde4883cf77d41f43f15cbb94a2eeae2ff61646c..49f36d77b9d256713fba90ddf28c3f06d7df45f5 100644 (file)
        static const GUID name = { l,w1,w2,{ b1,b2,b3,b4,b5,b6,b7,b8 } }
 #include <usbioctl.h>
 #include <usbiodef.h>
-#include "windows_ddk.h"
+/* The largest size that can be passed to WriteFile() safely
+ * on any architecture. This arises from the expression:
+ * PAGE_SIZE * (65535 - sizeof(MDL)) / sizeof(ULONG_PTR)
+ * and this worst-case value is found on x64. */
+#define WRITEFILE_MAX_SIZE 33525760
 #else
 #include <limits.h>
 #include <termios.h>
diff --git a/windows_ddk.c b/windows_ddk.c
deleted file mode 100644 (file)
index 34f6a56..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * This file is part of the libserialport project.
- *
- * Copyright (C) 2019 Martin Ling <martin-libserialport@earth.li>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-/*
- * We can't include DDK headers in serialport.c because they conflict with
- * user space headers. So this file exists to isolate the definitions which
- * use the kernel declarations.
- */
-
-#include <ddk/wdm.h>
-
-const size_t WRITEFILE_MAX_SIZE = ((65535 - sizeof(MDL)) / sizeof(ULONG_PTR)) * PAGE_SIZE;
diff --git a/windows_ddk.h b/windows_ddk.h
deleted file mode 100644 (file)
index 8e3e599..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * This file is part of the libserialport project.
- *
- * Copyright (C) 2019 Martin Ling <martin-libserialport@earth.li>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef LIBSERIALPORT_WINDOWS_DDK_H
-#define LIBSERIALPORT_WINDOWS_DDK_H
-
-SP_PRIV extern const size_t WRITEFILE_MAX_SIZE;
-
-#endif