summaryrefslogtreecommitdiffhomepage
path: root/src/tty/ntapi_tty_connect.c
blob: 3dd611c19a42595559806c08fd445327b794efaa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
/********************************************************/
/*  ntapi: Native API core library                      */
/*  Copyright (C) 2013--2017  Z. Gilboa                 */
/*  Released under GPLv2 and GPLv3; see COPYING.NTAPI.  */
/********************************************************/

#include <psxtypes/psxtypes.h>
#include <ntapi/nt_object.h>
#include <ntapi/nt_port.h>
#include <ntapi/nt_string.h>
#include <ntapi/ntapi.h>
#include "ntapi_impl.h"

int32_t __stdcall __ntapi_tty_connect(
	__out	void **			hport,
	__in	wchar16_t *		tty_port_name,
	__in	int32_t			impersonation_level)
{
	nt_object_attributes		oa;
	nt_unicode_string		name;
	nt_security_quality_of_service	sqos;

	__ntapi->tt_init_unicode_string_from_utf16(
		&name,tty_port_name);

	sqos.length 			= sizeof(sqos);
	sqos.impersonation_level	= impersonation_level;
	sqos.context_tracking_mode	= NT_SECURITY_TRACKING_DYNAMIC;
	sqos.effective_only		= 1;

	oa.len		= sizeof(oa);
	oa.root_dir	= (void *)0;
	oa.obj_name	= &name;
	oa.obj_attr	= 0;
	oa.sec_desc	= (nt_security_descriptor *)0;
	oa.sec_qos	= &sqos;

	return __ntapi->zw_connect_port(
		hport,
		&name,
		&sqos,
		(nt_port_section_write *)0,
		(nt_port_section_read *)0,
		(uint32_t *)0,
		(void *)0,
		(uint32_t *)0);
}