예제 #1
0
파일: joyc.c 프로젝트: gameplayer22/d2x-1
void joy95_get_name(int joyid, char *name, int namesize) 
{
	JOYCAPS jc;
	MMRESULT res;
	//HKEY hkey;
	//long lres;
	char regpath[256];
	registry_handle *rhandle;
	char reglabel[32];

	name[0] = 0;

	switch(SpecialDevice) 
	{
		case TACTILE_IMMERSION:
			strcpy(name, "I-Force Force-Feedback");
			return;
	}

	res = joyGetDevCaps(joyid, &jc, sizeof(jc));
	if (res != JOYERR_NOERROR) {
		strcpy(name, "NO JOYSTICK DETECTED");
		return;
	}
	
// we have the reg key!
	registry_setpath(HKEY_LOCAL_MACHINE);
	strcpy(regpath, "System\\CurrentControlSet\\control\\MediaResources\\joystick\\");
	strcat(regpath, jc.szRegKey);
	strcat(regpath, "\\CurrentJoystickSettings");
	sprintf(reglabel, "Joystick%dOEMName", joyid+1);

	if ((rhandle = registry_open(regpath))) {
		if (!registry_getstring(rhandle, reglabel, name, namesize)) {
			registry_close(rhandle);
			strcpy(name, "JOYSTICK");
			return;
		}
		registry_close(rhandle);
	
	// have reg entry for full name
		strcpy(regpath, "System\\CurrentControlSet\\control\\MediaProperties\\PrivateProperties\\Joystick\\OEM\\");
		strcat(regpath, name);
	
		if ((rhandle = registry_open(regpath))) {
			if (!registry_getstring(rhandle, "OEMName", name, namesize)) {
				registry_close(rhandle);
				strcpy(name, "JOYSTICK");
				return;
			}
			registry_close(rhandle);
		}
		else strcpy(name, "JOYSTICK"); 
	}
	else strcpy(name, "JOYSTICK");
}
예제 #2
0
int
registry_keyval_delete(HKEY hkey, char *base, char *sub)
{
	HKEY   k;
	int    err;

	k = registry_open(hkey, base, KEY_WRITE);
	if (k == INVALID_HANDLE_VALUE)
		return -1;

	err = registry_value_delete(k, sub);

	registry_close(k);

	return err;
}
예제 #3
0
int
registry_keyval_string_set(HKEY hkey, char *base, char *sub, char *val)
{
	HKEY   k;
	int    err;

	k = registry_open(hkey, base, KEY_WRITE);
	if (k == INVALID_HANDLE_VALUE)
		return -1;

	err = registry_string_set(k, sub, val);

	registry_close(k);

	return err;
}
예제 #4
0
int
registry_keyval_dword_get(HKEY hkey, char *base, char *sub, DWORD *val)
{
	HKEY   k;
	int    err;

	k = registry_open(hkey, base, KEY_READ);
	if (k == INVALID_HANDLE_VALUE)
		return -1;

	err = registry_dword_get(k, sub, val);

	registry_close(k);

	return err;
}
예제 #5
0
파일: registry.c 프로젝트: Fornil/freerdp
void registry_init(rdpRegistry* registry)
{
	int length;
	char* home_path;
	struct stat stat_info;

	if (registry->settings->home_path == NULL)
		home_path = getenv("HOME");
	else
		home_path = registry->settings->home_path;

	if (home_path == NULL)
	{
		printf("could not get home path\n");
		registry->available = false;
		return;
	}

	registry->available = true;

	if (home_path == NULL)
	{
		printf("could not get home path\n");
		registry->available = false;
		return;
	}

	registry->home = (char*) xstrdup(home_path);
	printf("home path: %s\n", registry->home);

	registry->path = (char*) xmalloc(strlen(registry->home) + strlen("/.") + strlen(registry_dir) + 1);
	sprintf(registry->path, "%s/.%s", registry->home, registry_dir);
	printf("registry path: %s\n", registry->path);

	if (stat(registry->path, &stat_info) != 0)
	{
		freerdp_mkdir(registry->path);
		printf("creating directory %s\n", registry->path);
	}

	length = strlen(registry->path);
	registry->file = (char*) xmalloc(strlen(registry->path) + strlen("/") + strlen(registry_file) + 1);
	sprintf(registry->file, "%s/%s", registry->path, registry_file);
	printf("registry file: %s\n", registry->file);

	registry_open(registry);
}
예제 #6
0
int
registry_keyval_string_get(HKEY hkey, char *base, char *sub, char **val)
{
	HKEY   k;
	int    err;

	k = registry_open(hkey, base, KEY_READ);
	if (k == INVALID_HANDLE_VALUE) {
		*val = NULL;
		return -1;
	}

	err = registry_string_get(k, sub, val);

	registry_close(k);

	return err;
}