|
|
dd89bb |
#ifndef _NT_ARGV_H_
|
|
|
dd89bb |
#define _NT_ARGV_H_
|
|
|
dd89bb |
|
|
|
dd89bb |
/******************************************************
|
|
|
dd89bb |
* *
|
|
|
dd89bb |
* this header is REALLY NOT what you are looking *
|
|
|
dd89bb |
* for, however if you are into writing your apps *
|
|
|
dd89bb |
* using the Native API only, then you might find *
|
|
|
dd89bb |
* the below interfaces somehow useful. *
|
|
|
dd89bb |
* *
|
|
|
dd89bb |
*****************************************************/
|
|
|
dd89bb |
|
|
|
414ad3 |
#include "nt_abi.h"
|
|
|
dd89bb |
|
|
|
a40312 |
/* ntapi_tt_get_argv_envp flag bits */
|
|
|
dd89bb |
#define NT_GET_ARGV_ENVP_USE_INTERNAL_BUFFER (0x0000)
|
|
|
dd89bb |
#define NT_GET_ARGV_ENVP_USE_CALLER_BUFFER (0x0001)
|
|
|
dd89bb |
#define NT_GET_ARGV_ENVP_COPY_ENVIRONMENT (0x0002)
|
|
|
a40312 |
#define NT_GET_ARGV_ENVP_VALIDATE_UTF8 (0x0004)
|
|
|
a40312 |
#define NT_GET_ARGV_ENVP_VALIDATE_UTF16 (0x0008)
|
|
|
dd89bb |
|
|
|
dd89bb |
|
|
|
a40312 |
typedef struct _nt_env_var_meta_utf8 {
|
|
|
a40312 |
char * name;
|
|
|
a40312 |
char * value;
|
|
|
a40312 |
int envp_index;
|
|
|
a40312 |
uint32_t flags;
|
|
|
a40312 |
} nt_env_var_meta_utf8;
|
|
|
a40312 |
|
|
|
a40312 |
|
|
|
dd89bb |
typedef struct _nt_env_var_meta_utf16 {
|
|
|
dd89bb |
wchar16_t * name;
|
|
|
dd89bb |
wchar16_t * value;
|
|
|
dd89bb |
int envp_index;
|
|
|
dd89bb |
uint32_t flags;
|
|
|
dd89bb |
} nt_env_var_meta_utf16;
|
|
|
dd89bb |
|
|
|
dd89bb |
|
|
|
dd89bb |
typedef struct _nt_argv_envp_block_info {
|
|
|
dd89bb |
wchar16_t * cmd_line;
|
|
|
dd89bb |
wchar16_t ** wargv_buffer;
|
|
|
dd89bb |
size_t wargv_buffer_len;
|
|
|
dd89bb |
wchar16_t * wargs_buffer;
|
|
|
dd89bb |
size_t wargs_buffer_len;
|
|
|
dd89bb |
size_t wargs_bytes_written;
|
|
|
dd89bb |
wchar16_t ** wenvp_buffer;
|
|
|
dd89bb |
size_t wenvp_buffer_len;
|
|
|
dd89bb |
wchar16_t * wenvs_buffer;
|
|
|
dd89bb |
size_t wenvs_buffer_len;
|
|
|
dd89bb |
size_t wenvs_bytes_used;
|
|
|
dd89bb |
char * args_buffer;
|
|
|
dd89bb |
size_t args_buffer_len;
|
|
|
dd89bb |
size_t args_bytes_written;
|
|
|
dd89bb |
char * envs_buffer;
|
|
|
dd89bb |
size_t envs_buffer_len;
|
|
|
dd89bb |
size_t envs_bytes_used;
|
|
|
dd89bb |
uint32_t arg_flags;
|
|
|
dd89bb |
uint32_t env_flags;
|
|
|
dd89bb |
uint32_t psx_flags;
|
|
|
dd89bb |
uint32_t psx_padding;
|
|
|
dd89bb |
uint32_t argv_envp_ptr_total;
|
|
|
dd89bb |
int envc;
|
|
|
dd89bb |
|
|
|
dd89bb |
int argc;
|
|
|
dd89bb |
char ** argv;
|
|
|
dd89bb |
char ** envp;
|
|
|
dd89bb |
} nt_argv_envp_block_info;
|
|
|
dd89bb |
|
|
|
dd89bb |
|
|
|
dd89bb |
typedef struct _nt_get_argv_envp_ext_params {
|
|
|
dd89bb |
nt_argv_envp_block_info argv_envp_block_info;
|
|
|
dd89bb |
} nt_get_argv_envp_ext_params;
|
|
|
dd89bb |
|
|
|
dd89bb |
|
|
|
dd89bb |
typedef wchar16_t * __stdcall ntapi_tt_get_cmd_line_utf16(void);
|
|
|
dd89bb |
|
|
|
dd89bb |
|
|
|
dd89bb |
typedef wchar16_t * __stdcall ntapi_tt_get_peb_env_block_utf16(void);
|
|
|
dd89bb |
|
|
|
dd89bb |
|
|
|
dd89bb |
typedef int32_t __stdcall ntapi_tt_parse_cmd_line_args_utf16(
|
|
|
dd89bb |
__in wchar16_t * cmd_line,
|
|
|
dd89bb |
__out int * arg_count,
|
|
|
dd89bb |
__in wchar16_t * args_buffer,
|
|
|
dd89bb |
__in size_t args_buffer_len,
|
|
|
dd89bb |
__out size_t * args_bytes_written __optional,
|
|
|
dd89bb |
__in wchar16_t ** argv_buffer,
|
|
|
dd89bb |
__in size_t argv_buffer_len,
|
|
|
dd89bb |
__in uint32_t arg_flags);
|
|
|
dd89bb |
|
|
|
dd89bb |
|
|
|
dd89bb |
typedef int32_t __stdcall ntapi_tt_get_argv_envp_utf8(
|
|
|
dd89bb |
__out int * argc,
|
|
|
dd89bb |
__out char *** argv,
|
|
|
dd89bb |
__out char *** envp,
|
|
|
dd89bb |
__in uint32_t flags,
|
|
|
dd89bb |
__in void * ext_params __optional,
|
|
|
dd89bb |
__out void * reserved __optional);
|
|
|
dd89bb |
|
|
|
dd89bb |
|
|
|
dd89bb |
typedef int32_t __stdcall ntapi_tt_get_argv_envp_utf16(
|
|
|
dd89bb |
__out int * argc,
|
|
|
dd89bb |
__out wchar16_t *** wargv,
|
|
|
dd89bb |
__out wchar16_t *** wenvp,
|
|
|
dd89bb |
__in uint32_t flags,
|
|
|
dd89bb |
__in void * ext_params __optional,
|
|
|
dd89bb |
__out void * reserved __optional);
|
|
|
dd89bb |
|
|
|
dd89bb |
|
|
|
a40312 |
typedef int32_t __stdcall ntapi_tt_get_env_var_meta_utf8(
|
|
|
a40312 |
__in char * env_var_name,
|
|
|
a40312 |
__in char ** envp,
|
|
|
a40312 |
__out nt_env_var_meta_utf8 * env_var_meta);
|
|
|
a40312 |
|
|
|
a40312 |
|
|
|
dd89bb |
typedef int32_t __stdcall ntapi_tt_get_env_var_meta_utf16(
|
|
|
dd89bb |
__in wchar16_t * env_var_name,
|
|
|
dd89bb |
__in wchar16_t ** envp,
|
|
|
dd89bb |
__out nt_env_var_meta_utf16 * env_var_meta);
|
|
|
dd89bb |
|
|
|
dd89bb |
|
|
|
dd89bb |
typedef int32_t __stdcall ntapi_tt_array_copy_utf8(
|
|
|
dd89bb |
__out int * argc,
|
|
|
dd89bb |
__in const char ** argv,
|
|
|
15812f |
__in const char ** envp,
|
|
|
15812f |
__in const char * interp __optional,
|
|
|
dd89bb |
__in const char * optarg __optional,
|
|
|
15812f |
__in const char * script __optional,
|
|
|
dd89bb |
__in void * base,
|
|
|
dd89bb |
__out void * buffer,
|
|
|
dd89bb |
__in size_t buflen,
|
|
|
dd89bb |
__out size_t * blklen);
|
|
|
dd89bb |
|
|
|
dd89bb |
typedef int32_t __stdcall ntapi_tt_array_copy_utf16(
|
|
|
dd89bb |
__out int * argc,
|
|
|
dd89bb |
__in const wchar16_t ** wargv,
|
|
|
dd89bb |
__in const wchar16_t ** wenvp,
|
|
|
112cac |
__in const wchar16_t * interp __optional,
|
|
|
dd89bb |
__in const wchar16_t * optarg __optional,
|
|
|
112cac |
__in const wchar16_t * script __optional,
|
|
|
dd89bb |
__in void * base,
|
|
|
dd89bb |
__out void * buffer,
|
|
|
dd89bb |
__in size_t buflen,
|
|
|
dd89bb |
__out size_t * blklen);
|
|
|
dd89bb |
|
|
|
dd89bb |
typedef int32_t __stdcall ntapi_tt_array_convert_utf8_to_utf16(
|
|
|
dd89bb |
__in char ** arrv,
|
|
|
dd89bb |
__in wchar16_t ** arra,
|
|
|
dd89bb |
__in void * base,
|
|
|
dd89bb |
__in wchar16_t * buffer,
|
|
|
dd89bb |
__in size_t buffer_len,
|
|
|
dd89bb |
__out size_t * bytes_written);
|
|
|
dd89bb |
|
|
|
dd89bb |
typedef int32_t __stdcall ntapi_tt_array_convert_utf16_to_utf8(
|
|
|
dd89bb |
__in wchar16_t ** warrv,
|
|
|
dd89bb |
__in char ** arra,
|
|
|
dd89bb |
__in void * base,
|
|
|
dd89bb |
__in char * buffer,
|
|
|
dd89bb |
__in size_t buffer_len,
|
|
|
dd89bb |
__out size_t * bytes_written);
|
|
|
dd89bb |
|
|
|
dd89bb |
#endif
|