Blame include/ntapi/nt_msq.h

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