From 47f21a54cf74e2ec0fc7aa7e3ee06ab5087600a6 Mon Sep 17 00:00:00 2001 From: midipix Date: Fri, 8 Sep 2017 22:22:22 +0000 Subject: integrated msgqueue client side interfaces. --- include/ntapi/nt_msq.h | 97 ++++++++++++++++++++++++++++++++++++++++++++++ include/ntapi/nt_process.h | 10 ++++- include/ntapi/ntapi.h | 12 ++++++ 3 files changed, 118 insertions(+), 1 deletion(-) (limited to 'include/ntapi') diff --git a/include/ntapi/nt_msq.h b/include/ntapi/nt_msq.h index 1aff629..d84b318 100644 --- a/include/ntapi/nt_msq.h +++ b/include/ntapi/nt_msq.h @@ -46,4 +46,101 @@ typedef struct __attr_ptr_size_aligned__ _nt_msq_info { } nt_msq_info; +/* msgqueue client interfaces */ +typedef int32_t __stdcall ntapi_msq_create( + __in void * hport, + __out nt_msq_info * msq, + __in uint32_t access, + __in nt_object_attributes * oa, + __out nt_iosb * iosb, + __in uint32_t share, + __in uint32_t nslots); + + +typedef int32_t __stdcall ntapi_msq_open( + __in void * hport, + __out nt_msq_info * msq, + __in uint32_t access, + __in nt_object_attributes * oa, + __out nt_iosb * iosb, + __in uint32_t share, + __in uint32_t nslots); + + +typedef int32_t __stdcall ntapi_msq_send( + __in nt_msq_info * msq, + __in void * hevent __optional, + __in nt_io_apc_routine * apc_routine __optional, + __in void * apc_context __optional, + __in const void * buffer, + __in size_t len, + __in intptr_t rank, + __in uint32_t options, + __out nt_io_status_block * iosb); + + +typedef int32_t __stdcall ntapi_msq_recv( + __in nt_msq_info * msq, + __in void * hevent __optional, + __in nt_io_apc_routine * apc_routine __optional, + __in void * apc_context __optional, + __out void * buffer, + __in size_t len, + __in intptr_t rank, + __in uint32_t options, + __out nt_io_status_block * iosb); + + +typedef int32_t __stdcall ntapi_msq_fcntl( + __in nt_msq_info * msq, + __in void * hevent __optional, + __in nt_io_apc_routine * apc_routine __optional, + __in void * apc_context __optional, + __out nt_iosb * iosb, + __in uint32_t tty_control_code, + __in void * input_buffer __optional, + __in uint32_t input_buffer_length, + __out void * output_buffer __optional, + __in uint32_t output_buffer_length); + + +typedef int32_t __stdcall ntapi_msq_ioctl( + __in nt_msq_info * msq, + __in void * hevent __optional, + __in nt_io_apc_routine * apc_routine __optional, + __in void * apc_context __optional, + __out nt_iosb * iosb, + __in uint32_t ipc_control_code, + __in void * input_buffer __optional, + __in uint32_t input_buffer_length, + __out void * output_buffer __optional, + __in uint32_t output_buffer_length); + + +typedef int32_t __stdcall ntapi_msq_query( + __in nt_msq_info * msq, + __out nt_io_status_block * iosb, + __out void * sem_info, + __in uint32_t sem_info_length, + __in int32_t sem_ipc_cmd); + + +typedef int32_t __stdcall ntapi_msq_set( + __in nt_msq_info * msq, + __out nt_io_status_block * iosb, + __in void * sem_info, + __in uint32_t sem_info_length, + __in int32_t sem_ipc_cmd); + + +typedef int32_t __stdcall ntapi_msq_cancel( + __in nt_msq_info * msq, + __out nt_iosb * iosb); + + +typedef int32_t __stdcall ntapi_msq_free( + __in nt_msq_info * msq, + __out nt_iosb * iosb); + + #endif diff --git a/include/ntapi/nt_process.h b/include/ntapi/nt_process.h index c284185..1a21e6b 100644 --- a/include/ntapi/nt_process.h +++ b/include/ntapi/nt_process.h @@ -467,7 +467,11 @@ typedef struct _nt_runtime_data { void * hsemctldir; void * hsemkeydir; void * hsempiddir; - void * hreserved; + void * hmsqctl; + void * hmsqpid; + void * hmsqctldir; + void * hmsqkeydir; + void * hmsqpiddir; nt_guid abi; nt_cid cid_self; nt_cid cid_parent; @@ -515,6 +519,10 @@ typedef struct _nt_runtime_data { int32_t semctl_type; int32_t semctl_subtype; uint32_t semctl_keys[6]; + nt_guid msqctl_guid; + int32_t msqctl_type; + int32_t msqctl_subtype; + uint32_t msqctl_keys[6]; int32_t stdin_type; int32_t stdout_type; int32_t stderr_type; diff --git a/include/ntapi/ntapi.h b/include/ntapi/ntapi.h index 71416d8..8d2b26a 100644 --- a/include/ntapi/ntapi.h +++ b/include/ntapi/ntapi.h @@ -413,6 +413,18 @@ typedef struct _ntapi_vtbl { ntapi_sem_cancel * sem_cancel; ntapi_sem_free * sem_free; + /* nt_msq.h */ + ntapi_msq_create * msq_create; + ntapi_msq_open * msq_open; + ntapi_msq_send * msq_send; + ntapi_msq_recv * msq_recv; + ntapi_msq_fcntl * msq_fcntl; + ntapi_msq_ioctl * msq_ioctl; + ntapi_msq_query * msq_query; + ntapi_msq_set * msq_set; + ntapi_msq_cancel * msq_cancel; + ntapi_msq_free * msq_free; + /* nt_ldr.h */ ntapi_ldr_load_system_dll * ldr_load_system_dll; ntapi_ldr_create_state_snapshot * ldr_create_state_snapshot; -- cgit v1.2.3