Update latency tests for Windows.
diff --git a/asio/src/Makefile.msc b/asio/src/Makefile.msc
index 4852be2..6a6aed5 100644
--- a/asio/src/Makefile.msc
+++ b/asio/src/Makefile.msc
@@ -66,6 +66,12 @@
 	$(SSLDIR)/out32/ssleay32.lib \
 	user32.lib advapi32.lib gdi32.lib
 
+LATENCY_TEST_EXES = \
+	tests\latency\tcp_client.exe \
+	tests\latency\tcp_server.exe \
+	tests\latency\udp_client.exe \
+	tests\latency\udp_server.exe
+
 PERFORMANCE_TEST_EXES = \
 	tests\performance\client.exe \
 	tests\performance\server.exe
@@ -198,6 +204,7 @@
 !endif
 
 all: \
+	$(LATENCY_TEST_EXES) \
 	$(PERFORMANCE_TEST_EXES) \
 	$(UNIT_TEST_EXES) \
 	$(EXAMPLE_EXES)
@@ -209,6 +216,9 @@
 check: $(UNIT_TEST_EXES)
 	!@echo === Running $** === && $** && echo.
 
+{tests\latency}.cpp{tests\latency}.exe:
+	cl -Fe$@ -Fo$(<:.cpp=.obj) $(CXXFLAGS) $(DEFINES) $< $(LIBS) -link -opt:ref
+
 {tests\performance}.cpp{tests\performance}.exe:
 	cl -Fe$@ -Fo$(<:.cpp=.obj) $(CXXFLAGS) $(DEFINES) $< $(LIBS) -link -opt:ref
 
diff --git a/asio/src/tests/latency/high_res_clock.hpp b/asio/src/tests/latency/high_res_clock.hpp
index 7cd209e..4bd7cc4 100644
--- a/asio/src/tests/latency/high_res_clock.hpp
+++ b/asio/src/tests/latency/high_res_clock.hpp
@@ -11,9 +11,19 @@
 #ifndef HIGH_RES_CLOCK_HPP
 #define HIGH_RES_CLOCK_HPP
 
+#include <boost/config.hpp>
 #include <boost/cstdint.hpp>
 
-#if defined(__GNUC__) && defined(__x86_64__)
+#if defined(BOOST_WINDOWS)
+
+inline boost::uint64_t high_res_clock()
+{
+  LARGE_INTEGER i;
+  QueryPerformanceCounter(&i);
+  return i.QuadPart;
+}
+
+#elif defined(__GNUC__) && defined(__x86_64__)
 
 inline boost::uint64_t high_res_clock()
 {
diff --git a/asio/src/tests/latency/tcp_client.cpp b/asio/src/tests/latency/tcp_client.cpp
index 80ddad8..03fabac 100644
--- a/asio/src/tests/latency/tcp_client.cpp
+++ b/asio/src/tests/latency/tcp_client.cpp
@@ -44,7 +44,7 @@
   std::vector<boost::shared_ptr<tcp::socket> > sockets;
 
   const char* ip = argv[1];
-  int port = std::atoi(argv[2]);
+  unsigned short port = static_cast<unsigned short>(std::atoi(argv[2]));
   tcp::endpoint target(asio::ip::address::from_string(ip), port);
 
   int num_connections = std::atoi(argv[3]);
@@ -64,7 +64,7 @@
   ptime start = microsec_clock::universal_time();
   boost::uint64_t start_hr = high_res_clock();
 
-  int samples[num_samples];
+  boost::uint64_t samples[num_samples];
   for (int i = 0; i < num_samples; ++i)
   {
     tcp::socket& socket = *sockets[i % num_connections];
diff --git a/asio/src/tests/latency/tcp_server.cpp b/asio/src/tests/latency/tcp_server.cpp
index 2965354..c97a2f3 100644
--- a/asio/src/tests/latency/tcp_server.cpp
+++ b/asio/src/tests/latency/tcp_server.cpp
@@ -80,7 +80,7 @@
   }
 
   asio::io_service io_service;
-  int port = std::atoi(argv[1]);
+  unsigned short port = static_cast<unsigned short>(std::atoi(argv[1]));
   tcp::acceptor acceptor(io_service, tcp::endpoint(tcp::v4(), port));
   std::vector<boost::shared_ptr<tcp_server> > servers;
 
diff --git a/asio/src/tests/latency/udp_client.cpp b/asio/src/tests/latency/udp_client.cpp
index 64e1713..6526b12 100644
--- a/asio/src/tests/latency/udp_client.cpp
+++ b/asio/src/tests/latency/udp_client.cpp
@@ -35,8 +35,9 @@
   udp::socket::non_blocking_io nbio(true);
   socket.io_control(nbio);
 
-  unsigned short first_port = std::atoi(argv[2]);
-  unsigned short last_port = first_port + std::atoi(argv[3]) - 1;
+  unsigned short first_port = static_cast<unsigned short>(std::atoi(argv[2]));
+  unsigned short num_ports = static_cast<unsigned short>(std::atoi(argv[3]));
+  unsigned short last_port = first_port + num_ports - 1;
   udp::endpoint target(asio::ip::address::from_string(argv[1]), first_port);
 
   std::vector<unsigned char> write_buf(std::atoi(argv[4]));
@@ -45,7 +46,7 @@
   ptime start = microsec_clock::universal_time();
   boost::uint64_t start_hr = high_res_clock();
 
-  int samples[num_samples];
+  boost::uint64_t samples[num_samples];
   for (int i = 0; i < num_samples; ++i)
   {
     boost::uint64_t t = high_res_clock();
diff --git a/asio/src/tests/latency/udp_server.cpp b/asio/src/tests/latency/udp_server.cpp
index 6f1f779..8d234c0 100644
--- a/asio/src/tests/latency/udp_server.cpp
+++ b/asio/src/tests/latency/udp_server.cpp
@@ -71,11 +71,12 @@
   asio::io_service io_service;
   std::vector<boost::shared_ptr<udp_server> > servers;
 
-  int first_port = std::atoi(argv[1]);
-  int last_port = first_port + std::atoi(argv[2]) - 1;
+  unsigned short first_port = static_cast<unsigned short>(std::atoi(argv[1]));
+  unsigned short num_ports = static_cast<unsigned short>(std::atoi(argv[3]));
   std::size_t bufsize = std::atoi(argv[3]);
-  for (int port = first_port; port <= last_port; ++port)
+  for (unsigned short i = 0; i < num_ports; ++i)
   {
+    unsigned short port = first_port + i;
     boost::shared_ptr<udp_server> s(new udp_server(io_service, port, bufsize));
     servers.push_back(s);
     (*s)(asio::error_code());