Remove wrapper function that only cast filename. Don’t run tests on UWP or ARM.
diff --git a/appveyor.yml b/appveyor.yml
index d62fe49..379282a 100644
--- a/appveyor.yml
+++ b/appveyor.yml
@@ -7,42 +7,52 @@
       TRIPLET: x64-windows
       CMAKE_OPTS: "-DBUILD_SHARED_LIBS=off"
       CMAKE_CONFIG: Release
+      RUN_TESTS: yes
 #    - GENERATOR: "Visual Studio 15 2017 Win64"
 #      TRIPLET: x64-windows
 #      CMAKE_OPTS: "-DBUILD_SHARED_LIBS=off"
 #      CMAKE_CONFIG: Debug
+#      RUN_TESTS: yes
     - GENERATOR: "Visual Studio 15 2017 Win64"
       TRIPLET: x64-uwp
       CMAKE_OPTS: "-DCMAKE_SYSTEM_NAME=WindowsStore -DCMAKE_SYSTEM_VERSION=10.0"
       CMAKE_CONFIG: Release
+      RUN_TESTS: no
     - GENERATOR: "Visual Studio 15 2017"
       TRIPLET: x86-windows
       CMAKE_OPTS: "-DBUILD_SHARED_LIBS=off"
       CMAKE_CONFIG: Release
+      RUN_TESTS: yes
 #    - GENERATOR: "Visual Studio 15 2017"
 #      TRIPLET: x86-windows
 #      CMAKE_OPTS: "-DBUILD_SHARED_LIBS=off"
 #      CMAKE_CONFIG: Debug
+#      RUN_TESTS: yes
     - GENERATOR: "Visual Studio 15 2017"
       TRIPLET: x86-uwp
       CMAKE_OPTS: "-DCMAKE_SYSTEM_NAME=WindowsStore -DCMAKE_SYSTEM_VERSION=10.0"
       CMAKE_CONFIG: Release
+      RUN_TESTS: no
     - GENERATOR: "Visual Studio 15 2017 ARM"
       TRIPLET: arm-windows
       CMAKE_OPTS: "-DENABLE_OPENSSL=off"
       CMAKE_CONFIG: Release
+      RUN_TESTS: no
     - GENERATOR: "Visual Studio 15 2017 ARM"
       TRIPLET: arm-uwp
       CMAKE_OPTS: "-DCMAKE_SYSTEM_NAME=WindowsStore -DCMAKE_SYSTEM_VERSION=10.0 -DENABLE_OPENSSL=off"
       CMAKE_CONFIG: Release
+      RUN_TESTS: no
     - GENERATOR: "Visual Studio 15 2017"
       TRIPLET: arm64-windows
       CMAKE_OPTS: "-AARM64 -DENABLE_OPENSSL=off"
       CMAKE_CONFIG: Release
+      RUN_TESTS: no
     - GENERATOR: "Visual Studio 15 2017"
       TRIPLET: arm64-uwp
       CMAKE_OPTS: "-AARM64 -DCMAKE_SYSTEM_NAME=WindowsStore -DCMAKE_SYSTEM_VERSION=10.0 -DENABLE_OPENSSL=off"
       CMAKE_CONFIG: Release
+      RUN_TESTS: no
 
 before_build:
   cmd: >-
@@ -78,4 +88,4 @@
   cmd: >-
     set VERBOSE=yes
 
-    ctest -C %CMAKE_CONFIG% --output-on-failure
+    IF %RUN_TESTS%==yes ( ctest -C %CMAKE_CONFIG% --output-on-failure )
diff --git a/lib/zip_source_file_win32.h b/lib/zip_source_file_win32.h
index 0a3027b..5d925da 100644
--- a/lib/zip_source_file_win32.h
+++ b/lib/zip_source_file_win32.h
@@ -49,13 +49,13 @@
 
 struct zip_source_file_win32_write_operations {
     char *(*allocate_tempname)(const char *name, size_t extra_chars, size_t *lengthp);
-    HANDLE (*create_file)(const char *name, DWORD access, DWORD share_mode, PSECURITY_ATTRIBUTES security_attributes, DWORD creation_disposition, DWORD file_attributes, HANDLE template_file);
-    BOOL (*delete_file)(const char *name);
-    DWORD (*get_file_attributes)(const char *name);
-    BOOL (*get_file_attributes_ex)(const char *name, GET_FILEEX_INFO_LEVELS info_level, void *information);
+    HANDLE (__stdcall *create_file)(const void *name, DWORD access, DWORD share_mode, PSECURITY_ATTRIBUTES security_attributes, DWORD creation_disposition, DWORD file_attributes, HANDLE template_file);
+    BOOL (__stdcall *delete_file)(const void *name);
+    DWORD (__stdcall *get_file_attributes)(const void *name);
+    BOOL (__stdcall *get_file_attributes_ex)(const void *name, GET_FILEEX_INFO_LEVELS info_level, void *information);
     void (*make_tempname)(char *buf, size_t len, const char *name, zip_uint32_t i);
-    BOOL (*move_file)(const char *from, const char *to, DWORD flags);
-    BOOL (*set_file_attributes)(const char *name, DWORD attributes);
+    BOOL (__stdcall *move_file)(const void *from, const void *to, DWORD flags);
+    BOOL (__stdcall *set_file_attributes)(const void *name, DWORD attributes);
     char *(*string_duplicate)(const char *string);
 };
 
diff --git a/lib/zip_source_file_win32_ansi.c b/lib/zip_source_file_win32_ansi.c
index 9623f7c..1869a12 100644
--- a/lib/zip_source_file_win32_ansi.c
+++ b/lib/zip_source_file_win32_ansi.c
@@ -36,27 +36,6 @@
 static char *ansi_allocate_tempname(const char *name, size_t extra_chars, size_t *lengthp);
 static void ansi_make_tempname(char *buf, size_t len, const char *name, zip_uint32_t i);
 
-struct test {
-    DWORD (__stdcall *get_file_attributes)(const void *name);
-};
-
-struct test test_a = {
-    GetFileAttributesA
-};
-
-struct test test_w = {
-    GetFileAttributesW
-};
-
-static
-DWORD __stdcall get_file_attributes_own(const void *name) {
-    return 0;
-}
-
-struct test test_own = {
-    get_file_attributes_own
-};
-
 zip_source_file_win32_write_operations_t ops_ansi = {
     ansi_allocate_tempname,
     CreateFileA,
diff --git a/lib/zip_source_file_win32_utf16.c b/lib/zip_source_file_win32_utf16.c
index 9ada4af..42fb531 100644
--- a/lib/zip_source_file_win32_utf16.c
+++ b/lib/zip_source_file_win32_utf16.c
@@ -34,24 +34,19 @@
 #include "zip_source_file_win32.h"
 
 static char *utf16_allocate_tempname(const char *name, size_t extra_chars, size_t *lengthp);
-static HANDLE utf16_create_file(const char *name, DWORD access, DWORD share_mode, PSECURITY_ATTRIBUTES security_attributes, DWORD creation_disposition, DWORD file_attributes, HANDLE template_file);
-static BOOL utf16_delete_file(const char *name);
-static DWORD utf16_get_file_attributes(const char *name);
-static BOOL utf16_get_file_attributes_ex(const char *name, GET_FILEEX_INFO_LEVELS info_level, void *information);
+static HANDLE __stdcall utf16_create_file(const void *name, DWORD access, DWORD share_mode, PSECURITY_ATTRIBUTES security_attributes, DWORD creation_disposition, DWORD file_attributes, HANDLE template_file);
 static void utf16_make_tempname(char *buf, size_t len, const char *name, zip_uint32_t i);
-static BOOL utf16_move_file(const char *from, const char *to, DWORD flags);
-static BOOL utf16_set_file_attributes(const char *name, DWORD attributes);
 static char *utf16_strdup(const char *string);
 
 zip_source_file_win32_write_operations_t ops_utf16 = {
     utf16_allocate_tempname,
     utf16_create_file,
-    utf16_delete_file,
-    utf16_get_file_attributes,
-    utf16_get_file_attributes_ex,
+    DeleteFileW,
+    GetFileAttributesW,
+    GetFileAttributesExW,
     utf16_make_tempname,
-    utf16_move_file,
-    utf16_set_file_attributes,
+    MoveFileExW,
+    SetFileAttributesW,
     utf16_strdup
 };
 
@@ -101,41 +96,11 @@
 }
 
 
-static BOOL
-utf16_delete_file(const char *name) {
-    return DeleteFileW((const wchar_t *)name);
-}
-
-
-static DWORD
-utf16_get_file_attributes(const char *name) {
-    return GetFileAttributesW((const wchar_t *)name);
-}
-
-
-static BOOL
-utf16_get_file_attributes_ex(const char *name, GET_FILEEX_INFO_LEVELS info_level, void *information) {
-    return GetFileAttributesExW((const wchar_t *)name, info_level, information);
-}
-
-
-
 static void
 utf16_make_tempname(char *buf, size_t len, const char *name, zip_uint32_t i) {
     _snwprintf((wchar_t *)buf, len, L"%s.%08x", (const wchar_t *)name, i);
 }
 
-static BOOL
-utf16_move_file(const char *from, const char *to, DWORD flags) {
-    return MoveFileExW((const wchar_t *)from, (const wchar_t *)to, flags);
-}
-
-
-static BOOL
-utf16_set_file_attributes(const char *name, DWORD attributes) {
-    return SetFileAttributesW((const wchar_t *)name, attributes);
-}
-
 
 static char *
 utf16_strdup(const char *string) {