summaryrefslogtreecommitdiffhomepage
path: root/include
diff options
context:
space:
mode:
authormidipix <writeonce@midipix.org>2017-08-04 22:22:22 +0000
committermidipix <writeonce@midipix.org>2017-08-04 17:33:16 -0400
commitedb08567093daae164f6d3955884117dee74fe98 (patch)
treea0cbce284eccf262c4a2c65289b373658af59189 /include
parent335494754eba35020cb2d4fd8c976fdb3a6e3507 (diff)
downloadntapi-edb08567093daae164f6d3955884117dee74fe98.tar.bz2
ntapi-edb08567093daae164f6d3955884117dee74fe98.tar.xz
subsystem interfaces: added server-to-server synchronization interfaces.
Diffstat (limited to 'include')
-rw-r--r--include/ntapi/nt_ipc.h13
-rw-r--r--include/ntapi/nt_process.h6
-rw-r--r--include/ntapi/nt_tty.h73
-rw-r--r--include/ntapi/ntapi.h2
4 files changed, 94 insertions, 0 deletions
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;