#ifndef _NT_OS_H_
#define _NT_OS_H_
#include "nt_abi.h"
#include "nt_object.h"
typedef enum _nt_hard_error_response_option {
NT_OPTION_ABORT_RETRY_IGNORE,
NT_OPTION_OK_,
NT_OPTION_OK_CANCEL,
NT_OPTION_RETRY_CANCEL,
NT_OPTION_YES_NO,
NT_OPTION_YES_NO_CANCEL,
NT_OPTION_SHUTDOWN_SYSTEM
} nt_hard_error_response_option;
typedef enum _nt_hard_error_response {
NT_RESPONSE_RETURN_TO_CALLER,
NT_RESPONSE_NOT_HANDLED,
NT_RESPONSE_ABORT,
NT_RESPONSE_CANCEL,
NT_RESPONSE_IGNORE,
NT_RESPONSE_NO,
NT_RESPONSE_OK,
NT_RESPONSE_RETRY,
NT_RESPONSE_YES
} nt_hard_error_response;
typedef struct _nt_ldt_entry {
int32_t limit_low;
int32_t base_low;
union {
struct {
unsigned char base_mid;
unsigned char flags1;
unsigned char flags2;
unsigned char base_hi;
} bytes;
struct {
uint32_t base_mid :8;
uint32_t type :5;
uint32_t dpl :2;
uint32_t pres :1;
uint32_t limit_hi :4;
uint32_t sys :1;
uint32_t reserved :1;
uint32_t default_big :1;
uint32_t granularity :1;
uint32_t base_hi :8;
} bits;
} high_word;
} nt_ldt_entry;
typedef int32_t __stdcall ntapi_zw_flush_write_buffer(void);
/* interface requires further studying */
typedef int32_t __stdcall ntapi_zw_raise_hard_error(
__in int32_t status,
__in uint32_t number_of_args,
__in uint32_t string_arg_mask,
__in uint32_t * args,
__in nt_hard_error_response_option response_option,
__out nt_hard_error_response * response_received);
typedef int32_t __stdcall ntapi_zw_set_default_hard_error_port(
__in void * hport);
typedef int32_t __stdcall ntapi_zw_display_string(
__in nt_unicode_string * display_string);
typedef int32_t __stdcall ntapi_zw_create_paging_file(
__in nt_unicode_string * file_name,
__in nt_large_integer * initial_size,
__in nt_large_integer * maximum_size,
__in uintptr_t reserved);
typedef int32_t __stdcall ntapi_zw_set_ldt_entries(
__in uint32_t selector_1st,
__in nt_ldt_entry * ldt_entry_1st,
__in uint32_t selector_2nd,
__in nt_ldt_entry * ldt_entry_2nd);
typedef int32_t __stdcall ntapi_zw_vdm_control(
__in uint32_t vdm_control_code,
__in void * vdm_control_data);
#endif