/** * @brief Loads the OpenAL extension methods needed for echo cancellation * @param dev OpenAL device used for the output * @return True when functions successfully loaded, false otherwise */ bool OpenAL2::loadOpenALExtensions(ALCdevice* dev) { // load OpenAL extension functions GET_PROC_ADDR(dev, alcLoopbackOpenDeviceSOFT); checkAlcError(dev); if (!alcLoopbackOpenDeviceSOFT) { qDebug() << "Failed to load alcLoopbackOpenDeviceSOFT function!"; return false; } GET_PROC_ADDR(dev, alcIsRenderFormatSupportedSOFT); checkAlcError(dev); if (!alcIsRenderFormatSupportedSOFT) { qDebug() << "Failed to load alcIsRenderFormatSupportedSOFT function!"; return false; } GET_PROC_ADDR(dev, alGetSourcedvSOFT); checkAlcError(dev); if (!alGetSourcedvSOFT) { qDebug() << "Failed to load alGetSourcedvSOFT function!"; return false; } GET_PROC_ADDR(dev, alcRenderSamplesSOFT); checkAlcError(dev); if (!alcRenderSamplesSOFT) { qDebug() << "Failed to load alcRenderSamplesSOFT function!"; return false; } return true; }
void inject_init() { HANDLE kern32 = get_module_handle(L"KERNEL32.DLL"); ASSERT(kern32 != NULL); addr_getprocaddr = (ptr_uint_t) GET_PROC_ADDR(kern32, "GetProcAddress"); ASSERT(addr_getprocaddr != 0); addr_loadlibrarya = (ptr_uint_t) GET_PROC_ADDR(kern32, "LoadLibraryA"); ASSERT(addr_loadlibrarya != 0); # ifdef LOAD_DYNAMO_DEBUGBREAK addr_debugbreak = (ptr_uint_t) GET_PROC_ADDR(kern32, "DebugBreak"); ASSERT(addr_debugbreak != NULL); # endif inject_initialized = true; }
bool EnablePrivilege(LPCTSTR privilegeName, bool enable) { bool res = false; #ifndef _UNICODE HMODULE hModule = ::LoadLibrary(TEXT("Advapi32.dll")); if (hModule == NULL) return false; GET_PROC_ADDR(OpenProcessToken, "OpenProcessToken"); GET_PROC_ADDR(LookupPrivilegeValue, "LookupPrivilegeValueA"); GET_PROC_ADDR(AdjustTokenPrivileges, "AdjustTokenPrivileges"); if (my_OpenProcessToken && my_AdjustTokenPrivileges && my_LookupPrivilegeValue) #endif { HANDLE token; if (MY_FUNC_SELECT(OpenProcessToken)(::GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &token)) { TOKEN_PRIVILEGES tp; if (MY_FUNC_SELECT(LookupPrivilegeValue)(NULL, privilegeName, &(tp.Privileges[0].Luid))) { tp.PrivilegeCount = 1; tp.Privileges[0].Attributes = (enable ? SE_PRIVILEGE_ENABLED : 0); if (MY_FUNC_SELECT(AdjustTokenPrivileges)(token, FALSE, &tp, 0, NULL, NULL)) res = (GetLastError() == ERROR_SUCCESS); } ::CloseHandle(token); } } #ifndef _UNICODE ::FreeLibrary(hModule); #endif return res; }
bool CSensorUSBPhidgets::setupFunctionPointers() { #ifdef __USE_DYLIB__ std::string strPath; // setup DLL path, if returns false then DLL doesn't exist at the path where it should if (!qcn_util::setDLLPath(strPath, m_cstrDLL)) { fprintf(stderr, "Phidgets1056: Cannot set DLL Path %s\n", m_cstrDLL); closePort(); return false; } #ifdef __USE_DLOPEN__ m_handleLibrary = dlopen(strPath.c_str(), RTLD_LAZY | RTLD_GLOBAL); // default if (!m_handleLibrary) { fprintf(stderr, "CSensorUSBPhidgets: dynamic library %s dlopen error %s\n", m_cstrDLL, dlerror()); return false; } #else // for Windows or not using dlopen just use the direct phidget lib m_handleLibrary = ::LoadLibrary(strPath.c_str()); #endif #endif #ifdef __USE_DYLIB__ if (!m_handleLibrary) return false; m_PtrCPhidget_open = (PtrCPhidget_open) GET_PROC_ADDR(m_handleLibrary, "CPhidget_open"); m_PtrCPhidget_close = (PtrCPhidget_close) GET_PROC_ADDR(m_handleLibrary, "CPhidget_close"); m_PtrCPhidget_delete = (PtrCPhidget_delete) GET_PROC_ADDR(m_handleLibrary, "CPhidget_delete"); m_PtrCPhidget_getDeviceName = (PtrCPhidget_getDeviceName) GET_PROC_ADDR(m_handleLibrary, "CPhidget_getDeviceName"); m_PtrCPhidget_getSerialNumber = (PtrCPhidget_getSerialNumber) GET_PROC_ADDR(m_handleLibrary, "CPhidget_getSerialNumber"); m_PtrCPhidget_getDeviceVersion = (PtrCPhidget_getDeviceVersion) GET_PROC_ADDR(m_handleLibrary, "CPhidget_getDeviceVersion"); m_PtrCPhidget_getDeviceStatus = (PtrCPhidget_getDeviceStatus) GET_PROC_ADDR(m_handleLibrary, "CPhidget_getDeviceStatus"); m_PtrCPhidget_getLibraryVersion = (PtrCPhidget_getLibraryVersion) GET_PROC_ADDR(m_handleLibrary, "CPhidget_getLibraryVersion"); m_PtrCPhidget_getDeviceType = (PtrCPhidget_getDeviceType) GET_PROC_ADDR(m_handleLibrary, "CPhidget_getDeviceType"); m_PtrCPhidget_getDeviceLabel = (PtrCPhidget_getDeviceLabel) GET_PROC_ADDR(m_handleLibrary, "CPhidget_getDeviceLabel"); m_PtrCPhidget_set_OnAttach_Handler = (PtrCPhidget_set_OnAttach_Handler) GET_PROC_ADDR(m_handleLibrary, "CPhidget_set_OnAttach_Handler"); m_PtrCPhidget_set_OnDetach_Handler = (PtrCPhidget_set_OnDetach_Handler) GET_PROC_ADDR(m_handleLibrary, "CPhidget_set_OnDetach_Handler"); m_PtrCPhidget_set_OnError_Handler = (PtrCPhidget_set_OnError_Handler) GET_PROC_ADDR(m_handleLibrary, "CPhidget_set_OnError_Handler"); m_PtrCPhidget_getErrorDescription = (PtrCPhidget_getErrorDescription) GET_PROC_ADDR(m_handleLibrary, "CPhidget_getErrorDescription"); m_PtrCPhidget_waitForAttachment = (PtrCPhidget_waitForAttachment) GET_PROC_ADDR(m_handleLibrary, "CPhidget_waitForAttachment"); m_PtrCPhidgetSpatial_create = (PtrCPhidgetSpatial_create) GET_PROC_ADDR(m_handleLibrary, "CPhidgetSpatial_create"); m_PtrCPhidgetSpatial_getAccelerationAxisCount = (PtrCPhidgetSpatial_getAccelerationAxisCount) GET_PROC_ADDR(m_handleLibrary, "CPhidgetSpatial_getAccelerationAxisCount"); m_PtrCPhidgetSpatial_getGyroAxisCount = (PtrCPhidgetSpatial_getGyroAxisCount) GET_PROC_ADDR(m_handleLibrary, "CPhidgetSpatial_getGyroAxisCount"); m_PtrCPhidgetSpatial_getCompassAxisCount = (PtrCPhidgetSpatial_getCompassAxisCount) GET_PROC_ADDR(m_handleLibrary, "CPhidgetSpatial_getCompassAxisCount"); m_PtrCPhidgetSpatial_getAcceleration = (PtrCPhidgetSpatial_getAcceleration) GET_PROC_ADDR(m_handleLibrary, "CPhidgetSpatial_getAcceleration"); m_PtrCPhidgetSpatial_getAccelerationMax = (PtrCPhidgetSpatial_getAccelerationMax) GET_PROC_ADDR(m_handleLibrary, "CPhidgetSpatial_getAccelerationMax"); m_PtrCPhidgetSpatial_getAccelerationMin = (PtrCPhidgetSpatial_getAccelerationMin) GET_PROC_ADDR(m_handleLibrary, "CPhidgetSpatial_getAccelerationMin"); m_PtrCPhidgetSpatial_getDataRate = (PtrCPhidgetSpatial_getDataRate) GET_PROC_ADDR(m_handleLibrary, "CPhidgetSpatial_getDataRate"); m_PtrCPhidgetSpatial_setDataRate = (PtrCPhidgetSpatial_setDataRate) GET_PROC_ADDR(m_handleLibrary, "CPhidgetSpatial_setDataRate"); m_PtrCPhidgetSpatial_getDataRateMax = (PtrCPhidgetSpatial_getDataRateMax) GET_PROC_ADDR(m_handleLibrary, "CPhidgetSpatial_getDataRateMax"); m_PtrCPhidgetSpatial_getDataRateMin = (PtrCPhidgetSpatial_getDataRateMin) GET_PROC_ADDR(m_handleLibrary, "CPhidgetSpatial_getDataRateMin"); m_PtrCPhidgetSpatial_set_OnSpatialData_Handler = (PtrCPhidgetSpatial_set_OnSpatialData_Handler) GET_PROC_ADDR(m_handleLibrary, "CPhidgetSpatial_set_OnSpatialData_Handler"); m_PtrCPhidget_getDeviceID = (PtrCPhidget_getDeviceID) GET_PROC_ADDR(m_handleLibrary, "CPhidget_getDeviceID"); /* m_PtrCPhidgetManager_getAttachedDevices = (PtrCPhidgetManager_getAttachedDevices) GET_PROC_ADDR(m_handleLibrary, "CPhidgetManager_getAttachedDevices"); m_PtrCPhidgetManager_freeAttachedDevicesArray = (PtrCPhidgetManager_freeAttachedDevicesArray) GET_PROC_ADDR(m_handleLibrary, "CPhidgetManager_freeAttachedDevicesArray"); m_PtrCPhidgetManager_close = (PtrCPhidgetManager_close) GET_PROC_ADDR(m_handleLibrary, "CPhidgetManager_close"); m_PtrCPhidgetManager_create = (PtrCPhidgetManager_create) GET_PROC_ADDR(m_handleLibrary, "CPhidgetManager_create"); m_PtrCPhidgetManager_open = (PtrCPhidgetManager_open) GET_PROC_ADDR(m_handleLibrary, "CPhidgetManager_open"); m_PtrCPhidgetManager_delete = (PtrCPhidgetManager_delete) GET_PROC_ADDR(m_handleLibrary, "CPhidgetManager_delete"); m_PtrCPhidgetManager_free = (PtrCPhidgetManager_free) GET_PROC_ADDR(m_handleLibrary, "CPhidgetManager_free"); */ m_PtrCPhidget_enableLogging = (PtrCPhidget_enableLogging) GET_PROC_ADDR(m_handleLibrary, "CPhidget_enableLogging"); m_PtrCPhidget_disableLogging = (PtrCPhidget_disableLogging) GET_PROC_ADDR(m_handleLibrary, "CPhidget_disableLogging"); m_PtrCPhidget_log = (PtrCPhidget_log) GET_PROC_ADDR(m_handleLibrary, "CPhidget_log"); #else // static lib - just get pointers to the function entry points m_PtrCPhidget_open = (PtrCPhidget_open) CPhidget_open; m_PtrCPhidget_close = (PtrCPhidget_close) CPhidget_close; m_PtrCPhidget_delete = (PtrCPhidget_delete) CPhidget_delete; m_PtrCPhidget_getDeviceName = (PtrCPhidget_getDeviceName) CPhidget_getDeviceName; m_PtrCPhidget_getSerialNumber = (PtrCPhidget_getSerialNumber) CPhidget_getSerialNumber; m_PtrCPhidget_getDeviceVersion = (PtrCPhidget_getDeviceVersion) CPhidget_getDeviceVersion; m_PtrCPhidget_getDeviceStatus = (PtrCPhidget_getDeviceStatus) CPhidget_getDeviceStatus; m_PtrCPhidget_getLibraryVersion = (PtrCPhidget_getLibraryVersion) CPhidget_getLibraryVersion; m_PtrCPhidget_getDeviceType = (PtrCPhidget_getDeviceType) CPhidget_getDeviceType; m_PtrCPhidget_getDeviceLabel = (PtrCPhidget_getDeviceLabel) CPhidget_getDeviceLabel; m_PtrCPhidget_set_OnAttach_Handler = (PtrCPhidget_set_OnAttach_Handler) CPhidget_set_OnAttach_Handler; m_PtrCPhidget_set_OnDetach_Handler = (PtrCPhidget_set_OnDetach_Handler) CPhidget_set_OnDetach_Handler; m_PtrCPhidget_set_OnError_Handler = (PtrCPhidget_set_OnError_Handler) CPhidget_set_OnError_Handler; m_PtrCPhidget_getErrorDescription = (PtrCPhidget_getErrorDescription) CPhidget_getErrorDescription; m_PtrCPhidget_waitForAttachment = (PtrCPhidget_waitForAttachment) CPhidget_waitForAttachment; m_PtrCPhidgetSpatial_create = (PtrCPhidgetSpatial_create) CPhidgetSpatial_create; m_PtrCPhidgetSpatial_getAccelerationAxisCount = (PtrCPhidgetSpatial_getAccelerationAxisCount) CPhidgetSpatial_getAccelerationAxisCount; m_PtrCPhidgetSpatial_getGyroAxisCount = (PtrCPhidgetSpatial_getGyroAxisCount) CPhidgetSpatial_getGyroAxisCount; m_PtrCPhidgetSpatial_getCompassAxisCount = (PtrCPhidgetSpatial_getCompassAxisCount) CPhidgetSpatial_getCompassAxisCount; m_PtrCPhidgetSpatial_getAcceleration = (PtrCPhidgetSpatial_getAcceleration) CPhidgetSpatial_getAcceleration; m_PtrCPhidgetSpatial_getAccelerationMax = (PtrCPhidgetSpatial_getAccelerationMax) CPhidgetSpatial_getAccelerationMax; m_PtrCPhidgetSpatial_getAccelerationMin = (PtrCPhidgetSpatial_getAccelerationMin) CPhidgetSpatial_getAccelerationMin; m_PtrCPhidgetSpatial_getDataRate = (PtrCPhidgetSpatial_getDataRate) CPhidgetSpatial_getDataRate; m_PtrCPhidgetSpatial_setDataRate = (PtrCPhidgetSpatial_setDataRate) CPhidgetSpatial_setDataRate; m_PtrCPhidgetSpatial_getDataRateMax = (PtrCPhidgetSpatial_getDataRateMax) CPhidgetSpatial_getDataRateMax; m_PtrCPhidgetSpatial_getDataRateMin = (PtrCPhidgetSpatial_getDataRateMin) CPhidgetSpatial_getDataRateMin; m_PtrCPhidgetSpatial_set_OnSpatialData_Handler = (PtrCPhidgetSpatial_set_OnSpatialData_Handler) CPhidgetSpatial_set_OnSpatialData_Handler; m_PtrCPhidget_getDeviceID = (PtrCPhidget_getDeviceID) CPhidget_getDeviceID; /* m_PtrCPhidgetManager_getAttachedDevices = (PtrCPhidgetManager_getAttachedDevices) CPhidgetManager_getAttachedDevices; m_PtrCPhidgetManager_freeAttachedDevicesArray = (PtrCPhidgetManager_freeAttachedDevicesArray) CPhidgetManager_freeAttachedDevicesArray; m_PtrCPhidgetManager_close = (PtrCPhidgetManager_close) CPhidgetManager_close; m_PtrCPhidgetManager_create = (PtrCPhidgetManager_create) CPhidgetManager_create; m_PtrCPhidgetManager_open = (PtrCPhidgetManager_open) CPhidgetManager_open; m_PtrCPhidgetManager_delete = (PtrCPhidgetManager_delete) CPhidgetManager_delete; m_PtrCPhidgetManager_free = (PtrCPhidgetManager_free) CPhidgetManager_free; */ m_PtrCPhidget_enableLogging = (PtrCPhidget_enableLogging) CPhidget_enableLogging; m_PtrCPhidget_disableLogging = (PtrCPhidget_disableLogging) CPhidget_disableLogging; m_PtrCPhidget_log = (PtrCPhidget_log) CPhidget_log; #endif // test that some choice functions aren't null return (bool) (m_PtrCPhidget_open && m_PtrCPhidget_close && m_PtrCPhidget_waitForAttachment && m_PtrCPhidget_set_OnAttach_Handler && m_PtrCPhidgetSpatial_getAccelerationAxisCount && m_PtrCPhidgetSpatial_getAcceleration && m_PtrCPhidgetSpatial_getDataRate); }