Пример #1
0
bool wtfRenamer::HasHardlinkSupport()
{
#ifdef __WXMSW__
	int major, minor;
	wxOperatingSystemId sys_id = wxGetOsVersion(&major, &minor);
	
	
	if (sys_id != wxOS_WINDOWS_NT)
	{
		return false;
	}

	if (wtfRenamer::m_hasHLS)
	{
#	ifdef _UNICODE
		return wtfRenamer::m_HLShasW || wtfRenamer::m_HLShasA;
#	else
		return wtfRenamer::m_HLShasA;
#	endif
	}
	wtfRenamer::m_hasHLS = true;
	wtfRenamer::m_lib = WXDEBUG_NEW wxDynamicLibrary(_T("kernel32"));

	if (!wtfRenamer::m_lib->IsLoaded())
	{
		delete(wtfRenamer::m_lib);
		wtfRenamer::m_lib = NULL;
		return false;
	}
	wtfRenamer::m_HLShasW = wtfRenamer::m_lib->HasSymbol(_T("CreateHardLinkW"));
	wtfRenamer::m_HLShasA = wtfRenamer::m_lib->HasSymbol(_T("CreateHardLinkA"));

#	ifdef __WXDEBUG__
	if (wtfRenamer::m_HLShasW)
	{
		wxLogDebug(wxT("Found CreateHardLinkW"));
	}
	if (wtfRenamer::m_HLShasA)
	{
		wxLogDebug(wxT("Found CreateHardLinkA"));
	}
#	endif

	if
#	ifdef _UNICODE
		(!wtfRenamer::m_HLShasW && !wtfRenamer::m_HLShasA)
#	else
		(!wtfRenamer::m_HLShasA)
#	endif
	{
		delete(wtfRenamer::m_lib);
		wtfRenamer::m_lib = NULL;
		return false;
	}
Пример #2
0
bool wxCriticalSection::TryEnter()
{
#if wxUSE_DYNLIB_CLASS
    typedef BOOL
      (WINAPI *TryEnterCriticalSection_t)(LPCRITICAL_SECTION lpCriticalSection);

    static TryEnterCriticalSection_t
        pfnTryEnterCriticalSection = (TryEnterCriticalSection_t)
            wxDynamicLibrary(wxT("kernel32.dll")).
                GetSymbol(wxT("TryEnterCriticalSection"));

    return pfnTryEnterCriticalSection
            ? (*pfnTryEnterCriticalSection)((CRITICAL_SECTION *)m_buffer) != 0
            : false;
#else
    return false;
#endif
}