Use CreateEventW rather than CreateEvent.
diff --git a/asio/include/asio/detail/impl/win_event.ipp b/asio/include/asio/detail/impl/win_event.ipp
index c9b60e4..d045681 100644
--- a/asio/include/asio/detail/impl/win_event.ipp
+++ b/asio/include/asio/detail/impl/win_event.ipp
@@ -32,9 +32,9 @@
   : state_(0)
 {
 #if defined(ASIO_WINDOWS_APP)
-  events_[0] = ::CreateEventEx(0, 0, CREATE_EVENT_MANUAL_RESET, 0);
+  events_[0] = ::CreateEventExW(0, 0, CREATE_EVENT_MANUAL_RESET, 0);
 #else // defined(ASIO_WINDOWS_APP)
-  events_[0] = ::CreateEvent(0, true, false, 0);
+  events_[0] = ::CreateEventW(0, true, false, 0);
 #endif // defined(ASIO_WINDOWS_APP)
   if (!events_[0])
   {
@@ -45,9 +45,9 @@
   }
 
 #if defined(ASIO_WINDOWS_APP)
-  events_[1] = ::CreateEventEx(0, 0, 0, 0);
+  events_[1] = ::CreateEventExW(0, 0, 0, 0);
 #else // defined(ASIO_WINDOWS_APP)
-  events_[1] = ::CreateEvent(0, false, false, 0);
+  events_[1] = ::CreateEventW(0, false, false, 0);
 #endif // defined(ASIO_WINDOWS_APP)
   if (!events_[1])
   {
diff --git a/asio/include/asio/detail/impl/win_iocp_handle_service.ipp b/asio/include/asio/detail/impl/win_iocp_handle_service.ipp
index d093a58..fbd7b94 100644
--- a/asio/include/asio/detail/impl/win_iocp_handle_service.ipp
+++ b/asio/include/asio/detail/impl/win_iocp_handle_service.ipp
@@ -39,7 +39,7 @@
     OffsetHigh = 0;
 
     // Create a non-signalled manual-reset event, for GetOverlappedResult.
-    hEvent = ::CreateEvent(0, TRUE, FALSE, 0);
+    hEvent = ::CreateEventW(0, TRUE, FALSE, 0);
     if (hEvent)
     {
       // As documented in GetQueuedCompletionStatus, setting the low order
diff --git a/asio/include/asio/detail/impl/win_thread.ipp b/asio/include/asio/detail/impl/win_thread.ipp
index 0fa1ec3..1db4f4e 100644
--- a/asio/include/asio/detail/impl/win_thread.ipp
+++ b/asio/include/asio/detail/impl/win_thread.ipp
@@ -65,7 +65,7 @@
 void win_thread::start_thread(func_base* arg, unsigned int stack_size)
 {
   ::HANDLE entry_event = 0;
-  arg->entry_event_ = entry_event = ::CreateEvent(0, true, false, 0);
+  arg->entry_event_ = entry_event = ::CreateEventW(0, true, false, 0);
   if (!entry_event)
   {
     DWORD last_error = ::GetLastError();
@@ -75,7 +75,7 @@
     asio::detail::throw_error(ec, "thread.entry_event");
   }
 
-  arg->exit_event_ = exit_event_ = ::CreateEvent(0, true, false, 0);
+  arg->exit_event_ = exit_event_ = ::CreateEventW(0, true, false, 0);
   if (!exit_event_)
   {
     DWORD last_error = ::GetLastError();