static void clean_call_print_regvalues(){ uint regvalue; dr_mcontext_t mc = { sizeof(mc), DR_MC_ALL }; void * drcontext = dr_get_current_drcontext(); dr_get_mcontext(drcontext, &mc); dr_printf("---------\n"); regvalue = reg_get_value(DR_REG_XAX, &mc); dr_printf("xax - %x\n", regvalue); regvalue = reg_get_value(DR_REG_XBX, &mc); dr_printf("xbx - %x\n", regvalue); regvalue = reg_get_value(DR_REG_XCX, &mc); dr_printf("xcx - %x\n", regvalue); regvalue = reg_get_value(DR_REG_XDX, &mc); dr_printf("xdx - %x\n", regvalue); }
/** * Retrieves the content of a string registry entry * * @param const char *reg_path - Path of key * @param const char *keyname - Name of the subkey * @param const char *string - Buufer to hold string from the registry * @param unsigned long length - Size of string buffer provided * * @return bool - states if string get happened OK */ bool reg_get_sz(const char *reg_path, const char *keyname, char *string, unsigned long length) { string[0] = '\0'; return reg_get_value( reg_path, keyname, REG_SZ, (void *) string, &length); }
static void reg32_setup() { char *tmp; if (tmp = reg_get_value(HKEY_LOCAL_MACHINE, "System\\CurrentControlSet\\Services\\Tcpip\\Parameters\\DataBasePath")) { rb_gv_set("$hosts_dir", rb_str_new2(tmp)); free(tmp); } else if (tmp = reg_get_value(HKEY_LOCAL_MACHINE, "SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters\\DataBasePath")) { rb_gv_set("$hosts_dir", rb_str_new2(tmp)); free(tmp); } if (tmp = reg_get_value(HKEY_LOCAL_MACHINE, "Software\\Simutronics\\SGE32\\Directory")) { rb_hash_aset(rb_gv_get("$LICHCONFIG"), rb_str_new2("SGE Directory"), rb_str_new2(tmp)); free(tmp); } if (tmp = reg_get_value(HKEY_LOCAL_MACHINE, "Software\\Simutronics\\Launcher\\Directory")) { rb_hash_aset(rb_gv_get("$LICHCONFIG"), rb_str_new2("Launcher Directory"), rb_str_new2(tmp)); free(tmp); } if (tmp = reg_get_value(HKEY_LOCAL_MACHINE, "Software\\Simutronics\\WIZ32\\Directory")) { rb_hash_aset(rb_gv_get("$LICHCONFIG"), rb_str_new2("Wizard Directory"), rb_str_new2(tmp)); free(tmp); } if (tmp = reg_get_value(HKEY_LOCAL_MACHINE, "Software\\Classes\\Simutronics.Autolaunch\\Shell\\Open\\command\\")) { rb_hash_aset(rb_gv_get("$LICHCONFIG"), rb_str_new2("Launcher Shell Command"), rb_str_new2(tmp)); free(tmp); } if (tmp = getenv("windir")) { rb_hash_aset(rb_gv_get("$LICHCONFIG"), rb_str_new2("Windows Directory"), rb_str_new2(tmp)); rb_hash_aset(rb_gv_get("$LICHCONFIG"), rb_str_new2("windir"), rb_str_new2(tmp)); } }
void check_opnd(opnd_t opnd, void *pc, int read, void *drcontext, dr_mcontext_t *mctx, void *prev_pc) { if (opnd_is_memory_reference(opnd) && opnd_is_base_disp(opnd)) add_hit(pc, opnd_size_in_bytes(opnd_get_size(opnd)), opnd_get_disp(opnd) + (void *)reg_get_value(opnd_get_base(opnd), mctx), read, drcontext, prev_pc); else if (opnd_is_memory_reference(opnd) && opnd_get_addr(opnd)) add_hit(pc, opnd_size_in_bytes(opnd_get_size(opnd)), opnd_get_addr(opnd), read, drcontext, prev_pc); // for now no other kind of memory reference was noticed to access heap data else if (opnd_is_memory_reference(opnd)) dr_printf("need to implem other memory ref\n"); }
void load_settings() { values.main3d = reg_get_value(L"Main3D"); values.anti_alias = reg_get_value(L"AntiAlias"); values.anti_alias_samples = reg_get_value(L"AntiAliasSamples"); values.mlf = reg_get_value(L"MLF"); values.aaf = reg_get_value(L"AAF"); values.aniso_degree = reg_get_value(L"AnisoDegree"); values.texture_lod = reg_get_value(L"TextureLod"); values.tfq = reg_get_value(L"TFQ"); values.vsync_control = reg_get_value(L"VSyncControl"); values.tessellation = reg_get_value(L"Tessellation"); values.tessellation_option = reg_get_value(L"Tessellation_OPTION"); values.surface_format_replacements = reg_get_value(L"SurfaceFormatReplacements"); values.triple_buffering = reg_get_value(L"EnableTripleBuffering"); }
/** * Retrieves the value of a value registry entry * * @param const char *reg_path - Path of key * @param const char *keyname - Name of the subkey * @param DWORD *value - Value to be retrieved into the registry * * @return bool - states if value get happened OK */ bool reg_get_dword(const char *reg_path, const char *keyname, DWORD *value) { unsigned long size = sizeof(DWORD); return reg_get_value(reg_path, keyname, REG_DWORD, value, &size); }