From edb08567093daae164f6d3955884117dee74fe98 Mon Sep 17 00:00:00 2001 From: midipix Date: Fri, 4 Aug 2017 22:22:22 +0000 Subject: subsystem interfaces: added server-to-server synchronization interfaces. --- include/ntapi/nt_ipc.h | 13 +++++++++ include/ntapi/nt_process.h | 6 ++++ include/ntapi/nt_tty.h | 73 ++++++++++++++++++++++++++++++++++++++++++++++ include/ntapi/ntapi.h | 2 ++ 4 files changed, 94 insertions(+) (limited to 'include') diff --git a/include/ntapi/nt_ipc.h b/include/ntapi/nt_ipc.h index 7238146..80760c1 100644 --- a/include/ntapi/nt_ipc.h +++ b/include/ntapi/nt_ipc.h @@ -85,6 +85,19 @@ typedef int32_t __stdcall ntapi_ipc_connect_section_by_port( __out size_t * section_size); +typedef int32_t __stdcall ntapi_ipc_get_port_by_attr( + __out void ** hport, + __in nt_port_attr * attr); + + +typedef int32_t __stdcall ntapi_ipc_get_port_section_by_attr( + __out void ** hport, + __in nt_port_attr * attr, + __out void ** hsection, + __out void ** section_addr, + __out size_t * section_size); + + typedef int32_t __stdcall ntapi_ipc_init_section_by_port( __in void * hconn, __out void ** hsection, diff --git a/include/ntapi/nt_process.h b/include/ntapi/nt_process.h index 96bc727..c284185 100644 --- a/include/ntapi/nt_process.h +++ b/include/ntapi/nt_process.h @@ -60,6 +60,8 @@ typedef enum _nt_process_opcode_idx { NT_PROCESS_OPCODE_IDX_EXECVE, NT_PROCESS_OPCODE_IDX_STOPPED, NT_PROCESS_OPCODE_IDX_CONTINUED, + NT_PROCESS_OPCODE_IDX_CLIENT, + NT_PROCESS_OPCODE_IDX_SERVER, } nt_process_opcode_idx; @@ -505,6 +507,10 @@ typedef struct _nt_runtime_data { int32_t ppid_type; int32_t ppid_subtype; uint32_t ppid_keys[6]; + nt_guid ipc_guid; + int32_t ipc_type; + int32_t ipc_subtype; + uint32_t ipc_keys[6]; nt_guid semctl_guid; int32_t semctl_type; int32_t semctl_subtype; diff --git a/include/ntapi/nt_tty.h b/include/ntapi/nt_tty.h index 387c8b6..5555d85 100644 --- a/include/ntapi/nt_tty.h +++ b/include/ntapi/nt_tty.h @@ -50,6 +50,9 @@ typedef enum _nt_tty_opcode { NT_TTY_CLIENT_SESSION_DISCONNECT, NT_TTY_CLIENT_SESSION_QUERY, NT_TTY_CLIENT_SESSION_SET, + /* server-to-server coordination */ + NT_TTY_CLIENT_SESSION_SYNCHRONIZE, + NT_TTY_CLIENT_SESSION_TRANSFER, /* process registration */ NT_TTY_CLIENT_PROCESS_REGISTER, NT_TTY_CLIENT_PROCESS_UNREGISTER, @@ -87,6 +90,8 @@ typedef enum _nt_tty_opcode { NT_TTY_SEM_IOCTL, NT_TTY_SEM_CANCEL, NT_TTY_SEM_TRACE, + NT_TTY_SEM_TRANSFER, + NT_TTY_SEM_WAIT, /* virtual mount system */ NT_TTY_VMS_QUERY, NT_TTY_VMS_REQUEST, @@ -271,6 +276,40 @@ typedef struct __attr_ptr_size_aligned__ _nt_tty_session_info { int32_t syspid; } nt_tty_session_info; + +typedef struct __attr_ptr_size_aligned__ _nt_tty_ipc_info { + nt_port_attr ctrlsvc; + uint32_t ipckeys[6]; + void * hevent; + void * apc_routine; + void * apc_context; + nt_iosb * riosb; +} nt_tty_ipc_info; + + +typedef struct __attr_ptr_size_aligned__ _nt_tty_sync_info { + nt_client_id cid; + nt_port_attr ipcsvc; + uint32_t ipckeys[6]; + void * hevent; + void * apc_routine; + void * apc_context; + nt_iosb * riosb; +} nt_tty_sync_info; + + + +typedef struct __attr_ptr_size_aligned__ _nt_tty_transfer_info { + nt_client_id ccid; + nt_client_id tcid; + uint32_t ipckeys[6]; + void * hevent; + void * apc_routine; + void * apc_context; + nt_iosb * riosb; +} nt_tty_transfer_info; + + typedef struct __attr_ptr_size_aligned__ _nt_tty_register_msg { nt_port_message header; struct { @@ -334,6 +373,33 @@ typedef struct __attr_ptr_size_aligned__ _nt_tty_pid_msg { } nt_tty_pid_msg; +typedef struct __attr_ptr_size_aligned__ _nt_tty_ipc_msg { + nt_port_message header; + struct { + nt_tty_msg_info ttyinfo; + nt_tty_ipc_info ipcinfo; + } data; +} nt_tty_ipc_msg; + + +typedef struct __attr_ptr_size_aligned__ _nt_tty_sync_msg { + nt_port_message header; + struct { + nt_tty_msg_info ttyinfo; + nt_tty_sync_info syncinfo; + } data; +} nt_tty_sync_msg; + + +typedef struct __attr_ptr_size_aligned__ _nt_tty_transfer_msg { + nt_port_message header; + struct { + nt_tty_msg_info ttyinfo; + nt_tty_transfer_info transferinfo; + } data; +} nt_tty_transfer_msg; + + typedef struct __attr_ptr_size_aligned__ _nt_pty_fd_msg { nt_port_message header; struct { @@ -387,6 +453,10 @@ typedef struct __attr_ptr_size_aligned__ _nt_tty_port_msg { nt_tty_vms_info vmsinfo; nt_tty_peer_info peerinfo; nt_tty_sigctl_info ctlinfo; + nt_tty_ipc_info ipcinfo; + nt_tty_sync_info syncinfo; + nt_user_process_info pidinfo; + nt_tty_transfer_info transferinfo; nt_pty_fd_info fdinfo; nt_pty_io_info ioinfo; nt_pty_client_info clientinfo; @@ -412,6 +482,9 @@ __assert_aligned_size(nt_pty_sigctl_msg, __SIZEOF_POINTER__); __assert_aligned_size(nt_pty_fd_msg, __SIZEOF_POINTER__); __assert_aligned_size(nt_pty_io_msg, __SIZEOF_POINTER__); __assert_aligned_size(nt_tty_port_msg, __SIZEOF_POINTER__); +__assert_aligned_size(nt_tty_ipc_msg, __SIZEOF_POINTER__); +__assert_aligned_size(nt_tty_sync_msg, __SIZEOF_POINTER__); +__assert_aligned_size(nt_tty_transfer_msg, __SIZEOF_POINTER__); /* tty session */ diff --git a/include/ntapi/ntapi.h b/include/ntapi/ntapi.h index 23a99aa..71416d8 100644 --- a/include/ntapi/ntapi.h +++ b/include/ntapi/ntapi.h @@ -397,6 +397,8 @@ typedef struct _ntapi_vtbl { ntapi_ipc_connect_section_by_name * ipc_connect_section_by_name; ntapi_ipc_connect_section_by_symlink * ipc_connect_section_by_symlink; ntapi_ipc_connect_section_by_port * ipc_connect_section_by_port; + ntapi_ipc_get_port_by_attr * ipc_get_port_by_attr; + ntapi_ipc_get_port_section_by_attr * ipc_get_port_section_by_attr; ntapi_ipc_init_section_by_port * ipc_init_section_by_port; ntapi_ipc_disconnect_unmap_section_by_port * ipc_disconnect_unmap_section_by_port; ntapi_ipc_create_pipe * ipc_create_pipe; -- cgit v1.2.3