Beispiel #1
0
static int BindFUNC( STRUCTDAT *st, char *name )
{
	//		ファンクションのバインドを行なう
	//		(name:後から与える時のファンクション名)
	//
	int i;
	char *n;
	LIBDAT *lib;
	HINSTANCE hd;
	if (( st->subid != STRUCTPRM_SUBID_DLL )&&( st->subid != STRUCTPRM_SUBID_OLDDLL )) return 4;
	i = st->nameidx;
	if ( i < 0 ) {
		if ( name == NULL ) return 3;
		n = name;
	} else {
		n = strp(i);
	}
	lib = GetLIB( st->index );
	if ( lib->flag != LIBDAT_FLAG_DLLINIT ) {
		BindLIB( lib, NULL );
		if ( lib->flag != LIBDAT_FLAG_DLLINIT ) return 2;
	}
	hd = (HINSTANCE)(lib->hlib);
	st->proc = (void *)GetProcAddress( hd, n );
	if ( hd == NULL ) return 1;
	st->subid--;
	return 0;
}
Beispiel #2
0
static int BindFUNC( STRUCTDAT *st, char *name )
{
	//		ファンクションのバインドを行なう
	//		(name:後から与える時のファンクション名)
	//
	int i;
	char *n;
	LIBDAT *lib;
	HINSTANCE hd;
	if (( st->subid != STRUCTPRM_SUBID_DLL )&&( st->subid != STRUCTPRM_SUBID_OLDDLL )) return 4;
	i = st->nameidx;
	if ( i < 0 ) {
		if ( name == NULL ) return 3;
		n = name;
	} else {
		n = strp(i);
	}
	lib = GetLIB( st->index );
	if ( lib->flag != LIBDAT_FLAG_DLLINIT ) {
		BindLIB( lib, NULL );
		if ( lib->flag != LIBDAT_FLAG_DLLINIT ) return 2;
	}
	hd = (HINSTANCE)(lib->hlib);
	if ( hd == NULL ) return 1;
#ifdef HSPUTF8
	HSPAPICHAR *hactmp1;
	char tmp1[512];
	chartoapichar(n,&hactmp1);
	cnvsjis(tmp1,(char*)hactmp1,512);
	st->proc = (void *)GetProcAddress( hd, tmp1 );
	freehac(&hactmp1);
#else
	st->proc = (void *)GetProcAddress( hd, n );
#endif
	if ( st->proc == NULL ) return 1;
	st->subid--;
	return 0;
}