本文整理汇总了C++中LoadLibrary函数的典型用法代码示例。如果您正苦于以下问题:C++ LoadLibrary函数的具体用法?C++ LoadLibrary怎么用?C++ LoadLibrary使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了LoadLibrary函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: WinMain
/* This is where execution begins */
int STDCALL WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR szCmdLine, int sw)
{
char *appname;
char *ptr;
int i;
FILE *fp;
char **argv;
int argc;
/*
* Direct Draw has a nasty bug where a file that is opened before
* Direct Draw is invoked, *stays* open until the system is rebooted.
* So we need to get Direct Draw loaded before we open any files.
*/
{
HANDLE h;
h = LoadLibrary("DDRAW.DLL");
if(h)
FreeLibrary(LoadLibrary("DDRAW.DLL"));
}
/* FIXME:
* fprintf needs to be remapped to a windows function, otherwise when
* executor dies the user has no idea why it just vanished.
*/
fp = freopen("stdout.txt", "w", stdout);
#if !defined(stdout)
if(!fp)
stdout = fopen("stdout.txt", "w");
#else
if(!fp)
*stdout = *fopen("stdout.txt", "w");
#endif
setbuf(stdout, 0);
fp = freopen("stderr.txt", "w", stderr);
#if !defined(stderr)
if(!fp)
stderr = fopen("stderr.txt", "w");
#else
if(!fp)
*stderr = *fopen("stderr.txt", "w");
#endif
setbuf(stderr, 0);
paramline_to_argcv(GetCommandLine(), &argc, &argv);
/* Get the class name from argv[0] */
/* Basename... */
if((ptr = strrchr(argv[0], '\\')) == NULL)
appname = argv[0];
else
appname = ptr + 1;
/* minus extension... */
if((ptr = strrchr(appname, '.')) == NULL)
i = strlen(appname);
else
i = (ptr - appname);
/* equals appname! */
ptr = (char *)alloca(i + 1);
strncpy(ptr, appname, i);
ptr[i] = '\0';
appname = ptr;
/* Load SDL dynamic link library */
if(SDL_Init(0) < 0)
{
fprintf(stderr, "WinMain() error: %s\n", SDL_GetError());
return (false);
}
atexit(SDL_Quit);
/* Create and register our class, then run main code */
if(SDL_RegisterApp(appname, CS_BYTEALIGNCLIENT, hInst) < 0)
{
fprintf(stderr, "WinMain() error: %s\n", SDL_GetError());
return (false);
}
SDL_main(argc, argv);
exit(0);
}
示例2: dlopen
HMODULE dlopen(const WCHAR *DLL, int unused) {
return LoadLibrary(DLL);
}
示例3: AttachProfiler
STDAPI AttachProfiler(int pid, LPCWSTR wszTargetVersion, LPCWSTR wszProfilerPath, ProfConfig * pProfConfig, BOOL fConsoleMode)
{
HMODULE hModule = NULL;
LPVOID pvClientData = NULL;
DWORD cbClientData = 0;
HRESULT hr;
ICLRMetaHost * pMetaHost = NULL;
IEnumUnknown * pEnum = NULL;
IUnknown * pUnk = NULL;
ICLRRuntimeInfo * pRuntime = NULL;
ICLRProfiling * pProfiling = NULL;
g_fConsoleMode = fConsoleMode;
DWORD dwProfileeProcessID = (DWORD) pid;
CLSID clsidProfiler;
CLSIDFromString(PROFILER_GUID_WCHAR, &clsidProfiler);
DWORD dwMillisecondsMax = pProfConfig->dwDefaultTimeoutMs;
bool fCLRFound = false;
//---------------------------------------------------------------------------------------
// GET AND CALL API
//---------------------------------------------------------------------------------------
hModule = LoadLibrary(L"mscoree.dll");
if (hModule == NULL)
{
Log(L"LoadLibrary mscoree.dll failed. hr=0x%x.\n", hr = HRESULT_FROM_WIN32(GetLastError()));
goto Cleanup;
}
// Note: This is the ONLY C export we need out of mscoree.dll. This enables us to
// get started with the metahost interfaces, and it's all COM from that point
// forward.
CLRCreateInstanceFnPtr pfnCreateInstance =
(CLRCreateInstanceFnPtr)GetProcAddress(hModule, "CLRCreateInstance");
if (pfnCreateInstance == NULL)
{
Log(L"GetProcAddress on 'CLRCreateInstance' failed. hr=0x%x.\n", hr = HRESULT_FROM_WIN32(GetLastError()));
goto Cleanup;
}
hr = (*pfnCreateInstance)(CLSID_CLRMetaHost, IID_ICLRMetaHost, (LPVOID *)&pMetaHost);
if (FAILED(hr))
{
Log(L"CLRCreateInstance IID_ICLRMetaHost' failed. hr=0x%x.\n", hr);
goto Cleanup;
}
// Cross-user attach requires the SE_DEBUG_NAME privilege, so attempt to enable it
// now. Even if the privilege is not found, the CLRProfiler still continues to attach the target process.
// We'll just fail later on if we do try to attach to a different-user target process.
HRESULT hrEnableDebugPrivilege = EnableDebugPrivilege();
HANDLE hndProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwProfileeProcessID);
if (hndProcess == NULL)
{
hr = HRESULT_FROM_WIN32(GetLastError());
//If EnableDebugPrivilege is not successful, let the customer know running CLRProfiler as administrator may solve the problem.
if (hrEnableDebugPrivilege == E_FAIL)
{
Log(L"CLRProfiler can not open the target process %d (error: 0x%x), probably because CLRProfiler could not enable the debug privilege (error: 0x%x). \n"
L"Please run the CLRProfiler as administrator and try again.", dwProfileeProcessID, hr, hrEnableDebugPrivilege);
}
else
{
Log(L"OpenProcess failed. hr=0x%x.\n", hr);
}
goto Cleanup;
}
// One process may have multiple versions of the CLR loaded. Grab an enumerator to
// get back all the versions currently loaded.
hr = pMetaHost->EnumerateLoadedRuntimes(hndProcess, &pEnum);
if (FAILED(hr))
{
Log(L"EnumerateLoadedRuntimes' failed. hr=0x%x.\n", hr);
goto Cleanup;
}
while (pEnum->Next(1, &pUnk, NULL) == S_OK)
{
hr = pUnk->QueryInterface(IID_ICLRRuntimeInfo, (LPVOID *) &pRuntime);
if (FAILED(hr))
goto LoopCleanup;
WCHAR wszVersion[30];
DWORD cchVersion = ARRAY_LEN(wszVersion);
hr = pRuntime->GetVersionString(wszVersion, &cchVersion);
if (SUCCEEDED(hr) && _wcsnicmp(wszVersion, wszTargetVersion, min(cchVersion, wcslen(wszTargetVersion))) == 0)
{
fCLRFound = true;
hr = pRuntime->GetInterface(CLSID_CLRProfiling, IID_ICLRProfiling, (LPVOID *)&pProfiling);
if (FAILED(hr))
{
Log(L"Can not get the ICLRProfiling interface. Error: 0x%x.", hr);
//.........这里部分代码省略.........
示例4: OpenProcess
void CCrashInfoReader::CollectMiscCrashInfo(CErrorReportInfo& eri)
{
// Get crash time
Utility::GetSystemTimeUTC(eri.m_sSystemTimeUTC);
// Open parent process handle
HANDLE hProcess = OpenProcess(
PROCESS_QUERY_INFORMATION|PROCESS_VM_READ,
FALSE,
m_dwProcessId);
if(hProcess!=NULL)
{
SIZE_T uBytesRead = 0;
BYTE buff[1024];
memset(&buff, 0, 1024);
// Read exception information from process memory
if(m_pExInfo!=NULL)
{
if(ReadProcessMemory(hProcess, m_pExInfo, &buff, sizeof(EXCEPTION_POINTERS), &uBytesRead) &&
uBytesRead==sizeof(EXCEPTION_POINTERS))
{
EXCEPTION_POINTERS* pExcPtrs = (EXCEPTION_POINTERS*)buff;
if(pExcPtrs->ExceptionRecord!=NULL)
{
DWORD64 dwExcRecordAddr = (DWORD64)pExcPtrs->ExceptionRecord;
if(ReadProcessMemory(hProcess, (LPCVOID)dwExcRecordAddr, &buff, sizeof(EXCEPTION_RECORD), &uBytesRead) &&
uBytesRead==sizeof(EXCEPTION_RECORD))
{
EXCEPTION_RECORD* pExcRec = (EXCEPTION_RECORD*)buff;
eri.m_dwExceptionAddress = (DWORD64)pExcRec->ExceptionAddress;
}
}
}
}
else
eri.m_dwExceptionAddress = 0;
// Get number of GUI resources in use
eri.m_dwGuiResources = GetGuiResources(hProcess, GR_GDIOBJECTS);
// Determine if GetProcessHandleCount function available
typedef BOOL (WINAPI *LPGETPROCESSHANDLECOUNT)(HANDLE, PDWORD);
HMODULE hKernel32 = LoadLibrary(_T("kernel32.dll"));
if(hKernel32!=NULL)
{
LPGETPROCESSHANDLECOUNT pfnGetProcessHandleCount =
(LPGETPROCESSHANDLECOUNT)GetProcAddress(hKernel32, "GetProcessHandleCount");
if(pfnGetProcessHandleCount!=NULL)
{
// Get count of opened handles
DWORD dwHandleCount = 0;
BOOL bGetHandleCount = pfnGetProcessHandleCount(hProcess, &dwHandleCount);
if(bGetHandleCount)
eri.m_dwProcessHandleCount = dwHandleCount;
else
eri.m_dwProcessHandleCount = 0;
}
FreeLibrary(hKernel32);
hKernel32=NULL;
}
// Get memory usage info
PROCESS_MEMORY_COUNTERS meminfo;
BOOL bGetMemInfo = GetProcessMemoryInfo(hProcess, &meminfo,
sizeof(PROCESS_MEMORY_COUNTERS));
if(bGetMemInfo)
{
CString sMemUsage;
#ifdef _WIN64
sMemUsage.Format(_T("%I64u"), meminfo.WorkingSetSize/1024);
#else
sMemUsage.Format(_T("%lu"), meminfo.WorkingSetSize/1024);
#endif
eri.m_sMemUsage = sMemUsage;
}
// Determine the period of time the process is working.
FILETIME CreationTime, ExitTime, KernelTime, UserTime;
/*BOOL bGetTimes = */GetProcessTimes(hProcess, &CreationTime, &ExitTime, &KernelTime, &UserTime);
/*ATLASSERT(bGetTimes);*/
SYSTEMTIME AppStartTime;
FileTimeToSystemTime(&CreationTime, &AppStartTime);
SYSTEMTIME CurTime;
GetSystemTime(&CurTime);
ULONG64 uCurTime = Utility::SystemTimeToULONG64(CurTime);
ULONG64 uStartTime = Utility::SystemTimeToULONG64(AppStartTime);
// Check that the application works for at least one minute before crash.
// This might help to avoid cyclic error report generation when the applciation
// crashes on startup.
double dDiffTime = (double)(uCurTime-uStartTime)*10E-08;
//if(dDiffTime<60)
//{
// m_bAppRestart = FALSE; // Disable restart.
//.........这里部分代码省略.........
示例5: loadgldriver
int loadgldriver(const char *driver)
{
void *t;
int err=0;
#ifdef RENDERTYPEWIN
if (hGLDLL) return 0;
#endif
if (!driver) {
#ifdef _WIN32
driver = "OPENGL32.DLL";
#else
driver = "libGL.so";
#endif
}
initprintf("Loading %s\n",driver);
#ifdef RENDERTYPESDL
if (SDL_GL_LoadLibrary(driver)) return -1;
# define GETPROC(s) (t = (void*)SDL_GL_GetProcAddress(s)); if (!t) { initprintf("Failed to find " s " in %s\n",driver); err = 1; }
#else
# ifdef _WIN32
hGLDLL = LoadLibrary(driver);
if (!hGLDLL) return -1;
# define GETPROC(s) \
(t = (void*)GetProcAddress(hGLDLL,s)); \
if (!t) { initprintf("Failed to find " s " in %s\n",driver); err = 1; }
# else
# error Umm...
# endif
#endif
gldriver = strdup(driver);
bglClearColor = GETPROC("glClearColor");
bglClear = GETPROC("glClear");
bglColorMask = GETPROC("glColorMask");
bglAlphaFunc = GETPROC("glAlphaFunc");
bglBlendFunc = GETPROC("glBlendFunc");
bglCullFace = GETPROC("glCullFace");
bglFrontFace = GETPROC("glFrontFace");
bglPolygonOffset = GETPROC("glPolygonOffset");
bglPolygonMode = GETPROC("glPolygonMode");
bglEnable = GETPROC("glEnable");
bglDisable = GETPROC("glDisable");
bglGetFloatv = GETPROC("glGetFloatv");
bglGetIntegerv = GETPROC("glGetIntegerv");
bglPushAttrib = GETPROC("glPushAttrib");
bglPopAttrib = GETPROC("glPopAttrib");
bglGetError = GETPROC("glGetError");
bglGetString = GETPROC("glGetString");
bglHint = GETPROC("glHint");
// Depth
bglDepthFunc = GETPROC("glDepthFunc");
bglDepthMask = GETPROC("glDepthMask");
bglDepthRange = GETPROC("glDepthRange");
// Matrix
bglMatrixMode = GETPROC("glMatrixMode");
bglOrtho = GETPROC("glOrtho");
bglFrustum = GETPROC("glFrustum");
bglViewport = GETPROC("glViewport");
bglPushMatrix = GETPROC("glPushMatrix");
bglPopMatrix = GETPROC("glPopMatrix");
bglLoadIdentity = GETPROC("glLoadIdentity");
bglLoadMatrixf = GETPROC("glLoadMatrixf");
// Drawing
bglBegin = GETPROC("glBegin");
bglEnd = GETPROC("glEnd");
bglVertex2f = GETPROC("glVertex2f");
bglVertex2i = GETPROC("glVertex2i");
bglVertex3d = GETPROC("glVertex3d");
bglVertex3fv = GETPROC("glVertex3fv");
bglColor4f = GETPROC("glColor4f");
bglColor4ub = GETPROC("glColor4ub");
bglTexCoord2d = GETPROC("glTexCoord2d");
bglTexCoord2f = GETPROC("glTexCoord2f");
// Lighting
bglShadeModel = GETPROC("glShadeModel");
// Raster funcs
bglReadPixels = GETPROC("glReadPixels");
// Texture mapping
bglTexEnvf = GETPROC("glTexEnvf");
bglGenTextures = GETPROC("glGenTextures");
bglDeleteTextures = GETPROC("glDeleteTextures");
bglBindTexture = GETPROC("glBindTexture");
bglTexImage2D = GETPROC("glTexImage2D");
bglTexSubImage2D = GETPROC("glTexSubImage2D");
bglTexParameterf = GETPROC("glTexParameterf");
bglTexParameteri = GETPROC("glTexParameteri");
// Fog
bglFogf = GETPROC("glFogf");
bglFogi = GETPROC("glFogi");
//.........这里部分代码省略.........
示例6: SetDllDirectory
// CTortoiseMergeApp initialization
BOOL CTortoiseMergeApp::InitInstance()
{
SetDllDirectory(L"");
SetTaskIDPerUUID();
CCrashReport::Instance().AddUserInfoToReport(L"CommandLine", GetCommandLine());
{
DWORD len = GetCurrentDirectory(0, nullptr);
if (len)
{
auto originalCurrentDirectory = std::make_unique<TCHAR[]>(len);
if (GetCurrentDirectory(len, originalCurrentDirectory.get()))
{
sOrigCWD = originalCurrentDirectory.get();
sOrigCWD = CPathUtils::GetLongPathname(sOrigCWD);
}
}
}
//set the resource dll for the required language
CRegDWORD loc = CRegDWORD(L"Software\\TortoiseSVN\\LanguageID", 1033);
long langId = loc;
CString langDll;
HINSTANCE hInst = nullptr;
do
{
langDll.Format(L"%sLanguages\\TortoiseMerge%ld.dll", (LPCTSTR)CPathUtils::GetAppParentDirectory(), langId);
hInst = LoadLibrary(langDll);
CString sVer = _T(STRPRODUCTVER);
CString sFileVer = CPathUtils::GetVersionFromFile(langDll);
if (sFileVer.Compare(sVer)!=0)
{
FreeLibrary(hInst);
hInst = nullptr;
}
if (hInst)
AfxSetResourceHandle(hInst);
else
{
DWORD lid = SUBLANGID(langId);
lid--;
if (lid > 0)
{
langId = MAKELANGID(PRIMARYLANGID(langId), lid);
}
else
langId = 0;
}
} while ((!hInst) && (langId != 0));
TCHAR buf[6] = { 0 };
wcscpy_s(buf, L"en");
langId = loc;
CString sHelppath;
sHelppath = this->m_pszHelpFilePath;
sHelppath = sHelppath.MakeLower();
sHelppath.Replace(L".chm", L"_en.chm");
free((void*)m_pszHelpFilePath);
m_pszHelpFilePath=_wcsdup(sHelppath);
sHelppath = CPathUtils::GetAppParentDirectory() + L"Languages\\TortoiseMerge_en.chm";
do
{
GetLocaleInfo(MAKELCID(langId, SORT_DEFAULT), LOCALE_SISO639LANGNAME, buf, _countof(buf));
CString sLang = L"_";
sLang += buf;
sHelppath.Replace(L"_en", sLang);
if (PathFileExists(sHelppath))
{
free((void*)m_pszHelpFilePath);
m_pszHelpFilePath=_wcsdup(sHelppath);
break;
}
sHelppath.Replace(sLang, L"_en");
GetLocaleInfo(MAKELCID(langId, SORT_DEFAULT), LOCALE_SISO3166CTRYNAME, buf, _countof(buf));
sLang += L"_";
sLang += buf;
sHelppath.Replace(L"_en", sLang);
if (PathFileExists(sHelppath))
{
free((void*)m_pszHelpFilePath);
m_pszHelpFilePath=_wcsdup(sHelppath);
break;
}
sHelppath.Replace(sLang, L"_en");
DWORD lid = SUBLANGID(langId);
lid--;
if (lid > 0)
{
langId = MAKELANGID(PRIMARYLANGID(langId), lid);
}
else
langId = 0;
} while (langId);
setlocale(LC_ALL, "");
// We need to explicitly set the thread locale to the system default one to avoid possible problems with saving files in its original codepage
// The problems occures when the language of OS differs from the regional settings
// See the details here: http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=100887
SetThreadLocale(LOCALE_SYSTEM_DEFAULT);
//.........这里部分代码省略.........
示例7: SearchFlush1
errno_t SearchFlush1(flush_t* f)
{
unsigned char* pos = NULL;
char filename[MAX_PATH] = {0};
HMODULE base = GetModuleHandle( NULL );
HMODULE psapi = LoadLibrary("psapi.dll");
if (psapi == NULL)
return -1;
_GetModuleFileNameExA GetModuleFileNameEx_ =
(_GetModuleFileNameExA)GetProcAddress(psapi, "GetModuleFileNameExA");
GetModuleFileNameEx_(GetCurrentProcess(), base, filename, sizeof(filename));
MAPPED_FILE view = {0};
if( !map_file(filename, &view) ) {
return errno;
}
int pe = pe_open((const char*)view.data, view.size);
if (pe == INVALID_PE) {
unmap_file(&view);
return errno;
}
//搜索_fflush函数
/*
_fflush proc near ; CODE XREF: sub_403AD0+2A0p
.text:004E6AD9 ; output_result+A5p ...
.text:004E6AD9
.text:004E6AD9 var_1C = dword ptr -1Ch
.text:004E6AD9 ms_exc = CPPEH_RECORD ptr -18h
.text:004E6AD9 File = dword ptr 8
.text:004E6AD9
.text:004E6AD9 6A 0C push 0Ch
.text:004E6ADB 68 58 7B 51 00 push offset unk_517B58
.text:004E6AE0 E8 1F 64 00 00 call __SEH_prolog4
.text:004E6AE5 33 F6 xor esi, esi
.text:004E6AE7 39 75 08 cmp [ebp+File], esi
.text:004E6AEA 75 09 jnz short loc_4E6AF5
.text:004E6AEC 56 push esi
.text:004E6AED E8 0D FF FF FF call _flsall
.text:004E6AF2 59 pop ecx
.text:004E6AF3 EB 27 jmp short loc_4E6B1C
.text:004E6AF5 ; ---------------------------------------------------------------------------
.text:004E6AF5
.text:004E6AF5 loc_4E6AF5: ; CODE XREF: _fflush+11j
.text:004E6AF5 FF 75 08 push [ebp+File]
.text:004E6AF8 E8 94 FD FF FF call __lock_file
.text:004E6AFD 59 pop ecx
.text:004E6AFE 89 75 FC mov [ebp+ms_exc.disabled], esi
.text:004E6B01 FF 75 08 push [ebp+File] ; File
.text:004E6B04 E8 B4 FE FF FF call __fflush_nolock
.text:004E6B09 59 pop ecx
.text:004E6B0A 89 45 E4 mov [ebp+var_1C], eax
.text:004E6B0D C7 45 FC FE FF FF+ mov [ebp+ms_exc.disabled], 0FFFFFFFEh
.text:004E6B14 E8 09 00 00 00 call $LN8_1
.text:004E6B19
.text:004E6B19 $LN9_1:
.text:004E6B19 8B 45 E4 mov eax, [ebp+var_1C]
.text:004E6B1C
.text:004E6B1C loc_4E6B1C: ; CODE XREF: _fflush+1Aj
.text:004E6B1C E8 28 64 00 00 call __SEH_epilog4
.text:004E6B21 C3 retn
.text:004E6B21 _fflush endp
*/
uint8_t taget_fflush_1[] = { 0x33, 0xF6, 0x39, 0x75, 0x08, 0x75, 0x09, 0x56, 0xE8 };
char* start = (char*)view.data;
while( start < ((char*) view.data + view.size ) ) {
start = (char*)memstr((const char*)start, view.size - (start - (char*)view.data),
(const char*)taget_fflush_1, sizeof( taget_fflush_1 ) );
if( start == NULL ) {
break;
}
uint8_t target_fflush_2[] = { 0x59, 0xEB, 0x27, 0xFF, 0x75, 0x08, 0xE8 };
uint8_t target_fflush_3[] = { 0x59, 0x89, 0x75, 0xFC, 0xFF, 0x75, 0x08, 0xE8 };
if( 0 == memcmp( start + 0xD, target_fflush_2, sizeof( target_fflush_2 ))
&& 0 == memcmp( start + 0x18, target_fflush_3, sizeof( target_fflush_3 ))) {
//找到了
break;
}
start += sizeof( taget_fflush_1 );
}
if( start == NULL ) {
pe_close(pe);
unmap_file( &view );
return errno;
}
//将物理地址转换成虚拟地址
f->fflush = (_fflush_)(raw_to_rva(pe, (uint32_t)(start - 0xC - (char*)view.data)));
if( (ULONG)f->fflush == INVALID_RVA ) {
pe_close(pe);
unmap_file( &view );
return errno;
//.........这里部分代码省略.........
示例8: getPropertyMap
// Call back Declaration
ReturnType DigitalIOComp::onInitialize()
{
// XML에 저장된 프라퍼티를 parameter에 저장
Property parameter;
std::map<std::string, std::string> temp = getPropertyMap();
parameter.SetProperty(temp);
// dll 파일이름을 확인하여 없으면 에러 리턴
if(parameter.FindName("APIName") == false) {
PrintMessage("ERROR : DigitalIOComp::onInitialize() -> Can't find the APIName in property\n");
return OPROS_FIND_PROPERTY_ERROR;
}
#if defined(WIN32)
// DLL 로드
hOprosAPI = LoadLibrary((LPCSTR)parameter.GetValue("APIName").c_str());
if(hOprosAPI == NULL) {
PrintMessage("ERROR : DigitalIOComp::onInitialize() -> Can't find the %s\n", parameter.GetValue("APIName").c_str());
return OPROS_FIND_DLL_ERROR;
}
// API 로드
GET_OPROS_API getOprosAPI;
getOprosAPI = (GET_OPROS_API)GetProcAddress(hOprosAPI, "GetAPI");
if(getOprosAPI == NULL) {
PrintMessage("ERROR : DigitalIOComp::onInitialize() -> Can't get a handle of GetAPI Funtion\n");
FreeLibrary(hOprosAPI);
hOprosAPI = NULL;
return OPROS_LOAD_DLL_ERROR;
}
#else
hOprosAPI = dlopen(parameter.GetValue("DllName").c_str(), RTLD_LAZY);
if(hOprosAPI == NULL) {
PrintMessage("ERROR : DigitalIOComp::onInitialize() -> Can't find the %s\n", parameter.GetValue("DllName").c_str());
return OPROS_FIND_DLL_ERROR;
}
GET_OPROS_API getOprosAPI;
getOprosAPI = (GET_OPROS_API)dlsym(hOprosAPI, "GetAPI");
char *error = dlerror();
if(error != NULL) {
PrintMessage("ERROR : DigitalIOComp::onInitialize() -> Can't get a handle of GetAPI Funtion\n");
dlclose(hOprosAPI);
hOprosAPI = NULL;
return OPROS_LOAD_DLL_ERROR;
}
#endif
digitalIO = dynamic_cast<DigitalIO *>(getOprosAPI());
if(digitalIO == NULL) {
PrintMessage("ERROR : DigitalIOComp::onInitialize() -> Can't get a handle of Digital IO API\n");
#if defined(WIN32)
FreeLibrary(hOprosAPI);
#else
dlclose(hOprosAPI);
#endif
hOprosAPI = NULL;
return OPROS_LOAD_DLL_ERROR;
}
// API 초기화
if(digitalIO->Initialize(parameter) != API_SUCCESS) {
PrintMessage("ERROR : DigitalIOComp::onInitialize() -> Can't initialize a Digital IO API\n");
delete digitalIO;
digitalIO = NULL;
#if defined(WIN32)
FreeLibrary(hOprosAPI);
#else
dlclose(hOprosAPI);
#endif
hOprosAPI = NULL;
return OPROS_INITIALIZE_API_ERROR;
}
error = 0;
return OPROS_SUCCESS;
}
示例9: CBaseRenderer
CMpcAudioRenderer::CMpcAudioRenderer(LPUNKNOWN punk, HRESULT* phr)
: CBaseRenderer(__uuidof(this), MpcAudioRendererName, punk, phr)
, m_pDSBuffer(NULL)
, m_pSoundTouch(NULL)
, m_pDS(NULL)
, m_dwDSWriteOff(0)
, m_nDSBufSize(0)
, m_dRate(1.0)
, m_pReferenceClock(NULL)
, m_pWaveFileFormat(NULL)
, pMMDevice(NULL)
, pAudioClient(NULL)
, pRenderClient(NULL)
, m_useWASAPI(true)
, m_bMuteFastForward(false)
, m_csSound_Device(_T(""))
, nFramesInBuffer(0)
, hnsPeriod(0)
, hTask(NULL)
, bufferSize(0)
, isAudioClientStarted(false)
, lastBufferTime(0)
, hnsActualDuration(0)
, m_lVolume(DSBVOLUME_MIN)
{
HMODULE hLib;
#ifdef STANDALONE_FILTER
CRegKey key;
ULONG len;
if (ERROR_SUCCESS == key.Open(HKEY_CURRENT_USER, _T("Software\\Gabest\\Filters\\MPC Audio Renderer"), KEY_READ)) {
DWORD dw;
TCHAR buff[256];
if (ERROR_SUCCESS == key.QueryDWORDValue(_T("UseWasapi"), dw)) {
m_useWASAPI = !!dw;
}
if (ERROR_SUCCESS == key.QueryDWORDValue(_T("MuteFastForward"), dw)) {
m_bMuteFastForward = !!dw;
}
len = _countof(buff);
memset(buff, 0, sizeof(buff));
if (ERROR_SUCCESS == key.QueryStringValue(_T("SoundDevice"), buff, &len)) {
m_csSound_Device = CString(buff);
}
}
#else
m_useWASAPI = !!AfxGetApp()->GetProfileInt(_T("Filters\\MPC Audio Renderer"), _T("UseWasapi"), m_useWASAPI);
m_bMuteFastForward = !!AfxGetApp()->GetProfileInt(_T("Filters\\MPC Audio Renderer"), _T("MuteFastForward"), m_bMuteFastForward);
m_csSound_Device = AfxGetApp()->GetProfileString(_T("Filters\\MPC Audio Renderer"), _T("SoundDevice"), _T(""));
#endif
m_useWASAPIAfterRestart = m_useWASAPI;
// Load Vista specific DLLs
hLib = LoadLibrary(L"avrt.dll");
if (hLib != NULL) {
pfAvSetMmThreadCharacteristicsW = (PTR_AvSetMmThreadCharacteristicsW) GetProcAddress(hLib, "AvSetMmThreadCharacteristicsW");
pfAvRevertMmThreadCharacteristics = (PTR_AvRevertMmThreadCharacteristics) GetProcAddress(hLib, "AvRevertMmThreadCharacteristics");
} else {
m_useWASAPI = false; // Wasapi not available below Vista
}
TRACE(_T("CMpcAudioRenderer constructor\n"));
if (!m_useWASAPI) {
DirectSoundEnumerate((LPDSENUMCALLBACK)DSEnumProc2, (VOID*)&m_csSound_Device);
m_pSoundTouch = DEBUG_NEW soundtouch::SoundTouch();
*phr = DirectSoundCreate8(&lpSoundGUID, &m_pDS, NULL);
}
}
示例10: WINAPI
R_API char *r_sys_pid_to_path(int pid) {
#if __WINDOWS__
BOOL WINAPI (*QueryFullProcessImageNameA) (HANDLE, DWORD, LPTSTR, PDWORD);
DWORD WINAPI (*GetProcessImageFileNameA) (HANDLE, LPTSTR, DWORD);
HANDLE kernel32 = LoadLibrary ("Kernel32.dll");
if (!kernel32) {
eprintf ("Error getting the handle to Kernel32.dll\n");
return NULL;
}
QueryFullProcessImageNameA = GetProcAddress (kernel32, "QueryFullProcessImageNameA");
if (!QueryFullProcessImageNameA) {
// QueryFullProcessImageName does not exist before Vista, fallback to GetProcessImageFileName
HANDLE psapi = LoadLibrary ("Psapi.dll");
if (!psapi) {
eprintf ("Error getting the handle to Psapi.dll\n");
return NULL;
}
GetProcessImageFileNameA = GetProcAddress (psapi, "GetProcessImageFileNameA");
if (!GetProcessImageFileNameA) {
eprintf ("Error getting the address of GetProcessImageFileNameA\n");
return NULL;
}
}
HANDLE handle = NULL;
TCHAR filename[MAX_PATH];
DWORD maxlength = MAX_PATH;
handle = OpenProcess (PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, pid);
if (handle != NULL) {
if (QueryFullProcessImageNameA) {
if (QueryFullProcessImageNameA (handle, 0, filename, &maxlength) == 0) {
eprintf("Error calling QueryFullProcessImageNameA\n");
CloseHandle (handle);
return NULL;
}
} else {
if (GetProcessImageFileNameA (handle, filename, maxlength) == 0) {
eprintf("Error calling GetProcessImageFileNameA\n");
CloseHandle (handle);
return NULL;
}
}
CloseHandle (handle);
return strdup (filename);
}
return NULL;
#elif __APPLE__
char pathbuf[PROC_PIDPATHINFO_MAXSIZE];
pathbuf[0] = 0;
int ret = proc_pidpath (pid, pathbuf, sizeof (pathbuf));
if (ret <= 0)
return NULL;
return strdup (pathbuf);
#else
int ret;
char buf[128], pathbuf[1024];
#if __FreeBSD__
snprintf (buf, sizeof (buf), "/proc/%d/file", pid);
#else
snprintf (buf, sizeof (buf), "/proc/%d/exe", pid);
#endif
ret = readlink (buf, pathbuf, sizeof (pathbuf)-1);
if (ret<1)
return NULL;
pathbuf[ret] = 0;
return strdup (pathbuf);
#endif
}
示例11: dump_thread
static void
dump_thread(void *arg)
{
HANDLE dbghelp;
BOOL (WINAPI *pSymInitialize)(HANDLE, const char *, BOOL);
BOOL (WINAPI *pSymCleanup)(HANDLE);
BOOL (WINAPI *pStackWalk64)(DWORD, HANDLE, HANDLE, STACKFRAME64 *, void *, PREAD_PROCESS_MEMORY_ROUTINE64, PFUNCTION_TABLE_ACCESS_ROUTINE64, PGET_MODULE_BASE_ROUTINE64, PTRANSLATE_ADDRESS_ROUTINE64);
DWORD64 (WINAPI *pSymGetModuleBase64)(HANDLE, DWORD64);
BOOL (WINAPI *pSymFromAddr)(HANDLE, DWORD64, DWORD64 *, SYMBOL_INFO *);
BOOL (WINAPI *pSymGetLineFromAddr64)(HANDLE, DWORD64, DWORD *, IMAGEHLP_LINE64 *);
HANDLE (WINAPI *pOpenThread)(DWORD, BOOL, DWORD);
DWORD tid = *(DWORD *)arg;
HANDLE ph;
HANDLE th;
dbghelp = LoadLibrary("dbghelp.dll");
if (!dbghelp) return;
pSymInitialize = (BOOL (WINAPI *)(HANDLE, const char *, BOOL))GetProcAddress(dbghelp, "SymInitialize");
pSymCleanup = (BOOL (WINAPI *)(HANDLE))GetProcAddress(dbghelp, "SymCleanup");
pStackWalk64 = (BOOL (WINAPI *)(DWORD, HANDLE, HANDLE, STACKFRAME64 *, void *, PREAD_PROCESS_MEMORY_ROUTINE64, PFUNCTION_TABLE_ACCESS_ROUTINE64, PGET_MODULE_BASE_ROUTINE64, PTRANSLATE_ADDRESS_ROUTINE64))GetProcAddress(dbghelp, "StackWalk64");
pSymGetModuleBase64 = (DWORD64 (WINAPI *)(HANDLE, DWORD64))GetProcAddress(dbghelp, "SymGetModuleBase64");
pSymFromAddr = (BOOL (WINAPI *)(HANDLE, DWORD64, DWORD64 *, SYMBOL_INFO *))GetProcAddress(dbghelp, "SymFromAddr");
pSymGetLineFromAddr64 = (BOOL (WINAPI *)(HANDLE, DWORD64, DWORD *, IMAGEHLP_LINE64 *))GetProcAddress(dbghelp, "SymGetLineFromAddr64");
pOpenThread = (HANDLE (WINAPI *)(DWORD, BOOL, DWORD))GetProcAddress(GetModuleHandle("kernel32.dll"), "OpenThread");
if (pSymInitialize && pSymCleanup && pStackWalk64 && pSymGetModuleBase64 &&
pSymFromAddr && pSymGetLineFromAddr64 && pOpenThread) {
SymSetOptions(SYMOPT_UNDNAME | SYMOPT_DEFERRED_LOADS | SYMOPT_DEBUG | SYMOPT_LOAD_LINES);
ph = GetCurrentProcess();
pSymInitialize(ph, NULL, TRUE);
th = pOpenThread(THREAD_SUSPEND_RESUME|THREAD_GET_CONTEXT, FALSE, tid);
if (th) {
if (SuspendThread(th) != (DWORD)-1) {
CONTEXT context;
memset(&context, 0, sizeof(context));
context.ContextFlags = CONTEXT_FULL;
if (GetThreadContext(th, &context)) {
char libpath[MAX_PATH];
char buf[sizeof(SYMBOL_INFO) + MAX_SYM_NAME];
SYMBOL_INFO *info = (SYMBOL_INFO *)buf;
DWORD mac;
STACKFRAME64 frame;
memset(&frame, 0, sizeof(frame));
#if defined(_M_AMD64) || defined(__x86_64__)
mac = IMAGE_FILE_MACHINE_AMD64;
frame.AddrPC.Mode = AddrModeFlat;
frame.AddrPC.Offset = context.Rip;
frame.AddrFrame.Mode = AddrModeFlat;
frame.AddrFrame.Offset = context.Rbp;
frame.AddrStack.Mode = AddrModeFlat;
frame.AddrStack.Offset = context.Rsp;
#elif defined(_M_IA64) || defined(__ia64__)
mac = IMAGE_FILE_MACHINE_IA64;
frame.AddrPC.Mode = AddrModeFlat;
frame.AddrPC.Offset = context.StIIP;
frame.AddrBStore.Mode = AddrModeFlat;
frame.AddrBStore.Offset = context.RsBSP;
frame.AddrStack.Mode = AddrModeFlat;
frame.AddrStack.Offset = context.IntSp;
#else /* i386 */
mac = IMAGE_FILE_MACHINE_I386;
frame.AddrPC.Mode = AddrModeFlat;
frame.AddrPC.Offset = context.Eip;
frame.AddrFrame.Mode = AddrModeFlat;
frame.AddrFrame.Offset = context.Ebp;
frame.AddrStack.Mode = AddrModeFlat;
frame.AddrStack.Offset = context.Esp;
#endif
while (pStackWalk64(mac, ph, th, &frame, &context, NULL,
NULL, NULL, NULL)) {
DWORD64 addr = frame.AddrPC.Offset;
IMAGEHLP_LINE64 line;
DWORD64 displacement;
DWORD tmp;
if (addr == frame.AddrReturn.Offset || addr == 0 ||
frame.AddrReturn.Offset == 0)
break;
memset(buf, 0, sizeof(buf));
info->SizeOfStruct = sizeof(SYMBOL_INFO);
info->MaxNameLen = MAX_SYM_NAME;
if (pSymFromAddr(ph, addr, &displacement, info)) {
if (GetModuleFileName((HANDLE)(uintptr_t)pSymGetModuleBase64(ph, addr), libpath, sizeof(libpath)))
fprintf(stderr, "%s", libpath);
fprintf(stderr, "(%s+0x%I64x)",
info->Name, displacement);
}
fprintf(stderr, " [0x%p]", (void *)(VALUE)addr);
memset(&line, 0, sizeof(line));
line.SizeOfStruct = sizeof(line);
if (pSymGetLineFromAddr64(ph, addr, &tmp, &line))
fprintf(stderr, " %s:%lu", line.FileName, line.LineNumber);
fprintf(stderr, "\n");
}
}
ResumeThread(th);
}
CloseHandle(th);
//.........这里部分代码省略.........
示例12: double
Optimized ABLAS interface
********************************************************************/
#ifdef AP_WIN32
#include <windows.h>
extern "C"
{
typedef double (*_ddot1)(const double*, const double*, long);
typedef void (*_dmove1)(const double*, const double*, long);
typedef void (*_dmoves1)(const double*, const double*, long, double);
typedef void (*_dmoveneg1)(const double*, const double*, long);
typedef void (*_dadd1)(const double*, const double*, long);
typedef void (*_dadds1)(const double*, const double*, long, double);
typedef void (*_dsub1)(const double*, const double*, long);
typedef void (*_dmuls1)(const double*, long, double);
}
HINSTANCE ABLAS = LoadLibrary("ablas.dll");
static _ddot1 ddot1 = ABLAS==NULL ? NULL : (_ddot1) GetProcAddress(ABLAS, "ASMDotProduct1");
static _dmove1 dmove1 = ABLAS==NULL ? NULL : (_dmove1) GetProcAddress(ABLAS, "ASMMove1");
static _dmoves1 dmoves1 = ABLAS==NULL ? NULL : (_dmoves1) GetProcAddress(ABLAS, "ASMMoveS1");
static _dmoveneg1 dmoveneg1 = ABLAS==NULL ? NULL : (_dmoveneg1) GetProcAddress(ABLAS, "ASMMoveNeg1");
static _dadd1 dadd1 = ABLAS==NULL ? NULL : (_dadd1) GetProcAddress(ABLAS, "ASMAdd1");
static _dadds1 dadds1 = ABLAS==NULL ? NULL : (_dadds1) GetProcAddress(ABLAS, "ASMAddS1");
static _dsub1 dsub1 = ABLAS==NULL ? NULL : (_dsub1) GetProcAddress(ABLAS, "ASMSub1");
static _dmuls1 dmuls1 = ABLAS==NULL ? NULL : (_dmuls1) GetProcAddress(ABLAS, "ASMMulS1");
#endif
const double ap::machineepsilon = 5E-16;
const double ap::maxrealnumber = 1E300;
const double ap::minrealnumber = 1E-300;
示例13: ui_doinstall
//.........这里部分代码省略.........
#endif
log_dolog=1;
}
#endif
#ifdef NSIS_CONFIG_VISIBLE_SUPPORT
g_hIcon=LoadImage(g_hInstance,MAKEINTRESOURCE(IDI_ICON2),IMAGE_ICON,0,0,LR_DEFAULTSIZE|LR_SHARED);
#ifdef NSIS_SUPPORT_BGBG
if (header->bg_color1 != -1)
{
DWORD cn = CHAR4_TO_DWORD(_T('_'), _T('N'), _T('b'), 0);
RECT vp;
extern LRESULT CALLBACK BG_WndProc(HWND, UINT, WPARAM, LPARAM);
wc.lpfnWndProc = BG_WndProc;
wc.hInstance = g_hInstance;
wc.hIcon = g_hIcon;
//wc.hCursor = LoadCursor(NULL,IDC_ARROW);
wc.lpszClassName = (LPCTSTR)&cn;
if (!RegisterClass(&wc)) return 0;
SystemParametersInfo(SPI_GETWORKAREA, 0, &vp, 0);
m_bgwnd = CreateWindowEx(WS_EX_TOOLWINDOW,(LPCTSTR)&cn,0,WS_POPUP,
vp.left,vp.top,vp.right-vp.left,vp.bottom-vp.top,0,NULL,g_hInstance,NULL);
}
#endif//NSIS_SUPPORT_BGBG
#endif//NSIS_CONFIG_VISIBLE_SUPPORT
#ifdef NSIS_SUPPORT_CODECALLBACKS
// Select language
if (ExecuteCallbackFunction(CB_ONINIT)) return 2;
set_language();
#endif
#ifdef NSIS_CONFIG_VISIBLE_SUPPORT
#ifdef NSIS_CONFIG_SILENT_SUPPORT
if (!g_exec_flags.silent)
#endif//NSIS_CONFIG_SILENT_SUPPORT
{
#ifdef NSIS_SUPPORT_BGBG
ShowWindow(m_bgwnd, SW_SHOW);
#endif//NSIS_SUPPORT_BGBG
#ifdef NSIS_CONFIG_LICENSEPAGE
{ // load richedit DLL
static const TCHAR riched20[]=_T("RichEd20");
static const TCHAR riched32[]=_T("RichEd32");
static const TCHAR richedit20a[]=_T("RichEdit20A");
static const TCHAR richedit[]=_T("RichEdit");
if (!LoadLibrary(riched20))
{
LoadLibrary(riched32);
}
// make richedit20a point to RICHEDIT
if (!GetClassInfo(NULL,richedit20a,&wc))
{
GetClassInfo(NULL,richedit,&wc);
wc.lpszClassName = richedit20a;
RegisterClass(&wc);
}
}
#endif
{
int ret=DialogBox(g_hInstance,MAKEINTRESOURCE(IDD_INST+dlg_offset),0,DialogProc);
#if defined(NSIS_SUPPORT_CODECALLBACKS) && defined(NSIS_CONFIG_ENHANCEDUI_SUPPORT)
ExecuteCallbackFunction(CB_ONGUIEND);
#endif
#ifdef NSIS_CONFIG_PLUGIN_SUPPORT
Plugins_SendMsgToAllPlugins(NSPIM_GUIUNLOAD);
#endif
return ret;
}
}
#endif//NSIS_CONFIG_VISIBLE_SUPPORT
#ifdef NSIS_CONFIG_SILENT_SUPPORT
#ifdef NSIS_CONFIG_VISIBLE_SUPPORT
else
#endif//NSIS_CONFIG_VISIBLE_SUPPORT
{
if (install_thread(NULL))
{
#ifdef NSIS_SUPPORT_CODECALLBACKS
if (!g_quit_flag) ExecuteCallbackFunction(CB_ONINSTFAILED);
#endif//NSIS_SUPPORT_CODECALLBACKS
return 2;
}
#ifdef NSIS_SUPPORT_CODECALLBACKS
ExecuteCallbackFunction(CB_ONINSTSUCCESS);
#endif//NSIS_SUPPORT_CODECALLBACKS
return 0;
}
#endif//NSIS_CONFIG_SILENT_SUPPORT
}
示例14: BKL_Init
/*
pContext [in]: Pointer to a string containing the registry path to the active key
for the stream interface driver
lpvBusContext [in]: Potentially process-mapped pointer passed as the fourth parameter to ActivateDeviceEx.
If this driver was loaded through legacy mechanisms, then lpvBusContext is zero.
*/
extern "C" DWORD BKL_Init(
LPCTSTR pContext,
LPCVOID lpvBusContext
)
{
DWORD dwStatus, dwSize, dwType;
HKEY hkDevice = NULL;
BKL_MDD_INFO *pBKLinfo = NULL;
UNREFERENCED_PARAMETER(lpvBusContext);
if (IsDVIMode())
return 0;
DEBUGMSG(ZONE_BACKLIGHT, (TEXT("+BKL_Init() context %s.\r\n"), pContext));
g_pBacklight = GetBacklightObject();
if (g_pBacklight == NULL)
{
goto error;
}
// Allocate enough storage for this instance of our backlight
pBKLinfo = (BKL_MDD_INFO *)LocalAlloc(LPTR, sizeof(BKL_MDD_INFO));
if (pBKLinfo == NULL)
{
DEBUGMSG(ZONE_ERROR, (L"ERROR: BKL_Init: "
L"Failed allocate BKL_MDD_INFO device structure\r\n" ));
goto error;
}
// get device name from registry
dwStatus = RegOpenKeyEx(HKEY_LOCAL_MACHINE, pContext, 0, 0, &hkDevice);
if(dwStatus != ERROR_SUCCESS)
{
DEBUGMSG(ZONE_ERROR, (TEXT("BLK_Init: OpenDeviceKey failed with %u\r\n"), dwStatus));
goto error;
}
dwSize = sizeof(pBKLinfo->szName);
dwStatus = RegQueryValueEx(hkDevice, DEVLOAD_DEVNAME_VALNAME, NULL, &dwType, (LPBYTE)pBKLinfo->szName, &dwSize);
if(dwStatus != ERROR_SUCCESS)
{
DEBUGMSG(ZONE_ERROR, (TEXT("BLK_Init: RegQueryValueEx failed with %u\r\n"), dwStatus));
goto error;
}
RegCloseKey(hkDevice);
hkDevice = NULL;
// create exit event to be set by deinit:
pBKLinfo->hExitEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
if(NULL == pBKLinfo->hExitEvent)
{
DEBUGMSG(ZONE_ERROR, (TEXT("BLK_Init: OpenDeviceKey failed with %u\r\n"), dwStatus));
goto error;
}
pBKLinfo->hCoreDll = LoadLibrary(TEXT("coredll.dll"));
if (NULL != pBKLinfo->hCoreDll)
{
pBKLinfo->pfnGetSystemPowerStatusEx2 = (PFN_GetSystemPowerStatusEx2)
GetProcAddress(pBKLinfo->hCoreDll, TEXT("GetSystemPowerStatusEx2"));
if (!pBKLinfo->pfnGetSystemPowerStatusEx2)
{
DEBUGMSG(ZONE_WARN, (TEXT("GetProcAddress failed for GetSystemPowerStatusEx2. Assuming always on AC power.\r\n")));
}
}
//MYS pBKLinfo->dwPddContext = BacklightInit(pContext, lpvBusContext, &(pBKLinfo->dwCurState));
if (g_pBacklight->Initialize(pContext) == FALSE)
{
DEBUGMSG(ZONE_ERROR, (L"ERROR: BKL_Init: "
L"Failed to initialize backlight object\r\n"
));
goto error;
}
// if there are no user settings for this, we act as if they are selected:
pBKLinfo->fBatteryTapOn = TRUE;
pBKLinfo->fExternalTapOn = TRUE;
// in case there is no setting for this:
pBKLinfo->dwBattTimeout = 0;
pBKLinfo->dwACTimeout = 0;
pBKLinfo->dwCurState = D0;
g_pBacklight->SetPowerState(pBKLinfo->dwCurState);
//create thread to wait for reg / power source changes:
pBKLinfo->hBklThread = CreateThread(0, 0, (LPTHREAD_START_ROUTINE)fnBackLightThread, pBKLinfo, 0, NULL);
if(NULL == pBKLinfo->hBklThread)
{
//.........这里部分代码省略.........
示例15: dlopen
static void *
dlopen (const char *file, int mode ATTRIBUTE_UNUSED)
{
return LoadLibrary (file);
}