From dbeebdf22fad8254aa615b071c878b7a086246ed Mon Sep 17 00:00:00 2001 From: midipix Date: May 07 2018 12:33:39 +0000 Subject: struct _nt_runtime_data: integrated advisory file locking support. --- 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;