|
|
dd89bb |
#ifndef _NT_OBJECT_H_
|
|
|
dd89bb |
#define _NT_OBJECT_H_
|
|
|
dd89bb |
|
|
|
414ad3 |
#include "nt_abi.h"
|
|
|
dd89bb |
|
|
|
dd89bb |
typedef enum _nt_object_info_class {
|
|
|
dd89bb |
NT_OBJECT_BASIC_INFORMATION = 0,
|
|
|
dd89bb |
NT_OBJECT_NAME_INFORMATION = 1,
|
|
|
dd89bb |
NT_OBJECT_TYPE_INFORMATION = 2,
|
|
|
dd89bb |
NT_OBJECT_ALL_TYPES_INFORMATION = 3,
|
|
|
dd89bb |
NT_OBJECT_HANDLE_INFORMATION = 4
|
|
|
dd89bb |
} nt_object_info_class;
|
|
|
dd89bb |
|
|
|
dd89bb |
|
|
|
dd89bb |
typedef enum _nt_security_impersonation_level {
|
|
|
dd89bb |
NT_SECURITY_ANONYMOUS = 0,
|
|
|
dd89bb |
NT_SECURITY_IDENTIFICATION = 1,
|
|
|
dd89bb |
NT_SECURITY_IMPERSONATION = 2,
|
|
|
dd89bb |
NT_SECURITY_DELEGATION = 3
|
|
|
dd89bb |
} nt_security_impersonation_level;
|
|
|
dd89bb |
|
|
|
dd89bb |
|
|
|
dd89bb |
typedef enum _nt_security_information {
|
|
|
dd89bb |
NT_OWNER_SECURITY_INFORMATION = 0x01,
|
|
|
dd89bb |
NT_GROUP_SECURITY_INFORMATION = 0x02,
|
|
|
dd89bb |
NT_DACL_SECURITY_INFORMATION = 0x04,
|
|
|
dd89bb |
NT_SACL_SECURITY_INFORMATION = 0x08
|
|
|
dd89bb |
} nt_security_information;
|
|
|
dd89bb |
|
|
|
dd89bb |
|
|
|
dd89bb |
|
|
|
dd89bb |
/* generic access rights */
|
|
|
dd89bb |
#define NT_SEC_DELETE (0x00010000u)
|
|
|
dd89bb |
#define NT_SEC_READ_CONTROL (0x00020000u)
|
|
|
dd89bb |
#define NT_SEC_WRITE_DAC (0x00040000u)
|
|
|
dd89bb |
#define NT_SEC_WRITE_OWNER (0x00080000u)
|
|
|
dd89bb |
#define NT_SEC_SYNCHRONIZE (0x00100000u)
|
|
|
dd89bb |
#define NT_SEC_STANDARD_RIGHTS_REQUIRED (0x000F0000u)
|
|
|
dd89bb |
#define NT_SEC_STANDARD_RIGHTS_READ NT_SEC_READ_CONTROL
|
|
|
dd89bb |
#define NT_SEC_STANDARD_RIGHTS_WRITE NT_SEC_READ_CONTROL
|
|
|
dd89bb |
#define NT_SEC_STANDARD_RIGHTS_EXECUTE NT_SEC_READ_CONTROL
|
|
|
dd89bb |
#define NT_SEC_STANDARD_RIGHTS_ALL (0x001F0000u)
|
|
|
dd89bb |
#define NT_SEC_SPECIFIC_RIGHTS_ALL (0x0000FFFFu)
|
|
|
dd89bb |
|
|
|
dd89bb |
#define NT_GENERIC_ALL (0x10000000u)
|
|
|
dd89bb |
#define NT_GENERIC_EXECUTE (0x20000000u)
|
|
|
dd89bb |
#define NT_GENERIC_WRITE (0x40000000u)
|
|
|
dd89bb |
#define NT_GENERIC_READ (0x80000000u)
|
|
|
dd89bb |
|
|
|
dd89bb |
|
|
|
dd89bb |
/* zw_open_directory access rights */
|
|
|
dd89bb |
#define NT_DIRECTORY_QUERY (0x0001u)
|
|
|
dd89bb |
#define NT_DIRECTORY_TRAVERSE (0x0002u)
|
|
|
dd89bb |
#define NT_DIRECTORY_CREATE_OBJECT (0x0004u)
|
|
|
dd89bb |
#define NT_DIRECTORY_CREATE_SUBDIRECTORY (0x0008u)
|
|
|
dd89bb |
#define NT_DIRECTORY_ALL_ACCESS NT_DIRECTORY_QUERY \
|
|
|
dd89bb |
| NT_DIRECTORY_TRAVERSE \
|
|
|
dd89bb |
| NT_DIRECTORY_CREATE_OBJECT \
|
|
|
dd89bb |
| NT_DIRECTORY_CREATE_SUBDIRECTORY \
|
|
|
dd89bb |
| NT_SEC_STANDARD_RIGHTS_REQUIRED
|
|
|
dd89bb |
|
|
|
dd89bb |
/* zw_open_symbolic_link_object access rights */
|
|
|
dd89bb |
#define NT_SYMBOLIC_LINK_QUERY (0x0001u)
|
|
|
dd89bb |
#define NT_SYMBOLIC_LINK_ALL_ACCESS NT_SYMBOLIC_LINK_QUERY \
|
|
|
dd89bb |
| NT_SEC_STANDARD_RIGHTS_REQUIRED
|
|
|
dd89bb |
|
|
|
dd89bb |
/* object handles */
|
|
|
dd89bb |
#define NT_HANDLE_FLAG_INHERIT (0x0001u)
|
|
|
dd89bb |
#define NT_HANDLE_FLAG_PROTECT_FROM_CLOSE (0x0002u)
|
|
|
dd89bb |
#define NT_HANDLE_PERMANENT (0x0010u)
|
|
|
dd89bb |
#define NT_HANDLE_EXCLUSIVE (0x0020u)
|
|
|
dd89bb |
#define NT_INVALID_HANDLE_VALUE ((void *)(intptr_t)-1)
|
|
|
dd89bb |
|
|
|
dd89bb |
/* object attribute bits */
|
|
|
dd89bb |
#define NT_OBJ_INHERIT (0x0002u)
|
|
|
dd89bb |
#define NT_OBJ_PERMANENT (0x0010u)
|
|
|
dd89bb |
#define NT_OBJ_EXCLUSIVE (0x0020u)
|
|
|
dd89bb |
#define NT_OBJ_CASE_INSENSITIVE (0x0040u)
|
|
|
dd89bb |
#define NT_OBJ_OPENIF (0x0080u)
|
|
|
dd89bb |
#define NT_OBJ_OPENLINK (0x0100u)
|
|
|
dd89bb |
#define NT_OBJ_KERNEL_HANDLE (0x0200u)
|
|
|
dd89bb |
|
|
|
dd89bb |
/* duplicate object bits */
|
|
|
dd89bb |
#define NT_DUPLICATE_CLOSE_SOURCE (0x0001u)
|
|
|
dd89bb |
#define NT_DUPLICATE_SAME_ACCESS (0x0002u)
|
|
|
dd89bb |
#define NT_DUPLICATE_SAME_ATTRIBUTES (0x0004u)
|
|
|
dd89bb |
|
|
|
dd89bb |
/* nt_security_descriptor constants (IFS open specification) */
|
|
|
dd89bb |
#define NT_SE_OWNER_DEFAULTED (int16_t)0x0001
|
|
|
dd89bb |
#define NT_SE_GROUP_DEFAULTED (int16_t)0x0002
|
|
|
dd89bb |
#define NT_SE_DACL_PRESENT (int16_t)0x0004
|
|
|
dd89bb |
#define NT_SE_DACL_DEFAULTED (int16_t)0x0008
|
|
|
dd89bb |
#define NT_SE_SACL_PRESENT (int16_t)0x0010
|
|
|
dd89bb |
#define NT_SE_SACL_DEFAULTED (int16_t)0x0020
|
|
|
dd89bb |
#define NT_SE_DACL_AUTO_INHERIT_REQ (int16_t)0x0100
|
|
|
dd89bb |
#define NT_SE_SACL_AUTO_INHERIT_REQ (int16_t)0x0200
|
|
|
dd89bb |
#define NT_SE_DACL_AUTO_INHERITED (int16_t)0x0400
|
|
|
dd89bb |
#define NT_SE_SACL_AUTO_INHERITED (int16_t)0x0800
|
|
|
dd89bb |
#define NT_SE_DACL_PROTECTED (int16_t)0x1000
|
|
|
dd89bb |
#define NT_SE_SACL_PROTECTED (int16_t)0x2000
|
|
|
dd89bb |
#define NT_SE_RM_CONTROL_VALID (int16_t)0x4000
|
|
|
dd89bb |
#define NT_SE_SELF_RELATIVE (int16_t)0x8000
|
|
|
dd89bb |
|
|
|
dd89bb |
/* security tracking */
|
|
|
dd89bb |
#define NT_SECURITY_TRACKING_STATIC 0
|
|
|
dd89bb |
#define NT_SECURITY_TRACKING_DYNAMIC 1
|
|
|
dd89bb |
|
|
|
dd89bb |
/* predefined security authorities */
|
|
|
dd89bb |
#define NT_SECURITY_NULL_SID_AUTHORITY 0
|
|
|
dd89bb |
#define NT_SECURITY_WORLD_SID_AUTHORITY 1
|
|
|
dd89bb |
#define NT_SECURITY_LOCAL_SID_AUTHORITY 2
|
|
|
dd89bb |
#define NT_SECURITY_CREATOR_SID_AUTHORITY 3
|
|
|
dd89bb |
#define NT_SECURITY_NON_UNIQUE_AUTHORITY 4
|
|
|
dd89bb |
#define NT_SECURITY_NT_AUTHORITY 5
|
|
|
dd89bb |
|
|
|
dd89bb |
/* token source length */
|
|
|
dd89bb |
#define NT_TOKEN_SOURCE_LENGTH 8
|
|
|
dd89bb |
|
|
|
dd89bb |
|
|
|
dd89bb |
typedef struct _nt_unicode_string {
|
|
|
dd89bb |
uint16_t strlen;
|
|
|
dd89bb |
uint16_t maxlen;
|
|
|
dd89bb |
uint16_t * buffer;
|
|
|
dd89bb |
} nt_unicode_string;
|
|
|
dd89bb |
|
|
|
dd89bb |
|
|
|
dd89bb |
typedef union _nt_large_integer {
|
|
|
dd89bb |
struct {
|
|
|
dd89bb |
uint32_t ulow;
|
|
|
dd89bb |
int32_t ihigh;
|
|
|
dd89bb |
};
|
|
|
dd89bb |
long long quad;
|
|
|
dd89bb |
} nt_large_integer, nt_timeout, nt_filetime, nt_sec_size;
|
|
|
dd89bb |
|
|
|
dd89bb |
|
|
|
dd89bb |
typedef struct _nt_io_status_block {
|
|
|
dd89bb |
union {
|
|
|
dd89bb |
int32_t status;
|
|
|
dd89bb |
void * pointer;
|
|
|
dd89bb |
};
|
|
|
dd89bb |
intptr_t info;
|
|
|
dd89bb |
} nt_io_status_block, nt_iosb;
|
|
|
dd89bb |
|
|
|
dd89bb |
|
|
|
dd89bb |
typedef struct _nt_quota_limits {
|
|
|
dd89bb |
size_t paged_pool_limit;
|
|
|
dd89bb |
size_t non_paged_pool_limit;
|
|
|
dd89bb |
size_t minimum_working_set_size;
|
|
|
dd89bb |
size_t maximum_working_set_size;
|
|
|
dd89bb |
size_t pagefile_limit;
|
|
|
dd89bb |
nt_large_integer time_limit;
|
|
|
dd89bb |
} nt_quota_limits, nt_ql;
|
|
|
dd89bb |
|
|
|
dd89bb |
|
|
|
dd89bb |
typedef struct _nt_kernel_user_times {
|
|
|
dd89bb |
nt_large_integer create_time;
|
|
|
dd89bb |
nt_large_integer exit_time;
|
|
|
dd89bb |
nt_large_integer kernel_time;
|
|
|
dd89bb |
nt_large_integer user_time;
|
|
|
dd89bb |
} nt_kernel_user_times, nt_kut;
|
|
|
dd89bb |
|
|
|
dd89bb |
|
|
|
dd89bb |
typedef struct _nt_io_counters {
|
|
|
dd89bb |
nt_large_integer read_operation_count;
|
|
|
dd89bb |
nt_large_integer write_operation_count;
|
|
|
dd89bb |
nt_large_integer other_operation_count;
|
|
|
dd89bb |
nt_large_integer read_transfer_count;
|
|
|
dd89bb |
nt_large_integer write_transfer_count;
|
|
|
dd89bb |
nt_large_integer other_transfer_count;
|
|
|
dd89bb |
} nt_io_counters;
|
|
|
dd89bb |
|
|
|
dd89bb |
|
|
|
dd89bb |
typedef struct _nt_vm_counters {
|
|
|
dd89bb |
size_t peak_virtual_size;
|
|
|
dd89bb |
size_t virtual_size;
|
|
|
dd89bb |
size_t page_fault_count;
|
|
|
dd89bb |
size_t peak_working_set_size;
|
|
|
dd89bb |
size_t working_set_size;
|
|
|
dd89bb |
size_t quota_peak_paged_pool_usage;
|
|
|
dd89bb |
size_t quota_paged_pool_usage;
|
|
|
dd89bb |
size_t quota_peak_non_paged_pool_usage;
|
|
|
dd89bb |
size_t quota_non_paged_pool_usage;
|
|
|
dd89bb |
size_t pagefile_usage;
|
|
|
dd89bb |
size_t peak_pagefile_usage;
|
|
|
dd89bb |
} nt_vm_counters;
|
|
|
dd89bb |
|
|
|
dd89bb |
|
|
|
dd89bb |
typedef struct _nt_pooled_usage_and_limits {
|
|
|
dd89bb |
size_t peak_paged_pool_usage;
|
|
|
dd89bb |
size_t paged_pool_usage;
|
|
|
dd89bb |
size_t paged_pool_limit;
|
|
|
dd89bb |
size_t peak_non_paged_pool_usage;
|
|
|
dd89bb |
size_t non_paged_pool_usage;
|
|
|
dd89bb |
size_t non_paged_pool_limit;
|
|
|
dd89bb |
size_t peak_pagefile_usage;
|
|
|
dd89bb |
size_t pagefile_usage;
|
|
|
dd89bb |
size_t pagefile_limit;
|
|
|
dd89bb |
} nt_pooled_usage_and_limits, nt_pual;
|
|
|
dd89bb |
|
|
|
dd89bb |
|
|
|
dd89bb |
typedef struct _nt_client_id {
|
|
|
dd89bb |
uintptr_t process_id;
|
|
|
dd89bb |
uintptr_t thread_id;
|
|
|
dd89bb |
} nt_client_id, nt_cid;
|
|
|
dd89bb |
|
|
|
dd89bb |
|
|
|
dd89bb |
typedef struct _nt_generic_mapping {
|
|
|
dd89bb |
uint32_t generic_read;
|
|
|
dd89bb |
uint32_t generic_write;
|
|
|
dd89bb |
uint32_t generic_execute;
|
|
|
dd89bb |
uint32_t generic_all;
|
|
|
dd89bb |
} nt_generic_mapping, nt_gmap;
|
|
|
dd89bb |
|
|
|
dd89bb |
|
|
|
dd89bb |
typedef struct _nt_security_attributes {
|
|
|
dd89bb |
uint32_t length;
|
|
|
dd89bb |
void * security_descriptor;
|
|
|
dd89bb |
int32_t inherit_handle;
|
|
|
dd89bb |
} nt_security_attributes, nt_sa;
|
|
|
dd89bb |
|
|
|
dd89bb |
|
|
|
dd89bb |
typedef struct _nt_guid {
|
|
|
dd89bb |
uint32_t data1;
|
|
|
dd89bb |
uint16_t data2;
|
|
|
dd89bb |
uint16_t data3;
|
|
|
dd89bb |
unsigned char data4[8];
|
|
|
dd89bb |
} nt_guid, nt_uuid;
|
|
|
dd89bb |
|
|
|
dd89bb |
|
|
|
dd89bb |
typedef struct _nt_uuid_vector {
|
|
|
dd89bb |
uint32_t count;
|
|
|
dd89bb |
nt_uuid * uuid[];
|
|
|
dd89bb |
} nt_uuid_vector;
|
|
|
dd89bb |
|
|
|
dd89bb |
|
|
|
dd89bb |
typedef struct _nt_acl {
|
|
|
dd89bb |
unsigned char acl_revision;
|
|
|
dd89bb |
unsigned char sbz_1st;
|
|
|
dd89bb |
uint16_t acl_size;
|
|
|
dd89bb |
uint16_t ace_count;
|
|
|
dd89bb |
uint16_t sbz_2nd;
|
|
|
dd89bb |
} nt_acl;
|
|
|
dd89bb |
|
|
|
dd89bb |
|
|
|
dd89bb |
typedef struct _nt_security_descriptor {
|
|
|
dd89bb |
unsigned char revision;
|
|
|
dd89bb |
unsigned char sbz_1st;
|
|
|
dd89bb |
uint16_t control;
|
|
|
dd89bb |
uint32_t offset_owner;
|
|
|
dd89bb |
uint32_t offset_group;
|
|
|
dd89bb |
uint32_t offset_sacl;
|
|
|
dd89bb |
uint32_t offset_dacl;
|
|
|
dd89bb |
} nt_security_descriptor, nt_sd;
|
|
|
dd89bb |
|
|
|
dd89bb |
|
|
|
dd89bb |
typedef struct _nt_security_quality_of_service {
|
|
|
dd89bb |
uint32_t length;
|
|
|
dd89bb |
int32_t impersonation_level;
|
|
|
dd89bb |
int32_t context_tracking_mode;
|
|
|
dd89bb |
int32_t effective_only;
|
|
|
dd89bb |
} nt_security_quality_of_service, nt_sqos;
|
|
|
dd89bb |
|
|
|
dd89bb |
|
|
|
dd89bb |
typedef struct _nt_sid_identifier_authority {
|
|
|
dd89bb |
unsigned char value[6];
|
|
|
dd89bb |
} nt_sid_identifier_authority;
|
|
|
dd89bb |
|
|
|
dd89bb |
|
|
|
dd89bb |
typedef struct _nt_sid {
|
|
|
dd89bb |
unsigned char revision;
|
|
|
dd89bb |
unsigned char sub_authority_count;
|
|
|
dd89bb |
nt_sid_identifier_authority identifier_authority;
|
|
|
dd89bb |
uint32_t sub_authority[1];
|
|
|
dd89bb |
} nt_sid;
|
|
|
dd89bb |
|
|
|
dd89bb |
|
|
|
dd89bb |
typedef struct _nt_sid_and_attributes {
|
|
|
dd89bb |
nt_sid * sid;
|
|
|
dd89bb |
uint32_t attributes;
|
|
|
dd89bb |
} nt_sid_and_attributes;
|
|
|
dd89bb |
|
|
|
dd89bb |
|
|
|
dd89bb |
typedef struct _nt_token_user {
|
|
|
dd89bb |
nt_sid_and_attributes user;
|
|
|
dd89bb |
} nt_token_user;
|
|
|
dd89bb |
|
|
|
dd89bb |
|
|
|
dd89bb |
typedef struct _nt_token_owner {
|
|
|
dd89bb |
nt_sid * owner;
|
|
|
dd89bb |
} nt_token_owner;
|
|
|
dd89bb |
|
|
|
dd89bb |
|
|
|
dd89bb |
typedef struct _nt_token_primary_group {
|
|
|
dd89bb |
nt_sid * primary_group;
|
|
|
dd89bb |
} nt_token_primary_group;
|
|
|
dd89bb |
|
|
|
dd89bb |
|
|
|
dd89bb |
typedef struct _nt_token_groups {
|
|
|
dd89bb |
uint32_t group_count;
|
|
|
dd89bb |
nt_sid_and_attributes groups[];
|
|
|
dd89bb |
} nt_token_groups;
|
|
|
dd89bb |
|
|
|
dd89bb |
|
|
|
dd89bb |
typedef struct _nt_token_default_dacl {
|
|
|
dd89bb |
nt_acl * default_dacl;
|
|
|
dd89bb |
} nt_token_default_dacl;
|
|
|
dd89bb |
|
|
|
dd89bb |
|
|
|
dd89bb |
typedef struct _nt_luid {
|
|
|
dd89bb |
uint32_t low;
|
|
|
dd89bb |
int32_t high;
|
|
|
dd89bb |
} nt_luid;
|
|
|
dd89bb |
|
|
|
dd89bb |
|
|
|
dd89bb |
typedef struct _nt_token_origin {
|
|
|
dd89bb |
nt_luid originating_logon_session;
|
|
|
dd89bb |
} nt_token_origin;
|
|
|
dd89bb |
|
|
|
dd89bb |
|
|
|
dd89bb |
typedef struct _nt_token_source {
|
|
|
dd89bb |
char source_name[NT_TOKEN_SOURCE_LENGTH];
|
|
|
dd89bb |
nt_luid source_identifier;
|
|
|
dd89bb |
} nt_token_source;
|
|
|
dd89bb |
|
|
|
dd89bb |
|
|
|
dd89bb |
typedef struct _nt_luid_and_attributes {
|
|
|
dd89bb |
nt_luid luid;
|
|
|
dd89bb |
uint32_t attributes;
|
|
|
dd89bb |
} nt_luid_and_attributes;
|
|
|
dd89bb |
|
|
|
dd89bb |
|
|
|
dd89bb |
typedef struct _nt_token_privileges {
|
|
|
dd89bb |
uint32_t privilege_count;
|
|
|
dd89bb |
nt_luid_and_attributes privileges[];
|
|
|
dd89bb |
} nt_token_privileges;
|
|
|
dd89bb |
|
|
|
dd89bb |
|
|
|
dd89bb |
typedef struct _nt_object_attributes {
|
|
|
dd89bb |
uint32_t len;
|
|
|
dd89bb |
void * root_dir;
|
|
|
dd89bb |
nt_unicode_string * obj_name;
|
|
|
dd89bb |
uint32_t obj_attr;
|
|
|
dd89bb |
nt_security_descriptor *sec_desc;
|
|
|
dd89bb |
nt_sqos * sec_qos;
|
|
|
dd89bb |
} nt_object_attributes, nt_oa;
|
|
|
dd89bb |
|
|
|
dd89bb |
|
|
|
dd89bb |
typedef struct _nt_object_basic_information {
|
|
|
dd89bb |
uint32_t attributes;
|
|
|
dd89bb |
uint32_t granted_access;
|
|
|
dd89bb |
uint32_t handle_count;
|
|
|
dd89bb |
uint32_t pointer_count;
|
|
|
dd89bb |
uint32_t paged_pool_usage;
|
|
|
dd89bb |
uint32_t non_paged_pool_usage;
|
|
|
dd89bb |
uint32_t reserved[3];
|
|
|
dd89bb |
uint32_t name_information_length;
|
|
|
dd89bb |
uint32_t type_information_length;
|
|
|
dd89bb |
uint32_t security_descriptor_length;
|
|
|
dd89bb |
nt_large_integer create_time;
|
|
|
dd89bb |
} nt_object_basic_information;
|
|
|
dd89bb |
|
|
|
dd89bb |
|
|
|
dd89bb |
typedef struct _nt_object_name_information {
|
|
|
dd89bb |
nt_unicode_string name;
|
|
|
dd89bb |
} nt_object_name_information;
|
|
|
dd89bb |
|
|
|
dd89bb |
|
|
|
dd89bb |
|
|
|
dd89bb |
typedef struct _nt_object_handle_information {
|
|
|
dd89bb |
unsigned char inherit;
|
|
|
dd89bb |
unsigned char protect_from_close;
|
|
|
dd89bb |
} nt_object_handle_information, nt_ohio;
|
|
|
dd89bb |
|
|
|
dd89bb |
|
|
|
dd89bb |
typedef struct _nt_directory_basic_information {
|
|
|
dd89bb |
nt_unicode_string object_name;
|
|
|
dd89bb |
nt_unicode_string object_type_name;
|
|
|
dd89bb |
} nt_directory_basic_information;
|
|
|
dd89bb |
|
|
|
dd89bb |
|
|
|
dd89bb |
typedef struct _nt_keyed_object_directory_guid {
|
|
|
dd89bb |
wchar16_t uscore_guid;
|
|
|
dd89bb |
wchar16_t pgrp_guid[36];
|
|
|
dd89bb |
wchar16_t uscore_key;
|
|
|
dd89bb |
} nt_keyed_object_directory_guid, nt_keyed_objdir_guid;
|
|
|
dd89bb |
|
|
|
dd89bb |
typedef struct _nt_keyed_object_directory_name {
|
|
|
dd89bb |
wchar16_t base_named_objects[17];
|
|
|
dd89bb |
wchar16_t backslash;
|
|
|
dd89bb |
wchar16_t prefix[6];
|
|
|
dd89bb |
nt_keyed_objdir_guid objdir_guid;
|
|
|
dd89bb |
wchar16_t key[8];
|
|
|
dd89bb |
} nt_keyed_object_directory_name, nt_keyed_objdir_name;
|
|
|
dd89bb |
|
|
|
dd89bb |
|
|
|
500a04 |
typedef void __stdcall nt_io_apc_routine(
|
|
|
dd89bb |
void * apc_context,
|
|
|
dd89bb |
nt_io_status_block * io_status_block,
|
|
|
dd89bb |
uint32_t reserved);
|
|
|
dd89bb |
|
|
|
dd89bb |
|
|
|
dd89bb |
typedef int32_t __stdcall ntapi_zw_query_object(
|
|
|
dd89bb |
__in void * handle,
|
|
|
dd89bb |
__in nt_object_info_class obj_info_class,
|
|
|
dd89bb |
__out void * obj_info,
|
|
|
dd89bb |
__in size_t obj_info_length,
|
|
|
dd89bb |
__out uint32_t * returned_length __optional);
|
|
|
dd89bb |
|
|
|
dd89bb |
|
|
|
dd89bb |
typedef int32_t __stdcall ntapi_zw_set_information_object(
|
|
|
dd89bb |
__in void * handle,
|
|
|
dd89bb |
__in nt_object_info_class obj_info_class,
|
|
|
dd89bb |
__in void * obj_info,
|
|
|
dd89bb |
__in size_t obj_info_length);
|
|
|
dd89bb |
|
|
|
dd89bb |
|
|
|
dd89bb |
typedef int32_t __stdcall ntapi_zw_duplicate_object(
|
|
|
dd89bb |
__in void * hprocess_src,
|
|
|
dd89bb |
__in void * handle_src,
|
|
|
dd89bb |
__in void * hprocess_dst,
|
|
|
dd89bb |
__out void ** handle_dst __optional,
|
|
|
dd89bb |
__in uint32_t desired_access,
|
|
|
dd89bb |
__in uint32_t attributes,
|
|
|
dd89bb |
__in uint32_t options);
|
|
|
dd89bb |
|
|
|
dd89bb |
|
|
|
dd89bb |
typedef int32_t __stdcall ntapi_zw_make_temporary_object(
|
|
|
dd89bb |
__in void * handle);
|
|
|
dd89bb |
|
|
|
dd89bb |
|
|
|
dd89bb |
typedef int32_t __stdcall ntapi_zw_close(
|
|
|
dd89bb |
__in void * handle);
|
|
|
dd89bb |
|
|
|
dd89bb |
|
|
|
dd89bb |
|
|
|
dd89bb |
typedef int32_t __stdcall ntapi_zw_query_security_object(
|
|
|
dd89bb |
__in void * handle,
|
|
|
dd89bb |
__in nt_security_information security_info,
|
|
|
dd89bb |
__out nt_security_descriptor * security_descriptor,
|
|
|
dd89bb |
__in size_t security_descriptor_length,
|
|
|
dd89bb |
__out size_t * returned_length);
|
|
|
dd89bb |
|
|
|
dd89bb |
|
|
|
dd89bb |
typedef int32_t __stdcall ntapi_zw_set_security_object(
|
|
|
dd89bb |
__in void * handle,
|
|
|
dd89bb |
__in nt_security_information security_info,
|
|
|
dd89bb |
__out nt_security_descriptor * security_descriptor);
|
|
|
dd89bb |
|
|
|
dd89bb |
|
|
|
dd89bb |
|
|
|
dd89bb |
typedef int32_t __stdcall ntapi_zw_create_directory_object(
|
|
|
dd89bb |
__out void ** directory_handle,
|
|
|
dd89bb |
__in uint32_t desired_access,
|
|
|
dd89bb |
__in nt_object_attributes * obj_attr);
|
|
|
dd89bb |
|
|
|
dd89bb |
|
|
|
dd89bb |
typedef int32_t __stdcall ntapi_zw_open_directory_object(
|
|
|
dd89bb |
__out void ** directory_handle,
|
|
|
dd89bb |
__in uint32_t desired_access,
|
|
|
dd89bb |
__in nt_object_attributes * obj_attr);
|
|
|
dd89bb |
|
|
|
dd89bb |
|
|
|
dd89bb |
typedef int32_t __stdcall ntapi_zw_query_directory_object(
|
|
|
dd89bb |
__in void * directory_handle,
|
|
|
dd89bb |
__out void * buffer,
|
|
|
dd89bb |
__in size_t buffer_length,
|
|
|
dd89bb |
__in int32_t return_single_entry,
|
|
|
dd89bb |
__in int32_t return_scan,
|
|
|
dd89bb |
__in_out uint32_t * context,
|
|
|
dd89bb |
__out size_t * returned_length);
|
|
|
dd89bb |
|
|
|
dd89bb |
|
|
|
dd89bb |
typedef int32_t __stdcall ntapi_zw_create_symbolic_link_object(
|
|
|
dd89bb |
__out void ** symbolic_link_handle,
|
|
|
dd89bb |
__in uint32_t desired_access,
|
|
|
dd89bb |
__in nt_object_attributes * obj_attr,
|
|
|
dd89bb |
__in nt_unicode_string * target_name);
|
|
|
dd89bb |
|
|
|
dd89bb |
|
|
|
dd89bb |
typedef int32_t __stdcall ntapi_zw_open_symbolic_link_object(
|
|
|
dd89bb |
__out void ** symbolic_link_handle,
|
|
|
dd89bb |
__in uint32_t desired_access,
|
|
|
dd89bb |
__in nt_object_attributes * obj_attr);
|
|
|
dd89bb |
|
|
|
dd89bb |
|
|
|
dd89bb |
typedef int32_t __stdcall ntapi_zw_query_symbolic_link_object(
|
|
|
dd89bb |
__in void * symbolic_link_handle,
|
|
|
dd89bb |
__in_out nt_unicode_string * target_name,
|
|
|
dd89bb |
__out size_t * returned_length);
|
|
|
dd89bb |
|
|
|
dd89bb |
/* extension functions */
|
|
|
dd89bb |
typedef int32_t __stdcall ntapi_tt_create_keyed_object_directory(
|
|
|
dd89bb |
__out void ** hdir,
|
|
|
dd89bb |
__in uint32_t desired_access,
|
|
|
dd89bb |
__in const wchar16_t prefix[6],
|
|
|
dd89bb |
__in nt_guid * guid,
|
|
|
dd89bb |
__in uint32_t key);
|
|
|
dd89bb |
|
|
|
dd89bb |
typedef int32_t __stdcall ntapi_tt_open_keyed_object_directory(
|
|
|
dd89bb |
__out void ** hdir,
|
|
|
dd89bb |
__in uint32_t desired_access,
|
|
|
dd89bb |
__in const wchar16_t prefix[6],
|
|
|
dd89bb |
__in nt_guid * guid,
|
|
|
dd89bb |
__in uint32_t key);
|
|
|
dd89bb |
|
|
|
dd89bb |
typedef int32_t __stdcall ntapi_tt_create_keyed_object_directory_entry(
|
|
|
dd89bb |
__out void ** hentry,
|
|
|
dd89bb |
__in uint32_t desired_access,
|
|
|
dd89bb |
__in void * hdir,
|
|
|
dd89bb |
__in void * htarget,
|
|
|
dd89bb |
__in nt_unicode_string * target_name,
|
|
|
dd89bb |
__in uint32_t key);
|
|
|
dd89bb |
|
|
|
dd89bb |
#endif
|