|
|
a6563a |
#ifndef _NT_MSQ_H_
|
|
|
a6563a |
#define _NT_MSQ_H_
|
|
|
a6563a |
|
|
|
a6563a |
#include "nt_abi.h"
|
|
|
a6563a |
#include "nt_object.h"
|
|
|
a6563a |
|
|
|
a6563a |
/* semaphore command flags */
|
|
|
a6563a |
#define NT_MSQ_FLAG_NOWAIT (0x0800)
|
|
|
a6563a |
#define NT_MSQ_FLAG_NOERROR (0x1000)
|
|
|
a6563a |
|
|
|
a6563a |
|
|
|
a6563a |
/* msgqueue info */
|
|
|
a6563a |
typedef struct __attr_ptr_size_aligned__ _nt_msq_info {
|
|
|
a6563a |
void * hport;
|
|
|
a6563a |
void * section;
|
|
|
a6563a |
void * section_addr;
|
|
|
a6563a |
size_t section_size;
|
|
|
a6563a |
void * hevent;
|
|
|
a6563a |
void * apc_routine;
|
|
|
a6563a |
void * apc_context;
|
|
|
a6563a |
int32_t msqkey;
|
|
|
a6563a |
int32_t msqid;
|
|
|
a6563a |
int32_t msqspid;
|
|
|
a6563a |
int32_t msqrpid;
|
|
|
a6563a |
intptr_t msqrank;
|
|
|
a6563a |
uintptr_t msqslots;
|
|
|
a6563a |
uintptr_t msqcbytes;
|
|
|
a6563a |
uintptr_t msqqbytes;
|
|
|
a6563a |
uint32_t msqscnt;
|
|
|
a6563a |
uint32_t msqrcnt;
|
|
|
a6563a |
nt_filetime msqstime;
|
|
|
a6563a |
nt_filetime msqrtime;
|
|
|
a6563a |
nt_filetime msqctime;
|
|
|
1710c4 |
uint64_t ipcuid;
|
|
|
1710c4 |
uint64_t ipcgid;
|
|
|
1710c4 |
uint64_t ipccuid;
|
|
|
1710c4 |
uint64_t ipccgid;
|
|
|
a6563a |
uint32_t ipcmode;
|
|
|
a6563a |
int32_t ipcseq;
|
|
|
a6563a |
uint32_t ntaccess;
|
|
|
a6563a |
uint32_t ntattr;
|
|
|
a6563a |
uint32_t ntshare;
|
|
|
a6563a |
uint32_t ntoptions;
|
|
|
a6563a |
nt_iosb ntiosb;
|
|
|
a6563a |
nt_iosb * riosb;
|
|
|
a6563a |
} nt_msq_info;
|
|
|
a6563a |
|
|
|
a6563a |
|
|
|
47f21a |
/* msgqueue client interfaces */
|
|
|
47f21a |
typedef int32_t __stdcall ntapi_msq_create(
|
|
|
47f21a |
__in void * hport,
|
|
|
47f21a |
__out nt_msq_info * msq,
|
|
|
47f21a |
__in uint32_t access,
|
|
|
47f21a |
__in nt_object_attributes * oa,
|
|
|
47f21a |
__out nt_iosb * iosb,
|
|
|
47f21a |
__in uint32_t share,
|
|
|
47f21a |
__in uint32_t nslots);
|
|
|
47f21a |
|
|
|
47f21a |
|
|
|
47f21a |
typedef int32_t __stdcall ntapi_msq_open(
|
|
|
47f21a |
__in void * hport,
|
|
|
47f21a |
__out nt_msq_info * msq,
|
|
|
47f21a |
__in uint32_t access,
|
|
|
47f21a |
__in nt_object_attributes * oa,
|
|
|
47f21a |
__out nt_iosb * iosb,
|
|
|
47f21a |
__in uint32_t share,
|
|
|
47f21a |
__in uint32_t nslots);
|
|
|
47f21a |
|
|
|
47f21a |
|
|
|
47f21a |
typedef int32_t __stdcall ntapi_msq_send(
|
|
|
47f21a |
__in nt_msq_info * msq,
|
|
|
47f21a |
__in void * hevent __optional,
|
|
|
47f21a |
__in nt_io_apc_routine * apc_routine __optional,
|
|
|
47f21a |
__in void * apc_context __optional,
|
|
|
47f21a |
__in const void * buffer,
|
|
|
47f21a |
__in size_t len,
|
|
|
47f21a |
__in intptr_t rank,
|
|
|
47f21a |
__in uint32_t options,
|
|
|
47f21a |
__out nt_io_status_block * iosb);
|
|
|
47f21a |
|
|
|
47f21a |
|
|
|
47f21a |
typedef int32_t __stdcall ntapi_msq_recv(
|
|
|
47f21a |
__in nt_msq_info * msq,
|
|
|
47f21a |
__in void * hevent __optional,
|
|
|
47f21a |
__in nt_io_apc_routine * apc_routine __optional,
|
|
|
47f21a |
__in void * apc_context __optional,
|
|
|
47f21a |
__out void * buffer,
|
|
|
47f21a |
__in size_t len,
|
|
|
47f21a |
__in intptr_t rank,
|
|
|
47f21a |
__in uint32_t options,
|
|
|
47f21a |
__out nt_io_status_block * iosb);
|
|
|
47f21a |
|
|
|
47f21a |
|
|
|
47f21a |
typedef int32_t __stdcall ntapi_msq_fcntl(
|
|
|
47f21a |
__in nt_msq_info * msq,
|
|
|
47f21a |
__in void * hevent __optional,
|
|
|
47f21a |
__in nt_io_apc_routine * apc_routine __optional,
|
|
|
47f21a |
__in void * apc_context __optional,
|
|
|
47f21a |
__out nt_iosb * iosb,
|
|
|
47f21a |
__in uint32_t tty_control_code,
|
|
|
47f21a |
__in void * input_buffer __optional,
|
|
|
47f21a |
__in uint32_t input_buffer_length,
|
|
|
47f21a |
__out void * output_buffer __optional,
|
|
|
47f21a |
__in uint32_t output_buffer_length);
|
|
|
47f21a |
|
|
|
47f21a |
|
|
|
47f21a |
typedef int32_t __stdcall ntapi_msq_ioctl(
|
|
|
47f21a |
__in nt_msq_info * msq,
|
|
|
47f21a |
__in void * hevent __optional,
|
|
|
47f21a |
__in nt_io_apc_routine * apc_routine __optional,
|
|
|
47f21a |
__in void * apc_context __optional,
|
|
|
47f21a |
__out nt_iosb * iosb,
|
|
|
47f21a |
__in uint32_t ipc_control_code,
|
|
|
47f21a |
__in void * input_buffer __optional,
|
|
|
47f21a |
__in uint32_t input_buffer_length,
|
|
|
47f21a |
__out void * output_buffer __optional,
|
|
|
47f21a |
__in uint32_t output_buffer_length);
|
|
|
47f21a |
|
|
|
47f21a |
|
|
|
47f21a |
typedef int32_t __stdcall ntapi_msq_query(
|
|
|
47f21a |
__in nt_msq_info * msq,
|
|
|
47f21a |
__out nt_io_status_block * iosb,
|
|
|
47f21a |
__out void * sem_info,
|
|
|
47f21a |
__in uint32_t sem_info_length,
|
|
|
47f21a |
__in int32_t sem_ipc_cmd);
|
|
|
47f21a |
|
|
|
47f21a |
|
|
|
47f21a |
typedef int32_t __stdcall ntapi_msq_set(
|
|
|
47f21a |
__in nt_msq_info * msq,
|
|
|
47f21a |
__out nt_io_status_block * iosb,
|
|
|
47f21a |
__in void * sem_info,
|
|
|
47f21a |
__in uint32_t sem_info_length,
|
|
|
47f21a |
__in int32_t sem_ipc_cmd);
|
|
|
47f21a |
|
|
|
47f21a |
|
|
|
47f21a |
typedef int32_t __stdcall ntapi_msq_cancel(
|
|
|
47f21a |
__in nt_msq_info * msq,
|
|
|
47f21a |
__out nt_iosb * iosb);
|
|
|
47f21a |
|
|
|
47f21a |
|
|
|
47f21a |
typedef int32_t __stdcall ntapi_msq_free(
|
|
|
47f21a |
__in nt_msq_info * msq,
|
|
|
47f21a |
__out nt_iosb * iosb);
|
|
|
47f21a |
|
|
|
47f21a |
|
|
|
a6563a |
#endif
|