diff --git a/include/grpc/support/port_platform.h b/include/grpc/support/port_platform.h
index 2b99e630dd0f161c63df4be6ee8d35f8b1733f1a..05a5bbe1bc9e0160a287e0c5bd60978513560e42 100644
--- a/include/grpc/support/port_platform.h
+++ b/include/grpc/support/port_platform.h
@@ -45,9 +45,11 @@
 #if defined(_WIN64) || defined(WIN64)
 #define GPR_WIN32 1
 #define GPR_ARCH_64 1
+#define GPR_GETPID_IN_PROCESS_H 1
 #elif defined(_WIN32) || defined(WIN32)
 #define GPR_ARCH_32 1
 #define GPR_WIN32 1
+#define GPR_GETPID_IN_PROCESS_H 1
 #elif defined(ANDROID) || defined(__ANDROID__)
 #define GPR_ANDROID 1
 #define GPR_ARCH_32 1
@@ -60,6 +62,7 @@
 #define GPR_POSIX_STRING 1
 #define GPR_POSIX_SYNC 1
 #define GPR_POSIX_TIME 1
+#define GPR_GETPID_IN_UNISTD_H 1
 #elif defined(__linux__)
 #define GPR_CPU_LINUX 1
 #define GPR_GCC_ATOMIC 1
@@ -70,6 +73,7 @@
 #define GPR_POSIX_STRING 1
 #define GPR_POSIX_SYNC 1
 #define GPR_POSIX_TIME 1
+#define GPR_GETPID_IN_UNISTD_H 1
 #ifdef _LP64
 #define GPR_ARCH_64 1
 #else /* _LP64 */
@@ -86,6 +90,7 @@
 #define GPR_POSIX_STRING 1
 #define GPR_POSIX_SYNC 1
 #define GPR_POSIX_TIME 1
+#define GPR_GETPID_IN_UNISTD_H 1
 #ifdef _LP64
 #define GPR_ARCH_64 1
 #else /* _LP64 */
diff --git a/src/core/support/log_win32.c b/src/core/support/log_win32.c
index ae5f23a90dc9f406596b39c527ada1b91c3b38e5..dc8c1d0785ad9e7afdcf0333fc5901c29a7561c1 100644
--- a/src/core/support/log_win32.c
+++ b/src/core/support/log_win32.c
@@ -36,12 +36,13 @@
 #ifdef GPR_WIN32
 
 #include <grpc/support/log.h>
+#include <grpc/support/alloc.h>
 #include <stdio.h>
 #include <stdarg.h>
 
 void gpr_log(const char *file, int line, gpr_log_severity severity,
-             const char *message) {
-  const char *message = NULL;
+             const char *format, ...) {
+  char *message = NULL;
   va_list args;
   int ret;
 
@@ -53,7 +54,7 @@ void gpr_log(const char *file, int line, gpr_log_severity severity,
     message = NULL;
   } else {
     /* Allocate a new buffer, with space for the NUL terminator. */
-    strp_buflen = (size_t)ret + 1;
+    size_t strp_buflen = (size_t)ret + 1;
     message = gpr_malloc(strp_buflen);
 
     /* Print to the buffer. */
@@ -73,7 +74,7 @@ void gpr_log(const char *file, int line, gpr_log_severity severity,
 
 /* Simple starter implementation */
 void gpr_default_log(gpr_log_func_args *args) {
-  fprintf(stderr, "%s %s:%d: %s\n", gpr_log_severity_string(severity),
+  fprintf(stderr, "%s %s:%d: %s\n", gpr_log_severity_string(args->severity),
           args->file, args->line, args->message);
 }
 
diff --git a/src/core/support/time.c b/src/core/support/time.c
index 0e88c65be0c43341b13a0eb89bca2080aca6457a..97243318fdaa5265a117f71c9e0a3212c5e7cc84 100644
--- a/src/core/support/time.c
+++ b/src/core/support/time.c
@@ -259,7 +259,7 @@ gpr_int32 gpr_time_to_millis(gpr_timespec t) {
   } else if (t.tv_sec <= -2147483) {
     /* TODO(ctiller): correct handling here (it's so far in the past do we
        care?) */
-    return -2147483648;
+    return -2147483647;
   } else {
     return t.tv_sec * GPR_MS_PER_SEC + t.tv_nsec / GPR_NS_PER_MS;
   }
diff --git a/templates/vsprojects/vs2013/build_and_run_tests.bat.template b/templates/vsprojects/vs2013/build_and_run_tests.bat.template
index 8679bee3fc3966d89c8ecae747463042cc3e5549..4a15e01c522225fa2a0b71be68a953feb97d74ed 100644
--- a/templates/vsprojects/vs2013/build_and_run_tests.bat.template
+++ b/templates/vsprojects/vs2013/build_and_run_tests.bat.template
@@ -13,7 +13,7 @@
 
 @rem Build the library dependencies first
 MSBuild.exe gpr.vcxproj /p:Configuration=Debug
-MSBuild.exe grpc_test_util.vcxproj /p:Configuration=Debug
+MSBuild.exe gpr_test_util.vcxproj /p:Configuration=Debug
 
 mkdir ${test_bin_dir}
 
diff --git a/test/core/util/test_config.c b/test/core/util/test_config.c
index fc5de9bbefba5a43c1fbe7705251889e25a9a295..ab2c0d80a992ab1fa617b5d278acc7134479a8e4 100644
--- a/test/core/util/test_config.c
+++ b/test/core/util/test_config.c
@@ -33,11 +33,25 @@
 
 #include "test/core/util/test_config.h"
 
+#include <grpc/support/port_platform.h>
 #include <stdlib.h>
+
+#if GPR_GETPID_IN_UNISTD_H
 #include <unistd.h>
+static int seed() {
+  return getpid();
+}
+#endif
+
+#if GPR_GETPID_IN_PROCESS_H
+#include <process.h>
+static int seed(void) {
+  return _getpid();
+}
+#endif
 
 void grpc_test_init(int argc, char **argv) {
   /* seed rng with pid, so we don't end up with the same random numbers as a
      concurrently running test binary */
-  srand(getpid());
+  srand(seed());
 }
diff --git a/vsprojects/vs2013/build_and_run_tests.bat b/vsprojects/vs2013/build_and_run_tests.bat
index 06e9776d862c77f79068b37cdbd509a68b22ad64..3e36dcf6002060f35747d06e050f707d57d0db6a 100644
--- a/vsprojects/vs2013/build_and_run_tests.bat
+++ b/vsprojects/vs2013/build_and_run_tests.bat
@@ -5,7 +5,7 @@
 
 @rem Build the library dependencies first
 MSBuild.exe gpr.vcxproj /p:Configuration=Debug
-MSBuild.exe grpc_test_util.vcxproj /p:Configuration=Debug
+MSBuild.exe gpr_test_util.vcxproj /p:Configuration=Debug
 
 mkdir test_bin