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; }
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 }