diff --git a/src/core/ngx_cycle.c b/src/core/ngx_cycle.c
index 8635895..91188cf 100644
--- a/src/core/ngx_cycle.c
+++ b/src/core/ngx_cycle.c
@@ -375,14 +375,7 @@
             goto failed;
         }
 
-#if (NGX_WIN32)
-        if (ngx_file_append_mode(file[i].fd) != NGX_OK) {
-            ngx_log_error(NGX_LOG_EMERG, log, ngx_errno,
-                          ngx_file_append_mode_n " \"%s\" failed",
-                          file[i].name.data);
-            goto failed;
-        }
-#else
+#if !(NGX_WIN32)
         if (fcntl(file[i].fd, F_SETFD, FD_CLOEXEC) == -1) {
             ngx_log_error(NGX_LOG_EMERG, log, ngx_errno,
                           "fcntl(FD_CLOEXEC) \"%s\" failed",
@@ -1077,21 +1070,7 @@
             continue;
         }
 
-#if (NGX_WIN32)
-        if (ngx_file_append_mode(fd) == NGX_ERROR) {
-            ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_errno,
-                          ngx_file_append_mode_n " \"%s\" failed",
-                          file[i].name.data);
-
-            if (ngx_close_file(fd) == NGX_FILE_ERROR) {
-                ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_errno,
-                              ngx_close_file_n " \"%s\" failed",
-                              file[i].name.data);
-            }
-
-            continue;
-        }
-#else
+#if !(NGX_WIN32)
         if (user != (ngx_uid_t) NGX_CONF_UNSET_UINT) {
             ngx_file_info_t  fi;
 
diff --git a/src/os/win32/ngx_files.c b/src/os/win32/ngx_files.c
index f20b479..79f42b1 100644
--- a/src/os/win32/ngx_files.c
+++ b/src/os/win32/ngx_files.c
@@ -506,31 +506,6 @@
 
 
 ngx_int_t
-ngx_file_append_mode(ngx_fd_t fd)
-{
-#if 0
-    if (LockFile(fd, 0, 0, 0xffffffff, 0xffffffff) == 0) {
-        return NGX_ERROR;
-    }
-#endif
-
-    if (SetFilePointer(fd, 0, NULL, FILE_END) == INVALID_SET_FILE_POINTER) {
-        if (ngx_errno != NO_ERROR) {
-            return NGX_ERROR;
-        }
-    }
-
-#if 0
-    if (UnlockFile(fd, 0, 0, 0xffffffff, 0xffffffff) == 0) {
-        return NGX_ERROR;
-    }
-#endif
-
-    return NGX_OK;
-}
-
-
-ngx_int_t
 ngx_directio_on(ngx_fd_t fd)
 {
     return 0;
diff --git a/src/os/win32/ngx_files.h b/src/os/win32/ngx_files.h
index 2efbc20..636d14c 100644
--- a/src/os/win32/ngx_files.h
+++ b/src/os/win32/ngx_files.h
@@ -73,10 +73,6 @@
 #define NGX_FILE_OWNER_ACCESS       0
 
 
-ngx_int_t ngx_file_append_mode(ngx_fd_t fd);
-#define ngx_file_append_mode_n      "SetFilePointer()"
-
-
 #define ngx_open_tempfile(name, persistent, access)                          \
     CreateFile((const char *) name,                                          \
                GENERIC_READ|GENERIC_WRITE,                                   \
