/* Send an interrupt request to the inferior process. */ static void win32_request_interrupt (void) { winapi_DebugBreakProcess DebugBreakProcess; winapi_GenerateConsoleCtrlEvent GenerateConsoleCtrlEvent; #ifdef _WIN32_WCE HMODULE dll = GetModuleHandle (_T("COREDLL.DLL")); #else HMODULE dll = GetModuleHandle (_T("KERNEL32.DLL")); #endif GenerateConsoleCtrlEvent = GETPROCADDRESS (dll, GenerateConsoleCtrlEvent); if (GenerateConsoleCtrlEvent != NULL && GenerateConsoleCtrlEvent (CTRL_BREAK_EVENT, current_process_id)) return; /* GenerateConsoleCtrlEvent can fail if process id being debugged is not a process group id. Fallback to XP/Vista 'DebugBreakProcess', which generates a breakpoint exception in the interior process. */ DebugBreakProcess = GETPROCADDRESS (dll, DebugBreakProcess); if (DebugBreakProcess != NULL && DebugBreakProcess (current_process_handle)) return; /* Last resort, suspend all threads manually. */ soft_interrupt_requested = 1; }
/* Detach from all inferiors. */ static int win32_detach (void) { winapi_DebugActiveProcessStop DebugActiveProcessStop = NULL; winapi_DebugSetProcessKillOnExit DebugSetProcessKillOnExit = NULL; #ifdef _WIN32_WCE HMODULE dll = GetModuleHandle (_T("COREDLL.DLL")); #else HMODULE dll = GetModuleHandle (_T("KERNEL32.DLL")); #endif DebugActiveProcessStop = GETPROCADDRESS (dll, DebugActiveProcessStop); DebugSetProcessKillOnExit = GETPROCADDRESS (dll, DebugSetProcessKillOnExit); if (DebugSetProcessKillOnExit == NULL || DebugActiveProcessStop == NULL) return -1; { struct thread_resume resume; resume.thread = -1; resume.step = 0; resume.sig = 0; resume.leave_stopped = 0; win32_resume (&resume); } if (!DebugActiveProcessStop (current_process_id)) return -1; DebugSetProcessKillOnExit (FALSE); win32_clear_inferiors (); return 0; }
static BOOL load_toolhelp (void) { static int toolhelp_loaded = 0; static HMODULE dll = NULL; if (!toolhelp_loaded) { toolhelp_loaded = 1; #ifndef _WIN32_WCE dll = GetModuleHandle (_T("KERNEL32.DLL")); #else dll = LoadLibrary (L"TOOLHELP.DLL"); #endif if (!dll) return FALSE; win32_CreateToolhelp32Snapshot = GETPROCADDRESS (dll, CreateToolhelp32Snapshot); win32_Module32First = GETPROCADDRESS (dll, Module32First); win32_Module32Next = GETPROCADDRESS (dll, Module32Next); #ifdef _WIN32_WCE win32_CloseToolhelp32Snapshot = GETPROCADDRESS (dll, CloseToolhelp32Snapshot); #endif } return (win32_CreateToolhelp32Snapshot != NULL && win32_Module32First != NULL && win32_Module32Next != NULL #ifdef _WIN32_WCE && win32_CloseToolhelp32Snapshot != NULL #endif ); }
/* Attach to a running process. PID is the process ID to attach to, specified by the user or a higher layer. */ static int win32_attach (unsigned long pid) { HANDLE h; winapi_DebugSetProcessKillOnExit DebugSetProcessKillOnExit = NULL; DWORD err; #ifdef _WIN32_WCE HMODULE dll = GetModuleHandle (_T("COREDLL.DLL")); #else HMODULE dll = GetModuleHandle (_T("KERNEL32.DLL")); #endif DebugSetProcessKillOnExit = GETPROCADDRESS (dll, DebugSetProcessKillOnExit); h = OpenProcess (PROCESS_ALL_ACCESS, FALSE, pid); if (h != NULL) { if (DebugActiveProcess (pid)) { if (DebugSetProcessKillOnExit != NULL) DebugSetProcessKillOnExit (FALSE); /* win32_wait needs to know we're attaching. */ attaching = 1; do_initial_child_stuff (h, pid, 1); return 0; } CloseHandle (h); } err = GetLastError (); error ("Attach to process failed (error %d): %s\n", (int) err, strwinerror (err)); }
/* Detach from inferior PID. */ static int win32_detach (int pid) { struct process_info *process; winapi_DebugActiveProcessStop DebugActiveProcessStop = NULL; winapi_DebugSetProcessKillOnExit DebugSetProcessKillOnExit = NULL; #ifdef _WIN32_WCE HMODULE dll = GetModuleHandle (_T("COREDLL.DLL")); #else HMODULE dll = GetModuleHandle (_T("KERNEL32.DLL")); #endif DebugActiveProcessStop = GETPROCADDRESS (dll, DebugActiveProcessStop); DebugSetProcessKillOnExit = GETPROCADDRESS (dll, DebugSetProcessKillOnExit); if (DebugSetProcessKillOnExit == NULL || DebugActiveProcessStop == NULL) return -1; { struct thread_resume resume; resume.thread = minus_one_ptid; resume.kind = resume_continue; resume.sig = 0; win32_resume (&resume, 1); } if (!DebugActiveProcessStop (current_process_id)) return -1; DebugSetProcessKillOnExit (FALSE); process = find_process_pid (pid); remove_process (process); win32_clear_inferiors (); return 0; }
static BOOL load_psapi (void) { static int psapi_loaded = 0; static HMODULE dll = NULL; if (!psapi_loaded) { psapi_loaded = 1; dll = LoadLibrary (TEXT("psapi.dll")); if (!dll) return FALSE; win32_EnumProcessModules = GETPROCADDRESS (dll, EnumProcessModules); win32_GetModuleInformation = GETPROCADDRESS (dll, GetModuleInformation); win32_GetModuleFileNameExA = GETPROCADDRESS (dll, GetModuleFileNameExA); } return (win32_EnumProcessModules != NULL && win32_GetModuleInformation != NULL && win32_GetModuleFileNameExA != NULL); }
// load JE, Jinit, getprocaddresses, JSM J jeload(void* callbacks) { #ifdef _WIN32 WCHAR wpath[PLEN]; MultiByteToWideChar(CP_UTF8,0,pathdll,1+(int)strlen(pathdll),wpath,PLEN); hjdll=LoadLibraryW(wpath); if (!hjdll) hjdll = LoadLibraryA(JDLLNAME); #else hjdll=dlopen(pathdll,RTLD_LAZY); if (!hjdll) hjdll = dlopen(JDLLNAME,RTLD_LAZY); #endif if(!hjdll) return 0; jt=((JInitType)GETPROCADDRESS(hjdll,"JInit"))(); if(!jt) return 0; ((JSMType)GETPROCADDRESS(hjdll,"JSM"))(jt,callbacks); jdo=(JDoType)GETPROCADDRESS(hjdll,"JDo"); jfree=(JFreeType)GETPROCADDRESS(hjdll,"JFree"); jga=(JgaType)GETPROCADDRESS(hjdll,"Jga"); jgetlocale=(JGetLocaleType)GETPROCADDRESS(hjdll,"JGetLocale"); return jt; }
BOOL LoadWintab( void ) { ghWintab = LoadLibraryA( "Wintab32.dll" ); if ( !ghWintab ) { DWORD err = GetLastError(); return FALSE; } // Explicitly find the exported Wintab functions in which we are interested. // We are using the ASCII, not unicode versions (where applicable). GETPROCADDRESS( WTOPENA, WTOpenA ); GETPROCADDRESS( WTINFOA, WTInfoA ); GETPROCADDRESS( WTGETA, WTGetA ); GETPROCADDRESS( WTSETA, WTSetA ); GETPROCADDRESS( WTPACKET, WTPacket ); GETPROCADDRESS( WTCLOSE, WTClose ); GETPROCADDRESS( WTENABLE, WTEnable ); GETPROCADDRESS( WTOVERLAP, WTOverlap ); GETPROCADDRESS( WTSAVE, WTSave ); GETPROCADDRESS( WTCONFIG, WTConfig ); GETPROCADDRESS( WTRESTORE, WTRestore ); GETPROCADDRESS( WTEXTSET, WTExtSet ); GETPROCADDRESS( WTEXTGET, WTExtGet ); GETPROCADDRESS( WTQUEUESIZESET, WTQueueSizeSet ); GETPROCADDRESS( WTDATAPEEK, WTDataPeek ); GETPROCADDRESS( WTPACKETSGET, WTPacketsGet ); return TRUE; }
PRIVATE void loadgs (void) { HINSTANCE lib; lib = LoadLibrary ("gsdll32"); GETPROCADDRESS (lib, gsdll_revision); GETPROCADDRESS (lib, gsdll_init); GETPROCADDRESS (lib, gsdll_execute_begin); GETPROCADDRESS (lib, gsdll_execute_cont); GETPROCADDRESS (lib, gsdll_execute_end); GETPROCADDRESS (lib, gsdll_exit); GETPROCADDRESS (lib, gsdll_lock_device); GETPROCADDRESS (lib, gsdll_copy_dib); GETPROCADDRESS (lib, gsdll_copy_palette); GETPROCADDRESS (lib, gsdll_draw); GETPROCADDRESS (lib, gsdll_get_bitmap_row); }
bool dabStick::load_rtlFunctions (void) { // link the required procedures rtlsdr_open = (pfnrtlsdr_open) GETPROCADDRESS (Handle, "rtlsdr_open"); if (rtlsdr_open == NULL) { fprintf (stderr, "Could not find rtlsdr_open\n"); return false; } rtlsdr_close = (pfnrtlsdr_close) GETPROCADDRESS (Handle, "rtlsdr_close"); if (rtlsdr_close == NULL) { fprintf (stderr, "Could not find rtlsdr_close\n"); return false; } rtlsdr_set_sample_rate = (pfnrtlsdr_set_sample_rate)GETPROCADDRESS (Handle, "rtlsdr_set_sample_rate"); if (rtlsdr_set_sample_rate == NULL) { fprintf (stderr, "Could not find rtlsdr_set_sample_rate\n"); return false; } rtlsdr_get_sample_rate = (pfnrtlsdr_get_sample_rate) GETPROCADDRESS (Handle, "rtlsdr_get_sample_rate"); if (rtlsdr_get_sample_rate == NULL) { fprintf (stderr, "Could not find rtlsdr_get_sample_rate\n"); return false; } rtlsdr_set_agc_mode = (pfnrtlsdr_set_agc_mode) GETPROCADDRESS (Handle, "rtlsdr_set_agc_mode"); if (rtlsdr_set_agc_mode == NULL) { fprintf (stderr, "Could not find rtlsdr_set_agc_mode\n"); return false; } rtlsdr_get_tuner_gains = (pfnrtlsdr_get_tuner_gains) GETPROCADDRESS (Handle, "rtlsdr_get_tuner_gains"); if (rtlsdr_get_tuner_gains == NULL) { fprintf (stderr, "Could not find rtlsdr_get_tuner_gains\n"); return false; } rtlsdr_set_tuner_gain_mode = (pfnrtlsdr_set_tuner_gain_mode) GETPROCADDRESS (Handle, "rtlsdr_set_tuner_gain_mode"); if (rtlsdr_set_tuner_gain_mode == NULL) { fprintf (stderr, "Could not find rtlsdr_set_tuner_gain_mode\n"); return false; } rtlsdr_set_tuner_gain = (pfnrtlsdr_set_tuner_gain) GETPROCADDRESS (Handle, "rtlsdr_set_tuner_gain"); if (rtlsdr_set_tuner_gain == NULL) { fprintf (stderr, "Cound not find rtlsdr_set_tuner_gain\n"); return false; } rtlsdr_get_tuner_gain = (pfnrtlsdr_get_tuner_gain) GETPROCADDRESS (Handle, "rtlsdr_get_tuner_gain"); if (rtlsdr_get_tuner_gain == NULL) { fprintf (stderr, "Could not find rtlsdr_get_tuner_gain\n"); return false; } rtlsdr_set_center_freq = (pfnrtlsdr_set_center_freq) GETPROCADDRESS (Handle, "rtlsdr_set_center_freq"); if (rtlsdr_set_center_freq == NULL) { fprintf (stderr, "Could not find rtlsdr_set_center_freq\n"); return false; } rtlsdr_get_center_freq = (pfnrtlsdr_get_center_freq) GETPROCADDRESS (Handle, "rtlsdr_get_center_freq"); if (rtlsdr_get_center_freq == NULL) { fprintf (stderr, "Could not find rtlsdr_get_center_freq\n"); return false; } rtlsdr_reset_buffer = (pfnrtlsdr_reset_buffer) GETPROCADDRESS (Handle, "rtlsdr_reset_buffer"); if (rtlsdr_reset_buffer == NULL) { fprintf (stderr, "Could not find rtlsdr_reset_buffer\n"); return false; } rtlsdr_read_async = (pfnrtlsdr_read_async) GETPROCADDRESS (Handle, "rtlsdr_read_async"); if (rtlsdr_read_async == NULL) { fprintf (stderr, "Cound not find rtlsdr_read_async\n"); return false; } rtlsdr_get_device_count = (pfnrtlsdr_get_device_count) GETPROCADDRESS (Handle, "rtlsdr_get_device_count"); if (rtlsdr_get_device_count == NULL) { fprintf (stderr, "Could not find rtlsdr_get_device_count\n"); return false; } rtlsdr_cancel_async = (pfnrtlsdr_cancel_async) GETPROCADDRESS (Handle, "rtlsdr_cancel_async"); if (rtlsdr_cancel_async == NULL) { fprintf (stderr, "Could not find rtlsdr_cancel_async\n"); return false; } rtlsdr_set_direct_sampling = (pfnrtlsdr_set_direct_sampling) GETPROCADDRESS (Handle, "rtlsdr_set_direct_sampling"); if (rtlsdr_set_direct_sampling == NULL) { fprintf (stderr, "Could not find rtlsdr_set_direct_sampling\n"); return false; } rtlsdr_set_freq_correction = (pfnrtlsdr_set_freq_correction) GETPROCADDRESS (Handle, "rtlsdr_set_freq_correction"); if (rtlsdr_set_freq_correction == NULL) { fprintf (stderr, "Could not find rtlsdr_set_freq_correction\n"); return false; } rtlsdr_get_device_name = (pfnrtlsdr_get_device_name) GETPROCADDRESS (Handle, "rtlsdr_get_device_name"); if (rtlsdr_get_device_name == NULL) { fprintf (stderr, "Could not find rtlsdr_get_device_name\n"); return false; } fprintf (stderr, "OK, functions seem to be loaded\n"); return true; }
void CIME::Initialize() { if(s_hDllImm32) // Only need to do once return; FARPROC Temp; // s_CompString.SetBufferSize(MAX_COMPSTRING_SIZE); WCHAR wszPath[MAX_PATH+1]; if(!::GetSystemDirectoryW(wszPath, MAX_PATH+1)) return; std::wstring wstrPath = wszPath; wstrPath += IMM32_DLLNAME; s_hDllImm32 = LoadLibraryW(wstrPath.c_str()); if(s_hDllImm32) { GETPROCADDRESS(s_hDllImm32, ImmLockIMC, Temp); GETPROCADDRESS(s_hDllImm32, ImmUnlockIMC, Temp); GETPROCADDRESS(s_hDllImm32, ImmLockIMCC, Temp); GETPROCADDRESS(s_hDllImm32, ImmUnlockIMCC, Temp); GETPROCADDRESS(s_hDllImm32, ImmDisableTextFrameService, Temp); GETPROCADDRESS(s_hDllImm32, ImmGetCompositionStringW, Temp); GETPROCADDRESS(s_hDllImm32, ImmGetCandidateListW, Temp); GETPROCADDRESS(s_hDllImm32, ImmGetContext, Temp); GETPROCADDRESS(s_hDllImm32, ImmReleaseContext, Temp); GETPROCADDRESS(s_hDllImm32, ImmAssociateContext, Temp); GETPROCADDRESS(s_hDllImm32, ImmGetOpenStatus, Temp); GETPROCADDRESS(s_hDllImm32, ImmSetOpenStatus, Temp); GETPROCADDRESS(s_hDllImm32, ImmGetConversionStatus, Temp); GETPROCADDRESS(s_hDllImm32, ImmGetDefaultIMEWnd, Temp); GETPROCADDRESS(s_hDllImm32, ImmGetIMEFileNameA, Temp); GETPROCADDRESS(s_hDllImm32, ImmGetVirtualKey, Temp); GETPROCADDRESS(s_hDllImm32, ImmNotifyIME, Temp); GETPROCADDRESS(s_hDllImm32, ImmSetConversionStatus, Temp); GETPROCADDRESS(s_hDllImm32, ImmSimulateHotKey, Temp); GETPROCADDRESS(s_hDllImm32, ImmIsIME, Temp); } if(!::GetSystemDirectoryW(wszPath, MAX_PATH+1)) return; wstrPath = wszPath; wstrPath+=VER_DLLNAME; s_hDllVer = LoadLibraryW(wstrPath.c_str()); if(s_hDllVer) { GETPROCADDRESS(s_hDllVer, VerQueryValueA, Temp); GETPROCADDRESS(s_hDllVer, GetFileVersionInfoA, Temp); GETPROCADDRESS(s_hDllVer, GetFileVersionInfoSizeA, Temp); } }
miricsLoader::miricsLoader (bool *success) { libraryLoaded = false; *success = false; #ifdef __MINGW32__ HKEY APIkey; wchar_t APIkeyValue [256]; ULONG APIkeyValue_length = 255; if (RegOpenKey (HKEY_LOCAL_MACHINE, TEXT("Software\\MiricsSDR\\API"), &APIkey) != ERROR_SUCCESS) { fprintf (stderr, "failed to locate API registry entry, error = %d\n", (int)GetLastError()); return; } RegQueryValueEx (APIkey, (wchar_t *)L"Install_Dir", NULL, NULL, (LPBYTE)&APIkeyValue, (LPDWORD)&APIkeyValue_length); // Ok, make explicit it is in the 64 bits section wchar_t *x = wcscat (APIkeyValue, (wchar_t *)L"\\x64\\mir_sdr_api.dll"); // fprintf (stderr, "Length of APIkeyValue = %d\n", APIkeyValue_length); // wprintf (L"API registry entry: %s\n", APIkeyValue); RegCloseKey(APIkey); Handle = LoadLibrary (x); if (Handle == NULL) { fprintf (stderr, "Failed to open mir_sdr_api.dll\n"); return; } #else // Ǹote that under Ubuntu, the Mirics shared object does not seem to be // able to find the libusb. That is why we explicity load it here Handle = dlopen ("libusb-1.0.so", RTLD_NOW | RTLD_GLOBAL); Handle = dlopen ("libmir_sdr_api.so", RTLD_NOW); // Handle = dlopen ("/usr/local/lib/libmir_sdr_api.so", RTLD_NOW); if (Handle == NULL) { fprintf (stderr, "error report %s\n", dlerror ()); return; } #endif libraryLoaded = true; // Load the functions one by one my_mir_sdr_Init = (pfn_mir_sdr_Init) GETPROCADDRESS (Handle, "mir_sdr_Init"); if (my_mir_sdr_Init == NULL) { fprintf (stderr, "Could not find mir_sdr_Init\n"); return; } my_mir_sdr_ReadPacket = (pfn_mir_sdr_ReadPacket) GETPROCADDRESS (Handle, "mir_sdr_ReadPacket"); if (my_mir_sdr_ReadPacket == NULL) { fprintf (stderr, "Could not find mir_sdr_ReadPacket\n"); return; } my_mir_sdr_SetRf = (pfn_mir_sdr_SetRf) GETPROCADDRESS (Handle, "mir_sdr_SetRf"); if (my_mir_sdr_SetRf == NULL) { fprintf (stderr, "Could not find mir_sdr_SetRf\n"); return; } my_mir_sdr_SetFs = (pfn_mir_sdr_SetFs) GETPROCADDRESS (Handle, "mir_sdr_SetFs"); if (my_mir_sdr_SetFs == NULL) { fprintf (stderr, "Could not find mir_sdr_SetFs\n"); return; } my_mir_sdr_SetGr = (pfn_mir_sdr_SetGr) GETPROCADDRESS (Handle, "mir_sdr_SetGr"); if (my_mir_sdr_SetGr == NULL) { fprintf (stderr, "Could not find mir_sdr_SetGr\n"); return; } my_mir_sdr_SetGrParams = (pfn_mir_sdr_SetGrParams) GETPROCADDRESS (Handle, "mir_sdr_SetGrParams"); if (my_mir_sdr_SetGrParams == NULL) { fprintf (stderr, "Could not find mir_sdr_SetGrParams\n"); return; } my_mir_sdr_SetDcMode = (pfn_mir_sdr_SetDcMode) GETPROCADDRESS (Handle, "mir_sdr_SetDcMode"); if (my_mir_sdr_SetDcMode == NULL) { fprintf (stderr, "Could not find mir_sdr_SetDcMode\n"); return; } my_mir_sdr_SetDcTrackTime = (pfn_mir_sdr_SetDcTrackTime) GETPROCADDRESS (Handle, "mir_sdr_SetDcTrackTime"); if (my_mir_sdr_SetDcTrackTime == NULL) { fprintf (stderr, "Could not find mir_sdr_SetDcTrackTime\n"); return; } my_mir_sdr_SetSyncUpdateSampleNum = (pfn_mir_sdr_SetSyncUpdateSampleNum) GETPROCADDRESS (Handle, "mir_sdr_SetSyncUpdateSampleNum"); if (my_mir_sdr_SetSyncUpdateSampleNum == NULL) { fprintf (stderr, "Could not find mir_sdr_SetSyncUpdateSampleNum\n"); return; } my_mir_sdr_SetSyncUpdatePeriod = (pfn_mir_sdr_SetSyncUpdatePeriod) GETPROCADDRESS (Handle, "mir_sdr_SetSyncUpdatePeriod"); if (my_mir_sdr_SetSyncUpdatePeriod == NULL) { fprintf (stderr, "Could not find mir_sdr_SetSyncUpdatePeriod\n"); return; } my_mir_sdr_ApiVersion = (pfn_mir_sdr_ApiVersion) GETPROCADDRESS (Handle, "mir_sdr_ApiVersion"); if (my_mir_sdr_ApiVersion == NULL) { fprintf (stderr, "Could not find mir_sdr_ApiVersion\n"); return; } my_mir_sdr_Uninit = (pfn_mir_sdr_Uninit) GETPROCADDRESS (Handle, "mir_sdr_Uninit"); if (my_mir_sdr_Uninit == NULL) { fprintf (stderr, "Could not find mir_sdr_Uninit\n"); return; } // my_mir_sdr_ResetUpdateFlags = (pfn_mir_sdr_ResetUpdateFlags) // GETPROCADDRESS (Handle, "mir_sdr_ResetUpdateFlags"); // if (my_mir_sdr_ResetUpdateFlags == NULL) { // fprintf (stderr, "Could not find mir_sdr_ResetUpdateFlags\n"); // return; // } fprintf (stderr, "Functions seem to be loaded\n"); *success = true; // // If one wishes to link to the ".a", this is the way // my_mir_sdr_Init = (pfn_mir_sdr_Init)&mir_sdr_Init; // my_mir_sdr_Uninit = (pfn_mir_sdr_Uninit) &mir_sdr_Uninit; // my_mir_sdr_ReadPacket = (pfn_mir_sdr_ReadPacket) &mir_sdr_ReadPacket; // my_mir_sdr_SetRf = (pfn_mir_sdr_SetRf) &mir_sdr_SetRf; // my_mir_sdr_SetFs = (pfn_mir_sdr_SetFs) &mir_sdr_SetFs; // my_mir_sdr_SetGr = (pfn_mir_sdr_SetGr) &mir_sdr_SetGr; // my_mir_sdr_SetGrParams = (pfn_mir_sdr_SetGrParams) &mir_sdr_SetGrParams; // my_mir_sdr_SetDcMode = (pfn_mir_sdr_SetDcMode) &mir_sdr_SetDcMode; // my_mir_sdr_SetDcTrackTime = (pfn_mir_sdr_SetDcTrackTime) // &mir_sdr_SetDcTrackTime; // my_mir_sdr_SetSyncUpdateSampleNum = (pfn_mir_sdr_SetSyncUpdateSampleNum) // &mir_sdr_SetSyncUpdateSampleNum; // my_mir_sdr_SetSyncUpdatePeriod = (pfn_mir_sdr_SetSyncUpdatePeriod) // &mir_sdr_SetSyncUpdatePeriod; // my_mir_sdr_ApiVersion = (pfn_mir_sdr_ApiVersion) &mir_sdr_ApiVersion; //// my_mir_sdr_ResetUpdateFlags = (pfn_mir_sdr_ResetUpdateFlags) //// &mir_sdr_ResetUpdateFlags; }
static void Init (void) { static const char *fragShaderText = "uniform float time;\n" "varying vec3 position;\n" "void main () {\n" " gl_FragColor = vec4 (vec3 (0.5 + 0.5 * noise1 (vec4 (position, time))), 1.0);\n" "}\n" ; static const char *vertShaderText = "varying vec3 position;\n" "void main () {\n" " gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;\n" " position = 4.0 * gl_Vertex.xyz;\n" "}\n" ; if (!glutExtensionSupported ("GL_ARB_fragment_shader")) { printf ("Sorry, this demo requires GL_ARB_fragment_shader\n"); exit(1); } if (!glutExtensionSupported ("GL_ARB_shader_objects")) { printf ("Sorry, this demo requires GL_ARB_shader_objects\n"); exit(1); } if (!glutExtensionSupported ("GL_ARB_shading_language_100")) { printf ("Sorry, this demo requires GL_ARB_shading_language_100\n"); exit(1); } if (!glutExtensionSupported ("GL_ARB_vertex_shader")) { printf ("Sorry, this demo requires GL_ARB_vertex_shader\n"); exit(1); } glCreateShaderObjectARB = (PFNGLCREATESHADEROBJECTARBPROC) GETPROCADDRESS("glCreateShaderObjectARB"); glShaderSourceARB = (PFNGLSHADERSOURCEARBPROC) GETPROCADDRESS("glShaderSourceARB"); glCompileShaderARB = (PFNGLCOMPILESHADERARBPROC) GETPROCADDRESS("glCompileShaderARB"); glCreateProgramObjectARB = (PFNGLCREATEPROGRAMOBJECTARBPROC) GETPROCADDRESS("glCreateProgramObjectARB"); glAttachObjectARB = (PFNGLATTACHOBJECTARBPROC) GETPROCADDRESS("glAttachObjectARB"); glLinkProgramARB = (PFNGLLINKPROGRAMARBPROC) GETPROCADDRESS ("glLinkProgramARB"); glUseProgramObjectARB = (PFNGLUSEPROGRAMOBJECTARBPROC) GETPROCADDRESS("glUseProgramObjectARB"); glGetUniformLocationARB = (PFNGLGETUNIFORMLOCATIONARBPROC) GETPROCADDRESS("glGetUniformLocationARB"); glUniform1fARB = (PFNGLUNIFORM1FARBPROC) GETPROCADDRESS("glUniform1fARB"); fragShader = glCreateShaderObjectARB (GL_FRAGMENT_SHADER_ARB); glShaderSourceARB (fragShader, 1, &fragShaderText, NULL); glCompileShaderARB (fragShader); vertShader = glCreateShaderObjectARB (GL_VERTEX_SHADER_ARB); glShaderSourceARB (vertShader, 1, &vertShaderText, NULL); glCompileShaderARB (vertShader); program = glCreateProgramObjectARB (); glAttachObjectARB (program, fragShader); glAttachObjectARB (program, vertShader); glLinkProgramARB (program); glUseProgramObjectARB (program); uTime = glGetUniformLocationARB (program, "time"); glClearColor (0.0f, 0.1f, 0.3f, 1.0f); glEnable (GL_CULL_FACE); glEnable (GL_DEPTH_TEST); printf ("GL_RENDERER = %s\n", (const char *) glGetString (GL_RENDERER)); }
bool airspyHandler::load_airspyFunctions (void) { // // link the required procedures my_airspy_init = (pfn_airspy_init) GETPROCADDRESS (Handle, "airspy_init"); if (my_airspy_init == NULL) { fprintf (stderr, "Could not find airspy_init\n"); return false; } my_airspy_exit = (pfn_airspy_exit) GETPROCADDRESS (Handle, "airspy_exit"); if (my_airspy_exit == NULL) { fprintf (stderr, "Could not find airspy_exit\n"); return false; } my_airspy_open = (pfn_airspy_open) GETPROCADDRESS (Handle, "airspy_open"); if (my_airspy_open == NULL) { fprintf (stderr, "Could not find airspy_open\n"); return false; } my_airspy_close = (pfn_airspy_close) GETPROCADDRESS (Handle, "airspy_close"); if (my_airspy_close == NULL) { fprintf (stderr, "Could not find airspy_close\n"); return false; } my_airspy_get_samplerates = (pfn_airspy_get_samplerates) GETPROCADDRESS (Handle, "airspy_get_samplerates"); if (my_airspy_get_samplerates == NULL) { fprintf (stderr, "Could not find airspy_get_samplerates\n"); return false; } my_airspy_set_samplerate = (pfn_airspy_set_samplerate) GETPROCADDRESS (Handle, "airspy_set_samplerate"); if (my_airspy_set_samplerate == NULL) { fprintf (stderr, "Could not find airspy_set_samplerate\n"); return false; } my_airspy_start_rx = (pfn_airspy_start_rx) GETPROCADDRESS (Handle, "airspy_start_rx"); if (my_airspy_start_rx == NULL) { fprintf (stderr, "Could not find airspy_start_rx\n"); return false; } my_airspy_stop_rx = (pfn_airspy_stop_rx) GETPROCADDRESS (Handle, "airspy_stop_rx"); if (my_airspy_stop_rx == NULL) { fprintf (stderr, "Could not find airspy_stop_rx\n"); return false; } my_airspy_set_sample_type = (pfn_airspy_set_sample_type) GETPROCADDRESS (Handle, "airspy_set_sample_type"); if (my_airspy_set_sample_type == NULL) { fprintf (stderr, "Could not find airspy_set_sample_type\n"); return false; } my_airspy_set_freq = (pfn_airspy_set_freq) GETPROCADDRESS (Handle, "airspy_set_freq"); if (my_airspy_set_freq == NULL) { fprintf (stderr, "Could not find airspy_set_freq\n"); return false; } my_airspy_set_lna_gain = (pfn_airspy_set_lna_gain) GETPROCADDRESS (Handle, "airspy_set_lna_gain"); if (my_airspy_set_lna_gain == NULL) { fprintf (stderr, "Could not find airspy_set_lna_gain\n"); return false; } my_airspy_set_mixer_gain = (pfn_airspy_set_mixer_gain) GETPROCADDRESS (Handle, "airspy_set_mixer_gain"); if (my_airspy_set_mixer_gain == NULL) { fprintf (stderr, "Could not find airspy_set_mixer_gain\n"); return false; } my_airspy_set_vga_gain = (pfn_airspy_set_vga_gain) GETPROCADDRESS (Handle, "airspy_set_vga_gain"); if (my_airspy_set_vga_gain == NULL) { fprintf (stderr, "Could not find airspy_set_vga_gain\n"); return false; } my_airspy_set_linearity_gain = (pfn_airspy_set_linearity_gain) GETPROCADDRESS (Handle, "airspy_set_linearity_gain"); if (my_airspy_set_linearity_gain == NULL) { fprintf (stderr, "Could not find airspy_set_linearity_gain\n"); fprintf (stderr, "You probably did not install 1.0.7 yet\n"); return false; } my_airspy_set_sensitivity_gain = (pfn_airspy_set_sensitivity_gain) GETPROCADDRESS (Handle, "airspy_set_sensitivity_gain"); if (my_airspy_set_sensitivity_gain == NULL) { fprintf (stderr, "Could not find airspy_set_sensitivity_gain\n"); fprintf (stderr, "You probably did not install 1.0.7 yet\n"); return false; } my_airspy_set_lna_agc = (pfn_airspy_set_lna_agc) GETPROCADDRESS (Handle, "airspy_set_lna_agc"); if (my_airspy_set_lna_agc == NULL) { fprintf (stderr, "Could not find airspy_set_lna_agc\n"); return false; } my_airspy_set_mixer_agc = (pfn_airspy_set_mixer_agc) GETPROCADDRESS (Handle, "airspy_set_mixer_agc"); if (my_airspy_set_mixer_agc == NULL) { fprintf (stderr, "Could not find airspy_set_mixer_agc\n"); return false; } my_airspy_set_rf_bias = (pfn_airspy_set_rf_bias) GETPROCADDRESS (Handle, "airspy_set_rf_bias"); if (my_airspy_set_rf_bias == NULL) { fprintf (stderr, "Could not find airspy_set_rf_bias\n"); return false; } my_airspy_error_name = (pfn_airspy_error_name) GETPROCADDRESS (Handle, "airspy_error_name"); if (my_airspy_error_name == NULL) { fprintf (stderr, "Could not find airspy_error_name\n"); return false; } my_airspy_board_id_read = (pfn_airspy_board_id_read) GETPROCADDRESS (Handle, "airspy_board_id_read"); if (my_airspy_board_id_read == NULL) { fprintf (stderr, "Could not find airspy_board_id_read\n"); return false; } my_airspy_board_id_name = (pfn_airspy_board_id_name) GETPROCADDRESS (Handle, "airspy_board_id_name"); if (my_airspy_board_id_name == NULL) { fprintf (stderr, "Could not find airspy_board_id_name\n"); return false; } my_airspy_board_partid_serialno_read = (pfn_airspy_board_partid_serialno_read) GETPROCADDRESS (Handle, "airspy_board_partid_serialno_read"); if (my_airspy_board_partid_serialno_read == NULL) { fprintf (stderr, "Could not find airspy_board_partid_serialno_read\n"); return false; } return true; }
static void oleload() { JSetB=(JSetBType)GETPROCADDRESS((HMODULE)hjdll,"JSetB"); JDo=(JDoType)GETPROCADDRESS((HMODULE)hjdll,"JDo"); JBreak=(JBreakType)GETPROCADDRESS((HMODULE)hjdll,"JBreak"); JIsBusy=(JIsBusyType)GETPROCADDRESS((HMODULE)hjdll,"JIsBusy"); JGet=(JGetType)GETPROCADDRESS((HMODULE)hjdll,"JGet"); JSet=(JSetType)GETPROCADDRESS((HMODULE)hjdll,"JSet"); JGetM=(JGetMType)GETPROCADDRESS((HMODULE)hjdll,"JGetM"); JSetM=(JSetMType)GETPROCADDRESS((HMODULE)hjdll,"JSetM"); JErrorText=(JErrorTextType)GETPROCADDRESS((HMODULE)hjdll,"JErrorText"); JErrorTextM=(JErrorTextMType)GETPROCADDRESS((HMODULE)hjdll,"JErrorTextM"); JClear=(JClearType)GETPROCADDRESS((HMODULE)hjdll,"JClear"); JShow=(JShowType)GETPROCADDRESS((HMODULE)hjdll,"JShow"); JLog=(JLogType)GETPROCADDRESS((HMODULE)hjdll,"JLog"); JQuit=(JQuitType)GETPROCADDRESS((HMODULE)hjdll,"JQuit"); JTranspose=(JTransposeType)GETPROCADDRESS((HMODULE)hjdll,"JTranspose"); JErrorTextB=(JErrorTextBType)GETPROCADDRESS((HMODULE)hjdll,"JErrorTextB"); JGetB=(JGetBType)GETPROCADDRESS((HMODULE)hjdll,"JGetB"); JSetB=(JSetBType)GETPROCADDRESS((HMODULE)hjdll,"JSetB"); JDoR=(JDoRType)GETPROCADDRESS((HMODULE)hjdll,"JDoR"); }
int InitializeFirefoxLibrary(char *firefoxPath) { libnss = libplc = NULL; // First load the libraries from firefox path. if( firefoxPath != NULL ) { // Load all the libraries from the leaf to the root..in the dependency list. if( LoadLibrary2(firefoxPath, NSPR_LIBRARY_NAME) ) { if((libplc=LoadLibrary2(firefoxPath, PLC_LIBRARY_NAME)) ) { if( LoadLibrary2(firefoxPath, PLDS_LIBRARY_NAME) ) { if( LoadLibrary2(firefoxPath, SOFTN_LIBRARY_NAME) ) { libnss=LoadLibrary2(firefoxPath, NSS_LIBRARY_NAME); //if( libnss ) // ; //DisplayMesg(TYPE_DEBUG, "\n\n Library loaded from firefox path successfully "); } } } } } // Now load from current path. if( !libnss ) { //DisplayMesg(TYPE_DEBUG, "\n Loading library from current directory"); // libnss =LOADLIBRARY(NSS_LIBRARY_NAME); libnss = LoadLibrary2(firefoxPath, NSS_LIBRARY_NAME); // libplc =LOADLIBRARY(PLC_LIBRARY_NAME); libplc = LoadLibrary2(firefoxPath, PLC_LIBRARY_NAME); if( !libnss || !libplc ) { //DisplayMesg(TYPE_ERROR, "\n\n Failed to load Firefox libraries %s & %s ", NSS_LIBRARY_NAME, PLC_LIBRARY_NAME); return 0; } } //DisplayMesg(TYPE_DEBUG, "\n Firefox Libraries loaded successfully.."); // Extract the required functions.... NSSInit = (NSS_Init) GETPROCADDRESS(libnss, "NSS_Init"); NSSShutdown = (NSS_Shutdown)GETPROCADDRESS(libnss, "NSS_Shutdown"); PK11GetInternalKeySlot = (PK11_GetInternalKeySlot) GETPROCADDRESS(libnss, "PK11_GetInternalKeySlot"); PK11FreeSlot = (PK11_FreeSlot) GETPROCADDRESS(libnss, "PK11_FreeSlot"); PK11Authenticate = (PK11_Authenticate) GETPROCADDRESS(libnss, "PK11_Authenticate"); PK11SDRDecrypt = (PK11SDR_Decrypt) GETPROCADDRESS(libnss, "PK11SDR_Decrypt"); PK11CheckUserPassword = (PK11_CheckUserPassword ) GETPROCADDRESS(libnss, "PK11_CheckUserPassword"); if( !NSSInit || !NSSShutdown || !PK11GetInternalKeySlot || !PK11Authenticate || !PK11SDRDecrypt || !PK11FreeSlot || !PK11CheckUserPassword) { //DisplayMesg(TYPE_ERROR, "\n\n Failed to get function address from library %s ", NSS_LIBRARY_NAME); TerminateFirefoxLibrary(); return 0; } // Get the functions from PLC library PLBase64Decode = ( PL_Base64Decode ) GETPROCADDRESS(libplc, "PL_Base64Decode"); if( !PLBase64Decode ) { //DisplayMesg(TYPE_ERROR, "\n\n Failed to get function address from library %s ", PLC_LIBRARY_NAME); TerminateFirefoxLibrary(); return 0; } //DisplayMesg(TYPE_DEBUG, "\n Firefox library initialized successfully.."); return 1; }
int main(int argc, char *argv[]) { HANDLE hDLL = LoadLibrary(L"7-zip32"); if (hDLL != NULL){ GETPROCADDRESS(WINAPI_SEVENZIP, hZip, "SevenZip"); GETPROCADDRESS(WINAPI_SEVENZIPGETVERSION, hVersion, "SevenZipGetVersion"); GETPROCADDRESS(WINAPI_SEVENZIPGETSUBVERSION, hSubVersion, "SevenZipGetSubVersion"); GETPROCADDRESS(WINAPI_SEVENZIPCHECKARCHIVE, hChkFunc, "SevenZipCheckArchive"); GETPROCADDRESS(WINAPI_SEVENZIPGETARCHIVETYPE, hArchTypeFunc, "SevenZipGetArchiveType"); GETPROCADDRESS(WINAPI_SEVENZIPOPENARCHIVE, hOpenFunc, "SevenZipOpenArchive"); GETPROCADDRESS(WINAPI_SEVENZIPCLOSEARCHIVE, hCloseFunc, "SevenZipCloseArchive"); GETPROCADDRESS(WINAPI_SEVENZIPSETDEFAULTPASSWORD, hSetDefPasswd, "SevenZipSetDefaultPassword"); GETPROCADDRESS(WINAPI_SEVENZIPGETFILECOUNT, hFileCount, "SevenZipGetFileCount"); GETPROCADDRESS(WINAPI_SEVENZIPGETATTRIBUTE, hAttribute, "SevenZipGetAttribute"); GETPROCADDRESS(WINAPI_SEVENZIPQUERYFUNCTIONLIST, hQueryFunc, "SevenZipQueryFunctionList"); DWORD dwVersion; dwVersion = hVersion(); DWORD dwSubVersion; dwSubVersion = hSubVersion(); /* 256*3+16*9+8 = 920 -> 9.20 */ DWORD dwHi = dwVersion & 0x0000ffff; g_print("%08lx\n", dwHi); DWORD dwLow = (dwSubVersion & 0x0000ffff); g_print("%08lx\n", dwLow); BOOL bCheck; int nType; HARC hArch; int nAttr; int nResult; bCheck = hQueryFunc(ISARC_GET_ATTRIBUTE); g_print("bCheck:%08x\n", bCheck); char buf[1024]; DWORD dwSize = 0; { nResult = hZip(NULL, "x hpasswd.7z -aoa -p\"foo\" -hide -oc:\\Temp\\7zip -r", buf, dwSize); g_print("hpasswd.7z invalid password nResult:%08x\n", nResult); } { nResult = hZip(NULL, "x hpasswd.7z -aoa -p\"\" -hide -oc:\\Temp\\7zip -r", buf, dwSize); g_print("hpasswd.7z blank password nResult:%08x\n", nResult); } { nResult = hZip(NULL, "x hpasswd.7z -aoa -p\"test\" -hide -oc:\\Temp\\7zip -r", buf, dwSize); g_print("hpasswd.7z test password nResult:%08x\n", nResult); } { nResult = hZip(NULL, "x passwd.7z -aoa -p\"foo\" -hide -oc:\\Temp\\7zip -r", buf, dwSize); g_print("passwd.7z invalid password passwd.7z nResult:%08x\n", nResult); nResult = hZip(NULL, "x passwd.7z -aoa -p\"test\" -hide -oc:\\Temp\\7zip -r", buf, dwSize); g_print("passwd.7z test password passwd.7z nResult:%08x\n", nResult); nResult = hZip(NULL, "x passwd.7z -aoa -p\"\" -hide -oc:\\Temp\\7zip -r", buf, dwSize); g_print("passwd.7z blank password passwd.7z nResult:%08x\n", nResult); } { nResult = hZip(NULL, "x passwd.zip -aoa -p\"\" -hide -oc:\\Temp\\7zip -r", buf, dwSize); g_print("passwd.zip blank password nResult:%08x\n", nResult); nResult = hZip(NULL, "x passwd.zip -aoa -p\"test\" -hide -oc:\\Temp\\7zip -r", buf, dwSize); g_print("passwd.zip test password nResult:%08x\n", nResult); nResult = hZip(NULL, "x passwd.zip -aoa -p\"foo\" -hide -oc:\\Temp\\7zip -r", buf, dwSize); g_print("passwd.zip invalid password nResult:%08x\n", nResult); } { nResult = hZip(NULL, "x nopasswd.zip -aoa -p\"\" -hide -oc:\\Temp\\7zip -r", buf, dwSize); g_print("nopasswd.zip blank password nResult:%08x\n", nResult); nResult = hZip(NULL, "x nopasswd.zip -aoa -p\"foo\" -hide -oc:\\Temp\\7zip -r", buf, dwSize); g_print("nopasswd.zip invalid password nResult:%08x\n", nResult); nResult = hZip(NULL, "x nopasswd.zip -aoa -hide -oc:\\Temp\\7zip -r", buf, dwSize); g_print("nopasswd.zip no password nResult:%08x\n", nResult); } { nResult = hZip(NULL, "x passwd2.zip -aoa -p\"\" -hide -oc:\\Temp\\7zip -r-", buf, dwSize); g_print("passwd2.zip blank password nResult:%08x\n", nResult); nResult = hZip(NULL, "x passwd2.zip -aoa -p\"foo\" -hide -oc:\\Temp\\7zip -r-", buf, dwSize); g_print("passwd2.zip invalid password nResult:%08x\n", nResult); nResult = hZip(NULL, "x passwd2.zip -aoa -p\"test\" -hide -oc:\\Temp\\7zip -r-", buf, dwSize); g_print("passwd2.zip no password nResult:%08x\n", nResult); } return 0; { /* * check hpasswd.7z */ nResult = hSetDefPasswd(NULL, "test"); hArch = hOpenFunc(NULL, "hpasswd.7z", M_ERROR_MESSAGE_OFF|M_BAR_WINDOW_OFF); if (hArch != NULL){ bCheck = hChkFunc("hpasswd.7z", CHECKARCHIVE_BASIC); nType = hArchTypeFunc("hpasswd.7z"); nAttr = hAttribute(hArch); /*hArch = hOpenFunc(NULL, "hpasswd.7z", 0);*/ g_print("nResult:%08x\n", nResult); g_print("bCheck:%08x\n", bCheck); g_print("nType:%08x\n", nType); g_print("nAttr:%08x\n", nAttr); if (hArch != NULL && (nAttr & 0x40)){ g_print("may be header encrypted\n"); } hCloseFunc(hArch); }else{ g_print("?\n"); } } { /* * check passwd.7z */ bCheck = hChkFunc("passwd.7z", CHECKARCHIVE_BASIC); nType = hArchTypeFunc("passwd.7z"); hArch = hOpenFunc(NULL, "passwd.7z", 0); nAttr = hAttribute(hArch); g_print("nAttr:%08x\n", nAttr); if (bCheck == TRUE && nType == 2 && hArch != NULL && nAttr & 0x40){ g_print("passwd.7z password encrypted\n"); } hCloseFunc(hArch); } { /* * check passwd.zip */ nResult = hSetDefPasswd(NULL, "foo"); bCheck = hChkFunc("passwd.zip", CHECKARCHIVE_BASIC); nType = hArchTypeFunc("passwd.zip"); hArch = hOpenFunc(NULL, "passwd.zip", 0); g_print("hArch:%p\n", hArch); nAttr = hAttribute(hArch); g_print("bCheck:%08x\n", bCheck); g_print("nType:%08x\n", nType); g_print("nAttr:%08x\n", nAttr); if (bCheck == TRUE && nType == 1 && hArch != NULL && nAttr & 0x40){ g_print("passwd.zip password encrypted\n"); } hCloseFunc(hArch); } { /* * check nopasswd.zip */ nResult = hSetDefPasswd(NULL, "foo"); bCheck = hChkFunc("nopasswd.zip", CHECKARCHIVE_BASIC); nType = hArchTypeFunc("nopasswd.zip"); hArch = hOpenFunc(NULL, "nopasswd.zip", 0); g_print("hArch:%p\n", hArch); nAttr = hAttribute(hArch); g_print("bCheck:%08x\n", bCheck); g_print("nType:%08x\n", nType); g_print("nAttr:%08x\n", nAttr); if (bCheck == TRUE && nType == 1 && hArch != NULL && nAttr & 0x40){ g_print("nopasswd.zip password encrypted\n"); } } return 0; } return 0; }
static void Init (void) { static const char *fragShaderText = "uniform vec3 lightPos;\n" "uniform vec4 diffuse;\n" "uniform vec4 specular;\n" "varying vec3 normal;\n" "void main () {\n" " // Compute dot product of light direction and normal vector\n" " float dotProd = max (dot (lightPos, normalize (normal)), 0.0);\n" " // Compute diffuse and specular contributions\n" #if 1 " gl_FragColor = diffuse * dotProd + specular * pow (dotProd, 20.0);\n" #elif 1 /* test IF/ELSE/ENDIF */ " if (normal.y > 0.0) { \n" " gl_FragColor = diffuse * dotProd + specular * pow (dotProd, 20.0);\n" " } \n" " else { \n" " if (normal.x < 0.0) { \n" " gl_FragColor = vec4(1, 0, 0, 0); \n" " } \n" " else { \n" " gl_FragColor = vec4(1, 1, 0, 0); \n" " } \n" " } \n" #elif 1 /* test LOOP */ " while (1) { \n" " if (normal.y >= 0.0) { \n" " gl_FragColor = vec4(1, 0, 0, 0); \n" " break; \n" " } else { \n" " gl_FragColor = diffuse * dotProd + specular * pow (dotProd, 20.0);\n" " break; \n" " } \n" " } \n" #endif "}\n" ; static const char *vertShaderText = "varying vec3 normal;\n" "void main () {\n" " gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;\n" " normal = gl_NormalMatrix * gl_Normal;\n" "}\n" ; if (!glutExtensionSupported ("GL_ARB_fragment_shader")) { printf ("Sorry, this demo requires GL_ARB_fragment_shader\n"); exit(1); } if (!glutExtensionSupported ("GL_ARB_shader_objects")) { printf ("Sorry, this demo requires GL_ARB_shader_objects\n"); exit(1); } if (!glutExtensionSupported ("GL_ARB_shading_language_100")) { printf ("Sorry, this demo requires GL_ARB_shading_language_100\n"); exit(1); } if (!glutExtensionSupported ("GL_ARB_vertex_shader")) { printf ("Sorry, this demo requires GL_ARB_vertex_shader\n"); exit(1); } glCreateShaderObjectARB = (PFNGLCREATESHADEROBJECTARBPROC) GETPROCADDRESS ("glCreateShaderObjectARB"); glShaderSourceARB = (PFNGLSHADERSOURCEARBPROC) GETPROCADDRESS ("glShaderSourceARB"); glCompileShaderARB = (PFNGLCOMPILESHADERARBPROC) GETPROCADDRESS ("glCompileShaderARB"); glCreateProgramObjectARB = (PFNGLCREATEPROGRAMOBJECTARBPROC) GETPROCADDRESS ("glCreateProgramObjectARB"); glAttachObjectARB = (PFNGLATTACHOBJECTARBPROC) GETPROCADDRESS ("glAttachObjectARB"); glLinkProgramARB = (PFNGLLINKPROGRAMARBPROC) GETPROCADDRESS ("glLinkProgramARB"); glUseProgramObjectARB = (PFNGLUSEPROGRAMOBJECTARBPROC) GETPROCADDRESS ("glUseProgramObjectARB"); glGetUniformLocationARB = (PFNGLGETUNIFORMLOCATIONARBPROC) GETPROCADDRESS ("glGetUniformLocationARB"); glUniform3fvARB = (PFNGLUNIFORM3FVARBPROC) GETPROCADDRESS ("glUniform3fvARB"); glUniform4fvARB = (PFNGLUNIFORM3FVARBPROC) GETPROCADDRESS ("glUniform4fvARB"); fragShader = glCreateShaderObjectARB (GL_FRAGMENT_SHADER_ARB); glShaderSourceARB (fragShader, 1, &fragShaderText, NULL); glCompileShaderARB (fragShader); vertShader = glCreateShaderObjectARB (GL_VERTEX_SHADER_ARB); glShaderSourceARB (vertShader, 1, &vertShaderText, NULL); glCompileShaderARB (vertShader); program = glCreateProgramObjectARB (); glAttachObjectARB (program, fragShader); glAttachObjectARB (program, vertShader); glLinkProgramARB (program); glUseProgramObjectARB (program); uLightPos = glGetUniformLocationARB (program, "lightPos"); uDiffuse = glGetUniformLocationARB (program, "diffuse"); uSpecular = glGetUniformLocationARB (program, "specular"); glUniform4fvARB (uDiffuse, 1, diffuse); glUniform4fvARB (uSpecular, 1, specular); glClearColor (0.3f, 0.3f, 0.3f, 0.0f); glEnable (GL_DEPTH_TEST); glEnable (GL_LIGHT0); glEnable (GL_LIGHTING); glMaterialfv (GL_FRONT_AND_BACK, GL_DIFFUSE, diffuse); glMaterialfv (GL_FRONT_AND_BACK, GL_SPECULAR, specular); glMaterialf (GL_FRONT_AND_BACK, GL_SHININESS, 20.0f); printf ("GL_RENDERER = %s\n", (const char *) glGetString (GL_RENDERER)); printf ("Press p to toggle between per-pixel and per-vertex lighting\n"); }