diff --git a/dap-sdk/net/core/dap_events_socket.c b/dap-sdk/net/core/dap_events_socket.c
index b711ceae5b3d342e74e751057e1992eba00047c9..1d0e361b64abb67a664f4ae66683e33bcb9af99f 100644
--- a/dap-sdk/net/core/dap_events_socket.c
+++ b/dap-sdk/net/core/dap_events_socket.c
@@ -184,16 +184,23 @@ dap_events_socket_t * s_create_type_pipe(dap_worker_t * a_w, dap_events_socket_c
     l_errbuf[0]=0;
     if( pipe(l_pipe) < 0 ){
         l_errno = errno;
+#if defined DAP_OS_UNIX
         strerror_r(l_errno, l_errbuf, sizeof (l_errbuf));
         log_it( L_ERROR, "Error detected, can't create pipe(): '%s' (%d)", l_errbuf, l_errno);
+#elif defined DAP_OS_WINDOWS
+        log_it( L_ERROR, "Can't create pipe, errno: %d", l_errno);
+#endif
         DAP_DELETE(l_es);
         return NULL;
     }//else
      //   log_it(L_DEBUG, "Created one-way unnamed bytestream pipe %d->%d", l_pipe[0], l_pipe[1]);
     l_es->fd = l_pipe[0];
     l_es->fd2 = l_pipe[1];
+#if defined DAP_OS_UNIX
     fcntl( l_pipe[0], F_SETFL, O_NONBLOCK);
     fcntl( l_pipe[1], F_SETFL, O_NONBLOCK);
+    // this sort of fd doesn't suit ioctlsocket()...
+#endif
 
 #else
 #error "No defined s_create_type_pipe() for your platform"
@@ -425,8 +432,20 @@ dap_events_socket_t * s_create_type_event(dap_worker_t * a_w, dap_events_socket_
         }
         DAP_DELETE(l_es);
         return NULL;
-    }else
+    }else {
+        l_es->fd2 = l_es->fd;
         log_it(L_DEBUG, "Created eventfd descriptor %d", l_es->fd );
+    }
+#elif defined DAP_OS_WINDOWS
+    int l_pipe[2];
+    if (pipe(l_pipe) < 0) {
+        log_it(L_ERROR, "Can't create pipe for event type, error: %d", errno);
+        DAP_DELETE(l_es);
+        return NULL;
+    }
+    l_es->fd2   = l_pipe[0];
+    l_es->fd    = l_pipe[1];
+    log_it(L_DEBUG, "Created pipe for event type, %d -> %d", l_es->fd2, l_es->fd);
 #endif
     return l_es;
 }
@@ -480,11 +499,24 @@ void dap_events_socket_event_proc_input_unsafe(dap_events_socket_t *a_esocket)
             log_it(L_WARNING, "Can't read packet from event fd: \"%s\"(%d)", l_errbuf, l_errno);
         }else
             return; // do nothing
+#elif defined DAP_OS_WINDOWS
+        uint64_t l_value;
+        int l_ret;
+        switch (l_ret = read(a_esocket->fd, &l_value, 8)) {
+        case -1:
+            log_it(L_CRITICAL, "Can't read from event socket pipe, error: %d", errno);
+            break;
+        case 0:
+            return;
+        default:
+            a_esocket->callbacks.event_callback(a_esocket, l_value);
+            break;
+        }
 #else
 #error "No Queue fetch mechanism implemented on your platform"
 #endif
     }else
-        log_it(L_ERROR, "Queue socket %d accepted data but callback is NULL ", a_esocket->socket);
+        log_it(L_ERROR, "Event socket %d accepted data but callback is NULL ", a_esocket->socket);
 }
 
 
@@ -627,6 +659,13 @@ int dap_events_socket_event_signal( dap_events_socket_t * a_es, uint64_t a_value
         return l_errno;
     else
         return 1;
+#elif defined DAP_OS_WINDOWS
+    byte_t l_bytes[sizeof(void*)] = { 0 };
+    if(write(a_es->fd2, l_bytes, sizeof(l_bytes)) == -1) {
+        return errno;
+    } else {
+        return 0;
+    }
 #else
 #error "Not implemented dap_events_socket_event_signal() for this platform"
 #endif
diff --git a/dap-sdk/net/core/dap_proc_thread.c b/dap-sdk/net/core/dap_proc_thread.c
index 86afea3b6d3b8f3b5b0bfbc43f5f4b9f6f60e933..1cd2757ba4c14fec8367ef177599e1e838e0a394 100644
--- a/dap-sdk/net/core/dap_proc_thread.c
+++ b/dap-sdk/net/core/dap_proc_thread.c
@@ -215,7 +215,7 @@ static void * s_proc_thread_function(void * a_arg)
 #ifdef DAP_EVENTS_CAPS_EPOLL
         //log_it(L_DEBUG, "Epoll_wait call");
         int l_selected_sockets = epoll_wait(l_thread->epoll_ctl, l_epoll_events, DAP_EVENTS_SOCKET_MAX, -1);
-        size_t l_sockets_max = l_selected_sockets;
+        size_t l_sockets_max = (size_t)l_selected_sockets;
 #elif defined (DAP_EVENTS_CAPS_POLL)
         int l_selected_sockets = poll(l_poll,l_poll_count,-1);
         size_t l_sockets_max = l_poll_count;
@@ -226,10 +226,14 @@ static void * s_proc_thread_function(void * a_arg)
         if(l_selected_sockets == -1) {
             if( errno == EINTR)
                 continue;
+#if defined DAP_OS_UNIX
             int l_errno = errno;
             char l_errbuf[128];
             strerror_r(l_errno, l_errbuf, sizeof (l_errbuf));
             log_it(L_ERROR, "Proc thread #%d got errno:\"%s\" (%d)", l_thread->cpu_id , l_errbuf, l_errno);
+#elif DAP_OS_WINDOWS
+            log_it(L_ERROR, "Error occured on thread #%d, errno: %d", l_thread->cpu_id , errno);
+#endif
             break;
         }
         for(size_t n = 0; n < l_sockets_max; n++) {
@@ -268,23 +272,29 @@ static void * s_proc_thread_function(void * a_arg)
             time_t l_cur_time = time( NULL);
             l_cur->last_time_active = l_cur_time;
             if (l_flag_error){
+#if defined DAP_OS_UNIX
                 int l_errno = errno;
                 char l_errbuf[128];
                 strerror_r(l_errno, l_errbuf,sizeof (l_errbuf));
                 log_it(L_ERROR,"Some error on proc thread #%u with %d socket: %s(%d)",l_thread->cpu_id, l_cur->socket, l_errbuf, l_errno);
+#elif defined DAP_OS_WINDOWS
+                log_it(L_ERROR,"Some error occured on thread #%u with socket %d, errno: %d",l_thread->cpu_id, l_cur->socket, errno);
+#endif
                 if(l_cur->callbacks.error_callback)
-                    l_cur->callbacks.error_callback(l_cur,errno);
+                    l_cur->callbacks.error_callback(l_cur, errno);
             }
             if (l_flag_read ){
                 switch (l_cur->type) {
                     case DESCRIPTOR_TYPE_QUEUE:
-                            dap_events_socket_queue_proc_input_unsafe(l_cur);
-                    break;
+                        dap_events_socket_queue_proc_input_unsafe(l_cur);
+                        break;
                     case DESCRIPTOR_TYPE_EVENT:
-                            dap_events_socket_event_proc_input_unsafe (l_cur);
-                    break;
+                        dap_events_socket_event_proc_input_unsafe (l_cur);
+                        break;
 
-                    default:{ log_it(L_ERROR, "Unprocessed descriptor type accepted in proc thread loop"); }
+                    default:
+                        log_it(L_ERROR, "Unprocessed descriptor type accepted in proc thread loop");
+                        break;
                 }
             }
             if(l_cur->flags & DAP_SOCK_SIGNAL_CLOSE){
diff --git a/dap-sdk/net/core/dap_timerfd.c b/dap-sdk/net/core/dap_timerfd.c
index a74724f2302022bec5da9ef9de9c5173b78c5aec..b65f82e41e8a85463b9248d6f99234f2a8f3a887 100644
--- a/dap-sdk/net/core/dap_timerfd.c
+++ b/dap-sdk/net/core/dap_timerfd.c
@@ -69,7 +69,10 @@ void __stdcall TimerAPCb(void* arg, DWORD low, DWORD high) {  // Timer high valu
     UNREFERENCED_PARAMETER(low)
     UNREFERENCED_PARAMETER(high)
     dap_timerfd_t *l_timerfd = (dap_timerfd_t *)arg;
-    write(l_timerfd->tfd2, 0, sizeof(void*));
+    byte_t l_bytes[sizeof(void*)] = { 0 };
+    if (write(l_timerfd->pipe_in, l_bytes, sizeof(l_bytes)) == -1) {
+        log_it(L_CRITICAL, "Error occured on writing into pipe from APC, errno: %d", errno);
+    }
 }
 #endif
 
@@ -149,10 +152,10 @@ dap_timerfd_t* dap_timerfd_start_on_worker(dap_worker_t * a_worker, uint64_t a_t
     l_timerfd->repeated         = a_repeated;
 #ifdef DAP_OS_WINDOWS
     l_timerfd->th               = l_th;
-    l_timerfd->tfd2             = l_pipe[1];
-    ioctlsocket(l_pipe[0], FIONBIO, &l_mode);
+    l_timerfd->pipe_in          = l_pipe[1];
+    /*ioctlsocket(l_pipe[0], FIONBIO, &l_mode);
     l_mode = 0;
-    ioctlsocket(l_pipe[1], FIONBIO, &l_mode);
+    ioctlsocket(l_pipe[1], FIONBIO, &l_mode);*/
 #endif
     dap_worker_add_events_socket(l_events_socket, a_worker);
     return l_timerfd;
diff --git a/dap-sdk/net/core/include/dap_timerfd.h b/dap-sdk/net/core/include/dap_timerfd.h
index c8c524b3a2a2ae32278dddac7c28a84a88004bbf..097f8cf68626073317f0e9f11f9f173fc1f14e05 100644
--- a/dap-sdk/net/core/include/dap_timerfd.h
+++ b/dap-sdk/net/core/include/dap_timerfd.h
@@ -49,7 +49,7 @@ typedef struct dap_timerfd {
     bool repeated;
 #ifdef DAP_OS_WINDOWS
     HANDLE th;
-    int tfd2;
+    int pipe_in;
 #endif
 } dap_timerfd_t;