summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authormidipix <writeonce@midipix.org>2018-05-04 20:26:39 +0000
committermidipix <writeonce@midipix.org>2018-05-07 08:33:39 -0400
commitdbeebdf22fad8254aa615b071c878b7a086246ed (patch)
tree284598a1e7033e7f9f229b1438d42dc6355be5aa
parentb92a12fc14551f51f02a68fdf6c0265a758f1c15 (diff)
downloadntapi-dbeebdf22fad8254aa615b071c878b7a086246ed.tar.bz2
ntapi-dbeebdf22fad8254aa615b071c878b7a086246ed.tar.xz
struct _nt_runtime_data: integrated advisory file locking support.
-rw-r--r--include/ntapi/nt_process.h39
-rw-r--r--src/process/ntapi_tt_fork.c3
2 files changed, 42 insertions, 0 deletions
diff --git a/include/ntapi/nt_process.h b/include/ntapi/nt_process.h
index 7a649ad..97341ab 100644
--- a/include/ntapi/nt_process.h
+++ b/include/ntapi/nt_process.h
@@ -534,28 +534,41 @@ typedef struct _nt_runtime_data {
/**************************/
void * hpidanydir;
void * hbnorootdir;
+
void * hsemctl;
void * hsempid;
void * hsemctldir;
void * hsemkeydir;
void * hsempiddir;
+
void * hmsqctl;
void * hmsqpid;
void * hmsqctldir;
void * hmsqkeydir;
void * hmsqpiddir;
+
+ void * haflctl;
+ void * haflpid;
+ void * haflctldir;
+ void * hafldevdir;
+ void * haflpiddir;
+
void * hshmctlroot;
void * hshmctldir;
void * hshmkeyroot;
void * hshmkeydir;
+
void * htmpfslroot;
void * htmpfsldir;
+
nt_cid cid_self;
nt_cid cid_parent;
nt_alt_cid alt_cid_self;
nt_alt_cid alt_cid_parent;
+
uint32_t flags;
uint32_t reserved;
+
void * hstdin;
void * hstdout;
void * hstderr;
@@ -568,44 +581,60 @@ typedef struct _nt_runtime_data {
void * hsync;
void * hswap;
void * hserver;
+
nt_guid port_guid;
int32_t port_type;
int32_t port_subtype;
uint32_t port_keys[6];
+
nt_guid srv_guid;
int32_t srv_type;
int32_t srv_subtype;
uint32_t srv_keys[6];
+
nt_guid tty_guid;
int32_t tty_type;
int32_t tty_subtype;
uint32_t tty_keys[6];
+
nt_guid grp_guid;
int32_t grp_type;
int32_t grp_subtype;
uint32_t grp_keys[6];
+
nt_guid ppid_guid;
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;
uint32_t semctl_keys[6];
+
nt_guid msqctl_guid;
int32_t msqctl_type;
int32_t msqctl_subtype;
uint32_t msqctl_keys[6];
+
+ nt_guid aflctl_guid;
+ int32_t aflctl_type;
+ int32_t aflctl_subtype;
+ uint32_t aflctl_keys[6];
+
int32_t stdin_type;
int32_t stdout_type;
int32_t stderr_type;
int32_t session_type;
+
uint32_t dbg_type;
uint32_t log_type;
+
void * ctx_hsection;
void * ctx_addr;
size_t ctx_size;
@@ -616,36 +645,46 @@ typedef struct _nt_runtime_data {
size_t ctx_buffer_size;
uint32_t ctx_options;
uint32_t ctx_flags;
+
uint32_t meta_hash;
uint32_t block_hash;
+
size_t stack_reserve;
size_t stack_commit;
size_t heap_reserve;
size_t heap_commit;
+
int32_t envc;
int32_t argc;
char ** argv;
char ** envp;
+
wchar16_t ** wargv;
wchar16_t ** wenvp;
+
int32_t peb_envc;
int32_t peb_argc;
+
wchar16_t ** peb_wargv;
wchar16_t ** peb_wenvp;
+
uintptr_t ptyin [4];
uintptr_t ptyout[4];
uintptr_t ptyerr[4];
uintptr_t ptyctl[4];
+
uint32_t sa_queue [2];
uint32_t sa_block [2];
void * sa_handler[64];
uintptr_t sa_flags [64];
uint32_t sa_mask [64][2];
+
int32_t opcode[NT_RUNTIME_DATA_SYNC_OPCODES];
void * uptr [NT_RUNTIME_DATA_USER_PTRS];
void * uclose[NT_RUNTIME_DATA_USER_PTRS];
int32_t udat32[NT_RUNTIME_DATA_USER_INT32_SLOTS];
int64_t udat64[NT_RUNTIME_DATA_USER_INT64_SLOTS];
+
uintptr_t buffer[];
} nt_runtime_data, nt_rtdata;
diff --git a/src/process/ntapi_tt_fork.c b/src/process/ntapi_tt_fork.c
index 7b1202d..c89fb89 100644
--- a/src/process/ntapi_tt_fork.c
+++ b/src/process/ntapi_tt_fork.c
@@ -61,6 +61,9 @@ static intptr_t __fastcall __ntapi_tt_fork_finalize(void ** hprocess)
rtdata->hmsqctl = 0;
rtdata->hmsqpid = 0;
+ rtdata->haflctl = 0;
+ rtdata->haflpid = 0;
+
rtdata->ipc_keys[0] = 0;
rtdata->ipc_keys[1] = 0;
rtdata->ipc_keys[2] = 0;