Classes | Enumerations | Functions | Variables
win/pipe.c File Reference
#include <assert.h>
#include <io.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "handle-inl.h"
#include "internal.h"
#include "req-inl.h"
#include "stream-inl.h"
#include "uv-common.h"
#include "uv.h"
#include <aclapi.h>
#include <accctrl.h>
Include dependency graph for win/pipe.c:

Go to the source code of this file.

Classes

struct  uv__coalesced_write_t
 
struct  uv__ipc_frame_header_t
 
struct  uv__ipc_xfer_queue_item_t
 

Enumerations

enum  {
  UV__IPC_FRAME_HAS_DATA = 0x01, UV__IPC_FRAME_HAS_SOCKET_XFER = 0x02, UV__IPC_FRAME_XFER_IS_TCP_CONNECTION = 0x04, UV__IPC_FRAME_XFER_FLAGS = 0x06,
  UV__IPC_FRAME_VALID_FLAGS = 0x07
}
 

Functions

static void close_pipe (uv_pipe_t *pipe)
 
static void eof_timer_cb (uv_timer_t *timer)
 
static void eof_timer_close_cb (uv_handle_t *handle)
 
static void eof_timer_destroy (uv_pipe_t *pipe)
 
static void eof_timer_init (uv_pipe_t *pipe)
 
static void eof_timer_start (uv_pipe_t *pipe)
 
static void eof_timer_stop (uv_pipe_t *pipe)
 
static HANDLE open_named_pipe (const WCHAR *name, DWORD *duplex_flags)
 
static int pipe_alloc_accept (uv_loop_t *loop, uv_pipe_t *handle, uv_pipe_accept_t *req, BOOL firstInstance)
 
static DWORD WINAPI pipe_connect_thread_proc (void *parameter)
 
static DWORD WINAPI pipe_shutdown_thread_proc (void *parameter)
 
static void CALLBACK post_completion_read_wait (void *context, BOOLEAN timed_out)
 
static void CALLBACK post_completion_write_wait (void *context, BOOLEAN timed_out)
 
 STATIC_ASSERT (sizeof(uv__ipc_frame_header_t)==16)
 
 STATIC_ASSERT (sizeof(uv__ipc_socket_xfer_info_t)==632)
 
static int uv__build_coalesced_write_req (uv_write_t *user_req, const uv_buf_t bufs[], size_t nbufs, uv_write_t **req_out, uv_buf_t *write_buf_out)
 
static DWORD uv__pipe_get_ipc_remote_pid (uv_pipe_t *handle)
 
static int uv__pipe_getname (const uv_pipe_t *handle, char *buffer, size_t *size)
 
void uv__pipe_interrupt_read (uv_pipe_t *handle)
 
static void uv__pipe_queue_ipc_xfer_info (uv_pipe_t *handle, uv__ipc_socket_xfer_type_t xfer_type, uv__ipc_socket_xfer_info_t *xfer_info)
 
static DWORD uv__pipe_read_data (uv_loop_t *loop, uv_pipe_t *handle, DWORD suggested_bytes, DWORD max_bytes)
 
static int uv__pipe_read_exactly (HANDLE h, void *buffer, DWORD count)
 
static DWORD uv__pipe_read_ipc (uv_loop_t *loop, uv_pipe_t *handle)
 
void uv__pipe_read_stop (uv_pipe_t *handle)
 
int uv__pipe_write (uv_loop_t *loop, uv_write_t *req, uv_pipe_t *handle, const uv_buf_t bufs[], size_t nbufs, uv_stream_t *send_handle, uv_write_cb cb)
 
static int uv__pipe_write_data (uv_loop_t *loop, uv_write_t *req, uv_pipe_t *handle, const uv_buf_t bufs[], size_t nbufs, uv_write_cb cb, int copy_always)
 
int uv__pipe_write_ipc (uv_loop_t *loop, uv_write_t *req, uv_pipe_t *handle, const uv_buf_t data_bufs[], size_t data_buf_count, uv_stream_t *send_handle, uv_write_cb cb)
 
static void uv_insert_non_overlapped_write_req (uv_pipe_t *handle, uv_write_t *req)
 
int uv_pipe_accept (uv_pipe_t *server, uv_stream_t *client)
 
int uv_pipe_bind (uv_pipe_t *handle, const char *name)
 
int uv_pipe_chmod (uv_pipe_t *handle, int mode)
 
void uv_pipe_cleanup (uv_loop_t *loop, uv_pipe_t *handle)
 
void uv_pipe_close (uv_loop_t *loop, uv_pipe_t *handle)
 
void uv_pipe_connect (uv_connect_t *req, uv_pipe_t *handle, const char *name, uv_connect_cb cb)
 
static void uv_pipe_connection_init (uv_pipe_t *handle)
 
void uv_pipe_endgame (uv_loop_t *loop, uv_pipe_t *handle)
 
int uv_pipe_getpeername (const uv_pipe_t *handle, char *buffer, size_t *size)
 
int uv_pipe_getsockname (const uv_pipe_t *handle, char *buffer, size_t *size)
 
int uv_pipe_init (uv_loop_t *loop, uv_pipe_t *handle, int ipc)
 
int uv_pipe_listen (uv_pipe_t *handle, int backlog, uv_connection_cb cb)
 
int uv_pipe_open (uv_pipe_t *pipe, uv_file file)
 
int uv_pipe_pending_count (uv_pipe_t *handle)
 
void uv_pipe_pending_instances (uv_pipe_t *handle, int count)
 
uv_handle_type uv_pipe_pending_type (uv_pipe_t *handle)
 
static void uv_pipe_queue_accept (uv_loop_t *loop, uv_pipe_t *handle, uv_pipe_accept_t *req, BOOL firstInstance)
 
static void uv_pipe_queue_read (uv_loop_t *loop, uv_pipe_t *handle)
 
static void uv_pipe_read_eof (uv_loop_t *loop, uv_pipe_t *handle, uv_buf_t buf)
 
static void uv_pipe_read_error (uv_loop_t *loop, uv_pipe_t *handle, int error, uv_buf_t buf)
 
static void uv_pipe_read_error_or_eof (uv_loop_t *loop, uv_pipe_t *handle, int error, uv_buf_t buf)
 
int uv_pipe_read_start (uv_pipe_t *handle, uv_alloc_cb alloc_cb, uv_read_cb read_cb)
 
static DWORD WINAPI uv_pipe_writefile_thread_proc (void *parameter)
 
static DWORD WINAPI uv_pipe_zero_readfile_thread_proc (void *arg)
 
void uv_process_pipe_accept_req (uv_loop_t *loop, uv_pipe_t *handle, uv_req_t *raw_req)
 
void uv_process_pipe_connect_req (uv_loop_t *loop, uv_pipe_t *handle, uv_connect_t *req)
 
void uv_process_pipe_read_req (uv_loop_t *loop, uv_pipe_t *handle, uv_req_t *req)
 
void uv_process_pipe_shutdown_req (uv_loop_t *loop, uv_pipe_t *handle, uv_shutdown_t *req)
 
void uv_process_pipe_write_req (uv_loop_t *loop, uv_pipe_t *handle, uv_write_t *req)
 
static void uv_queue_non_overlapped_write (uv_pipe_t *handle)
 
static uv_write_tuv_remove_non_overlapped_write_req (uv_pipe_t *handle)
 
static int uv_set_pipe_handle (uv_loop_t *loop, uv_pipe_t *handle, HANDLE pipeHandle, int fd, DWORD duplex_flags)
 
int uv_stdio_pipe_server (uv_loop_t *loop, uv_pipe_t *handle, DWORD access, char *name, size_t nameSize)
 
static void uv_unique_pipe_name (char *ptr, char *name, size_t size)
 

Variables

static const int default_pending_pipe_instances = 4
 
static const int64_t eof_timeout = 50
 
static char pipe_prefix [] = "\\\\?\\pipe"
 
static const int pipe_prefix_len = sizeof(pipe_prefix) - 1
 
static const uv_buf_t uv_null_buf_ = { 0, NULL }
 
static char uv_zero_ [] = ""
 

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
UV__IPC_FRAME_HAS_DATA 
UV__IPC_FRAME_HAS_SOCKET_XFER 
UV__IPC_FRAME_XFER_IS_TCP_CONNECTION 
UV__IPC_FRAME_XFER_FLAGS 
UV__IPC_FRAME_VALID_FLAGS 

Definition at line 63 of file win/pipe.c.

Function Documentation

◆ close_pipe()

static void close_pipe ( uv_pipe_t pipe)
static

Definition at line 193 of file win/pipe.c.

◆ eof_timer_cb()

static void eof_timer_cb ( uv_timer_t timer)
static

Definition at line 2033 of file win/pipe.c.

◆ eof_timer_close_cb()

static void eof_timer_close_cb ( uv_handle_t handle)
static

Definition at line 2077 of file win/pipe.c.

◆ eof_timer_destroy()

static void eof_timer_destroy ( uv_pipe_t pipe)
static

Definition at line 2067 of file win/pipe.c.

◆ eof_timer_init()

static void eof_timer_init ( uv_pipe_t pipe)
static

Definition at line 2000 of file win/pipe.c.

◆ eof_timer_start()

static void eof_timer_start ( uv_pipe_t pipe)
static

Definition at line 2015 of file win/pipe.c.

◆ eof_timer_stop()

static void eof_timer_stop ( uv_pipe_t pipe)
static

Definition at line 2024 of file win/pipe.c.

◆ open_named_pipe()

static HANDLE open_named_pipe ( const WCHAR *  name,
DWORD *  duplex_flags 
)
static

Definition at line 135 of file win/pipe.c.

◆ pipe_alloc_accept()

static int pipe_alloc_accept ( uv_loop_t loop,
uv_pipe_t handle,
uv_pipe_accept_t *  req,
BOOL  firstInstance 
)
static

Definition at line 330 of file win/pipe.c.

◆ pipe_connect_thread_proc()

static DWORD WINAPI pipe_connect_thread_proc ( void *  parameter)
static

Definition at line 605 of file win/pipe.c.

◆ pipe_shutdown_thread_proc()

static DWORD WINAPI pipe_shutdown_thread_proc ( void *  parameter)
static

Definition at line 362 of file win/pipe.c.

◆ post_completion_read_wait()

static void CALLBACK post_completion_read_wait ( void *  context,
BOOLEAN  timed_out 
)
static

Definition at line 1076 of file win/pipe.c.

◆ post_completion_write_wait()

static void CALLBACK post_completion_write_wait ( void *  context,
BOOLEAN  timed_out 
)
static

Definition at line 1095 of file win/pipe.c.

◆ STATIC_ASSERT() [1/2]

STATIC_ASSERT ( sizeof(uv__ipc_frame_header_t = =16)

◆ STATIC_ASSERT() [2/2]

STATIC_ASSERT ( sizeof(uv__ipc_socket_xfer_info_t = =632)

◆ uv__build_coalesced_write_req()

static int uv__build_coalesced_write_req ( uv_write_t user_req,
const uv_buf_t  bufs[],
size_t  nbufs,
uv_write_t **  req_out,
uv_buf_t write_buf_out 
)
static

Definition at line 1254 of file win/pipe.c.

◆ uv__pipe_get_ipc_remote_pid()

static DWORD uv__pipe_get_ipc_remote_pid ( uv_pipe_t handle)
static

Definition at line 1465 of file win/pipe.c.

◆ uv__pipe_getname()

static int uv__pipe_getname ( const uv_pipe_t handle,
char *  buffer,
size_t *  size 
)
static

Definition at line 2156 of file win/pipe.c.

◆ uv__pipe_interrupt_read()

void uv__pipe_interrupt_read ( uv_pipe_t handle)

Definition at line 730 of file win/pipe.c.

◆ uv__pipe_queue_ipc_xfer_info()

static void uv__pipe_queue_ipc_xfer_info ( uv_pipe_t handle,
uv__ipc_socket_xfer_type_t  xfer_type,
uv__ipc_socket_xfer_info_t xfer_info 
)
static

Definition at line 1633 of file win/pipe.c.

◆ uv__pipe_read_data()

static DWORD uv__pipe_read_data ( uv_loop_t loop,
uv_pipe_t handle,
DWORD  suggested_bytes,
DWORD  max_bytes 
)
static

Definition at line 1675 of file win/pipe.c.

◆ uv__pipe_read_exactly()

static int uv__pipe_read_exactly ( HANDLE  h,
void *  buffer,
DWORD  count 
)
static

Definition at line 1654 of file win/pipe.c.

◆ uv__pipe_read_ipc()

static DWORD uv__pipe_read_ipc ( uv_loop_t loop,
uv_pipe_t handle 
)
static

Definition at line 1710 of file win/pipe.c.

◆ uv__pipe_read_stop()

void uv__pipe_read_stop ( uv_pipe_t handle)

Definition at line 777 of file win/pipe.c.

◆ uv__pipe_write()

int uv__pipe_write ( uv_loop_t loop,
uv_write_t req,
uv_pipe_t handle,
const uv_buf_t  bufs[],
size_t  nbufs,
uv_stream_t send_handle,
uv_write_cb  cb 
)

Definition at line 1580 of file win/pipe.c.

◆ uv__pipe_write_data()

static int uv__pipe_write_data ( uv_loop_t loop,
uv_write_t req,
uv_pipe_t handle,
const uv_buf_t  bufs[],
size_t  nbufs,
uv_write_cb  cb,
int  copy_always 
)
static

Definition at line 1314 of file win/pipe.c.

◆ uv__pipe_write_ipc()

int uv__pipe_write_ipc ( uv_loop_t loop,
uv_write_t req,
uv_pipe_t handle,
const uv_buf_t  data_bufs[],
size_t  data_buf_count,
uv_stream_t send_handle,
uv_write_cb  cb 
)

Definition at line 1478 of file win/pipe.c.

◆ uv_insert_non_overlapped_write_req()

static void uv_insert_non_overlapped_write_req ( uv_pipe_t handle,
uv_write_t req 
)
static

Definition at line 1206 of file win/pipe.c.

◆ uv_pipe_accept()

int uv_pipe_accept ( uv_pipe_t server,
uv_stream_t client 
)

Definition at line 878 of file win/pipe.c.

◆ uv_pipe_bind()

int uv_pipe_bind ( uv_pipe_t handle,
const char *  name 
)

Definition at line 524 of file win/pipe.c.

◆ uv_pipe_chmod()

int uv_pipe_chmod ( uv_pipe_t handle,
int  mode 
)

Definition at line 2320 of file win/pipe.c.

◆ uv_pipe_cleanup()

void uv_pipe_cleanup ( uv_loop_t loop,
uv_pipe_t handle 
)

Definition at line 787 of file win/pipe.c.

◆ uv_pipe_close()

void uv_pipe_close ( uv_loop_t loop,
uv_pipe_t handle 
)

Definition at line 820 of file win/pipe.c.

◆ uv_pipe_connect()

void uv_pipe_connect ( uv_connect_t req,
uv_pipe_t handle,
const char *  name,
uv_connect_cb  cb 
)

Definition at line 645 of file win/pipe.c.

◆ uv_pipe_connection_init()

static void uv_pipe_connection_init ( uv_pipe_t handle)
static

Definition at line 123 of file win/pipe.c.

◆ uv_pipe_endgame()

void uv_pipe_endgame ( uv_loop_t loop,
uv_pipe_t handle 
)

Definition at line 383 of file win/pipe.c.

◆ uv_pipe_getpeername()

int uv_pipe_getpeername ( const uv_pipe_t handle,
char *  buffer,
size_t *  size 
)

Definition at line 2299 of file win/pipe.c.

◆ uv_pipe_getsockname()

int uv_pipe_getsockname ( const uv_pipe_t handle,
char *  buffer,
size_t *  size 
)

Definition at line 2285 of file win/pipe.c.

◆ uv_pipe_init()

int uv_pipe_init ( uv_loop_t loop,
uv_pipe_t handle,
int  ipc 
)

Definition at line 106 of file win/pipe.c.

◆ uv_pipe_listen()

int uv_pipe_listen ( uv_pipe_t handle,
int  backlog,
uv_connection_cb  cb 
)

Definition at line 937 of file win/pipe.c.

◆ uv_pipe_open()

int uv_pipe_open ( uv_pipe_t pipe,
uv_file  file 
)

Definition at line 2083 of file win/pipe.c.

◆ uv_pipe_pending_count()

int uv_pipe_pending_count ( uv_pipe_t handle)

Definition at line 2278 of file win/pipe.c.

◆ uv_pipe_pending_instances()

void uv_pipe_pending_instances ( uv_pipe_t handle,
int  count 
)

Definition at line 515 of file win/pipe.c.

◆ uv_pipe_pending_type()

uv_handle_type uv_pipe_pending_type ( uv_pipe_t handle)

Definition at line 2311 of file win/pipe.c.

◆ uv_pipe_queue_accept()

static void uv_pipe_queue_accept ( uv_loop_t loop,
uv_pipe_t handle,
uv_pipe_accept_t *  req,
BOOL  firstInstance 
)
static

Definition at line 842 of file win/pipe.c.

◆ uv_pipe_queue_read()

static void uv_pipe_queue_read ( uv_loop_t loop,
uv_pipe_t handle 
)
static

Definition at line 1114 of file win/pipe.c.

◆ uv_pipe_read_eof()

static void uv_pipe_read_eof ( uv_loop_t loop,
uv_pipe_t handle,
uv_buf_t  buf 
)
static

Definition at line 1598 of file win/pipe.c.

◆ uv_pipe_read_error()

static void uv_pipe_read_error ( uv_loop_t loop,
uv_pipe_t handle,
int  error,
uv_buf_t  buf 
)
static

Definition at line 1611 of file win/pipe.c.

◆ uv_pipe_read_error_or_eof()

static void uv_pipe_read_error_or_eof ( uv_loop_t loop,
uv_pipe_t handle,
int  error,
uv_buf_t  buf 
)
static

Definition at line 1623 of file win/pipe.c.

◆ uv_pipe_read_start()

int uv_pipe_read_start ( uv_pipe_t handle,
uv_alloc_cb  alloc_cb,
uv_read_cb  read_cb 
)

Definition at line 1179 of file win/pipe.c.

◆ uv_pipe_writefile_thread_proc()

static DWORD WINAPI uv_pipe_writefile_thread_proc ( void *  parameter)
static

Definition at line 1049 of file win/pipe.c.

◆ uv_pipe_zero_readfile_thread_proc()

static DWORD WINAPI uv_pipe_zero_readfile_thread_proc ( void *  arg)
static

Definition at line 976 of file win/pipe.c.

◆ uv_process_pipe_accept_req()

void uv_process_pipe_accept_req ( uv_loop_t loop,
uv_pipe_t handle,
uv_req_t raw_req 
)

Definition at line 1912 of file win/pipe.c.

◆ uv_process_pipe_connect_req()

void uv_process_pipe_connect_req ( uv_loop_t loop,
uv_pipe_t handle,
uv_connect_t req 
)

Definition at line 1947 of file win/pipe.c.

◆ uv_process_pipe_read_req()

void uv_process_pipe_read_req ( uv_loop_t loop,
uv_pipe_t handle,
uv_req_t req 
)

Definition at line 1791 of file win/pipe.c.

◆ uv_process_pipe_shutdown_req()

void uv_process_pipe_shutdown_req ( uv_loop_t loop,
uv_pipe_t handle,
uv_shutdown_t req 
)

Definition at line 1969 of file win/pipe.c.

◆ uv_process_pipe_write_req()

void uv_process_pipe_write_req ( uv_loop_t loop,
uv_pipe_t handle,
uv_write_t req 
)

Definition at line 1858 of file win/pipe.c.

◆ uv_queue_non_overlapped_write()

static void uv_queue_non_overlapped_write ( uv_pipe_t handle)
static

Definition at line 1242 of file win/pipe.c.

◆ uv_remove_non_overlapped_write_req()

static uv_write_t* uv_remove_non_overlapped_write_req ( uv_pipe_t handle)
static

Definition at line 1221 of file win/pipe.c.

◆ uv_set_pipe_handle()

static int uv_set_pipe_handle ( uv_loop_t loop,
uv_pipe_t handle,
HANDLE  pipeHandle,
int  fd,
DWORD  duplex_flags 
)
static

Definition at line 255 of file win/pipe.c.

◆ uv_stdio_pipe_server()

int uv_stdio_pipe_server ( uv_loop_t loop,
uv_pipe_t handle,
DWORD  access,
char *  name,
size_t  nameSize 
)

Definition at line 205 of file win/pipe.c.

◆ uv_unique_pipe_name()

static void uv_unique_pipe_name ( char *  ptr,
char *  name,
size_t  size 
)
static

Definition at line 101 of file win/pipe.c.

Variable Documentation

◆ default_pending_pipe_instances

const int default_pending_pipe_instances = 4
static

Definition at line 48 of file win/pipe.c.

◆ eof_timeout

const int64_t eof_timeout = 50
static

Definition at line 46 of file win/pipe.c.

◆ pipe_prefix

char pipe_prefix[] = "\\\\?\\pipe"
static

Definition at line 51 of file win/pipe.c.

◆ pipe_prefix_len

const int pipe_prefix_len = sizeof(pipe_prefix) - 1
static

Definition at line 52 of file win/pipe.c.

◆ uv_null_buf_

const uv_buf_t uv_null_buf_ = { 0, NULL }
static

Definition at line 42 of file win/pipe.c.

◆ uv_zero_

char uv_zero_[] = ""
static

Definition at line 39 of file win/pipe.c.



grpc
Author(s):
autogenerated on Fri May 16 2025 03:01:26