Esempio n. 1
0
int _load_python(char *dllname, char *bytes)
{
	int i;
	struct IMPORT *p = imports;
	HMODULE hmod;
	ULONG_PTR cookie = 0;
	if (!bytes)
		return _load_python_FromFile(dllname);


	cookie = _My_ActivateActCtx();//try some windows manifest magic...
	//hmod = MemoryLoadLibrary(bytes);
	hmod = MyLoadLibrary(dllname, bytes, NULL);
	_My_DeactivateActCtx(cookie);
	if (hmod == NULL) {
		return 0;
	}

	for (i = 0; p->name; ++i, ++p) {
		//p->proc = (void (*)())MemoryGetProcAddress(hmod, p->name);
		p->proc = (void (*)())MyGetProcAddress(hmod, p->name);
		if (p->proc == NULL) {
			OutputDebugString("undef symbol");
			dfprint(stderr, "undefined symbol %s -> exit(-1)\n", p->name);
			return 0;
		}
	}

	return 1;
}
Esempio n. 2
0
int _load_python(char *dllname, char *bytes)
{
    int i;
    struct IMPORT *p = imports;
    HMODULE hmod;

    if (!bytes)
        return _load_python_FromFile(dllname);

    hmod = MemoryLoadLibrary(dllname, bytes);
    if (hmod == NULL) {
        return 0;
    }
    for (i = 0; p->name; ++i, ++p) {
        p->proc = (void (*)())MemoryGetProcAddress(hmod, p->name);
        if (p->proc == NULL) {
            OutputDebugString("undef symbol");
            fprintf(stderr, "undefined symbol %s -> exit(-1)\n", p->name);
            return 0;
        }
    }
    return 1;
}