コード例 #1
0
ファイル: openal.c プロジェクト: AmesianX/RosWine
/***********************************************************************
 *           OpenAL initialisation routine
 */
BOOL WINAPI DllMain( HINSTANCE hinst, DWORD reason, LPVOID reserved )
{
    switch(reason)
    {
    case DLL_PROCESS_ATTACH:
        DisableThreadLibraryCalls(hinst);
#define LOADFUNC(x) x = alcGetProcAddress(NULL, #x)
        LOADFUNC(alcSetThreadContext);
        LOADFUNC(alcGetThreadContext);
#undef LOADFUNC
        break;
    case DLL_PROCESS_DETACH:
        DeleteCriticalSection(&openal_cs);
    }

    return TRUE;
}
コード例 #2
0
ファイル: ws2_pp.c プロジェクト: secretdataz/packetparser
BOOL CALLBACK DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
{
    char szSysPath[MAX_PATH], szLibPath[MAX_PATH];
    WSADATA Wsa;

    switch(dwReason)
    {
        case DLL_PROCESS_ATTACH:
            l_hFakeDll = hInstance;

            if(MessageBoxA(NULL, "Connect to Packet Parser?", "Packet Parser", MB_YESNO|MB_ICONQUESTION)==IDNO)
            {
                use_dll = FALSE;
            }

            {// rewrite system DLL load path
                LPFNSETDLLDIRECTORYA lpfnSetDllDirectoryA = (LPFNSETDLLDIRECTORYA)GetProcAddress(GetModuleHandle("KERNEL32.DLL"), "SetDllDirectoryA");

                if(lpfnSetDllDirectoryA)
                {
                    lpfnSetDllDirectoryA(".");
                }
            }

            GetSystemDirectoryA(szSysPath, _ARRAYSIZE(szSysPath));

            wsprintfA(szLibPath, "%s\\ws2_32.dll", szSysPath);

            l_hRealDll = LoadLibraryA(szLibPath);

            if(l_hRealDll)
            {
                if(l_hRealDll==l_hFakeDll)
                {// oops
                    FreeLibrary(l_hRealDll);
                    l_hRealDll = NULL;
                    MessageBoxA(NULL, "Attempted self-load.", "Library Error", MB_OK|MB_ICONSTOP);
                    return FALSE;
                }

#define LOADFUNC(x,y) l_WsFuncs.y = (x)GetProcAddress(l_hRealDll, #y)
                LOADFUNC(LPFN_CLOSESOCKET,closesocket);
                LOADFUNC(LPFN_CONNECT,connect);
                LOADFUNC(LPFN_HTONL,htonl);
                LOADFUNC(LPFN_HTONS,htons);
                LOADFUNC(LPFN_IOCTLSOCKET,ioctlsocket);
                LOADFUNC(LPFN_INET_ADDR,inet_addr);
                LOADFUNC(LPFN_INET_NTOA,inet_ntoa);
                LOADFUNC(LPFN_NTOHL,ntohl);
                LOADFUNC(LPFN_NTOHS,ntohs);
                LOADFUNC(LPFN_RECV,recv);
                LOADFUNC(LPFN_SELECT,select);
                LOADFUNC(LPFN_SEND,send);
                LOADFUNC(LPFN_SENDTO,sendto);
                LOADFUNC(LPFN_SETSOCKOPT,setsockopt);
                LOADFUNC(LPFN_SHUTDOWN,shutdown);
                LOADFUNC(LPFN_SOCKET,socket);
                LOADFUNC(LPFN_GETHOSTBYNAME,gethostbyname);
                LOADFUNC(LPFN_GETHOSTNAME,gethostname);
                LOADFUNC(LPFN_WSAGETLASTERROR,WSAGetLastError);
                LOADFUNC(LPFN_WSASTARTUP,WSAStartup);
                LOADFUNC(LPFN_WSACLEANUP,WSACleanup);
#undef LOADFUNC
				if(use_dll)
				{
					if(l_WsFuncs.WSAStartup(MAKEWORD(2,2), &Wsa))
					{
						FreeLibrary(l_hRealDll);
						l_hRealDll = NULL;
						MessageBoxA(NULL, "Failed to initialize actual Windows Sockets.", "Library Error", MB_OK|MB_ICONSTOP);
						return FALSE;
					}

					if((l_hSock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP))==INVALID_SOCKET)
					{
						l_WsFuncs.WSACleanup();
						FreeLibrary(l_hRealDll);
						l_hRealDll = NULL;
						MessageBoxA(NULL, "Failed to create socket.", "Library Error", MB_OK|MB_ICONSTOP);
						return FALSE;
					}
					else
					{
						struct sockaddr_in sin;

						sin.sin_family = AF_INET;
						sin.sin_addr.s_addr = l_WsFuncs.htonl(SOCK_JOINIP(127,0,0,1));
						sin.sin_port = l_WsFuncs.htons(13554);

						if(connect(l_hSock, (struct sockaddr*)&sin, sizeof(sin))==SOCKET_ERROR)
						{
							l_WsFuncs.shutdown(l_hSock, SD_BOTH);
							l_WsFuncs.closesocket(l_hSock);
							l_hSock = INVALID_SOCKET;
							l_WsFuncs.WSACleanup();
							FreeLibrary(l_hRealDll);
							l_hRealDll = NULL;
							MessageBoxA(NULL, "Failed to connect to 127.0.0.1:13554 (TCP).", "Library Error", MB_OK|MB_ICONSTOP);
							use_dll = FALSE;
							//return FALSE;
						}
					}
				}
            }
            else
            {
                return FALSE;
            }
            break;
        case DLL_PROCESS_DETACH:
            if(l_hRealDll)
            {
                if(l_hSock!=INVALID_SOCKET)
                {
                    l_WsFuncs.shutdown(l_hSock, SD_BOTH);
                    l_WsFuncs.closesocket(l_hSock);
                    l_hSock = INVALID_SOCKET;
                }
                l_WsFuncs.WSACleanup();
                FreeLibrary(l_hRealDll);
                l_hRealDll = NULL;
            }
            l_hFakeDll = NULL;
            break;
    }
    return TRUE;

    // unused
    lpReserved;
}
コード例 #3
0
ファイル: openal.c プロジェクト: AmesianX/RosWine
static void LoadProcs(void)
{
#define LOADFUNC(x) x = alGetProcAddress(#x)
    LOADFUNC(alBufferDataStatic);
    LOADFUNC(alGenFilters);
    LOADFUNC(alDeleteFilters);
    LOADFUNC(alIsFilter);
    LOADFUNC(alFilterf);
    LOADFUNC(alFilterfv);
    LOADFUNC(alFilteri);
    LOADFUNC(alFilteriv);
    LOADFUNC(alGetFilterf);
    LOADFUNC(alGetFilterfv);
    LOADFUNC(alGetFilteri);
    LOADFUNC(alGetFilteriv);
    LOADFUNC(alGenEffects);
    LOADFUNC(alDeleteEffects);
    LOADFUNC(alIsEffect);
    LOADFUNC(alEffectf);
    LOADFUNC(alEffectfv);
    LOADFUNC(alEffecti);
    LOADFUNC(alEffectiv);
    LOADFUNC(alGetEffectf);
    LOADFUNC(alGetEffectfv);
    LOADFUNC(alGetEffecti);
    LOADFUNC(alGetEffectiv);
    LOADFUNC(alGenAuxiliaryEffectSlots);
    LOADFUNC(alDeleteAuxiliaryEffectSlots);
    LOADFUNC(alIsAuxiliaryEffectSlot);
    LOADFUNC(alAuxiliaryEffectSlotf);
    LOADFUNC(alAuxiliaryEffectSlotfv);
    LOADFUNC(alAuxiliaryEffectSloti);
    LOADFUNC(alAuxiliaryEffectSlotiv);
    LOADFUNC(alGetAuxiliaryEffectSlotf);
    LOADFUNC(alGetAuxiliaryEffectSlotfv);
    LOADFUNC(alGetAuxiliaryEffectSloti);
    LOADFUNC(alGetAuxiliaryEffectSlotiv);
#undef LOADFUNC
}
コード例 #4
0
int LoadGLFunctions()
{
	// Load every OpenGL function we use in video.c
	LOADFUNC("glViewport", ptr_glViewport);
	LOADFUNC("glMatrixMode", ptr_glMatrixMode);
	LOADFUNC("glLoadIdentity", ptr_glLoadIdentity);

	LOADFUNC("glGenTextures", ptr_glGenTextures);
	LOADFUNC("glDeleteTextures", ptr_glDeleteTextures);
	LOADFUNC("glBindTexture", ptr_glBindTexture);
	LOADFUNC("glTexImage2D", ptr_glTexImage2D);
	LOADFUNC("glTexSubImage2D", ptr_glTexSubImage2D);

	LOADFUNC("glClear", ptr_glClear);
	LOADFUNC("glClearColor", ptr_glClearColor);
	LOADFUNC("glColor4f", ptr_glColor4f);
	LOADFUNC("glBlendFunc", ptr_glBlendFunc);
	LOADFUNC("glTexEnvi", ptr_glTexEnvi);
	LOADFUNC("glTexEnvfv", ptr_glTexEnvfv);

	LOADFUNC("glEnable", ptr_glEnable);
	LOADFUNC("glDisable", ptr_glDisable);

	LOADFUNC("glGetIntegerv", ptr_glGetIntegerv);
	LOADFUNC("glGetString", ptr_glGetString);
	LOADFUNC("glGetError", ptr_glGetError);

	LOADFUNC("glOrtho", ptr_glOrtho);
	LOADFUNC("glTexParameteri", ptr_glTexParameteri);
	LOADFUNC("glBegin", ptr_glBegin);
	LOADFUNC("glEnd", ptr_glEnd);
	LOADFUNC("glVertex2i", ptr_glVertex2i);
	LOADFUNC("glTexCoord2f", ptr_glTexCoord2f);

	// load multisampling functions; try the ARB versions if the core versions are not available
	ptr_glActiveTexture = SDL_GL_GetProcAddress("glActiveTexture");
	if(!ptr_glActiveTexture)
		LOADFUNC("glActiveTextureARB", ptr_glActiveTexture);
	ptr_glMultiTexCoord2f = SDL_GL_GetProcAddress("glMultiTexCoord2f");
	if(!ptr_glMultiTexCoord2f)
		LOADFUNC("glMultiTexCoord2fARB", ptr_glMultiTexCoord2f);

	// load optional GLSL extensions
	glCreateShaderObjectARB = SDL_GL_GetProcAddress("glCreateShaderObjectARB");
	glShaderSourceARB = SDL_GL_GetProcAddress("glShaderSourceARB");
	glCompileShaderARB = SDL_GL_GetProcAddress("glCompileShaderARB");
	glCreateProgramObjectARB = SDL_GL_GetProcAddress("glCreateProgramObjectARB");
	glAttachObjectARB = SDL_GL_GetProcAddress("glAttachObjectARB");
	glLinkProgramARB = SDL_GL_GetProcAddress("glLinkProgramARB");
	glUseProgramObjectARB = SDL_GL_GetProcAddress("glUseProgramObjectARB");
	glGetUniformLocationARB = SDL_GL_GetProcAddress("glGetUniformLocationARB");
	glUniform1iARB = SDL_GL_GetProcAddress("glUniform1iARB");
	glUniform1fARB = SDL_GL_GetProcAddress("glUniform1fARB");
	glUniform4fARB = SDL_GL_GetProcAddress("glUniform4fARB");

	return 1;
}