MCPcopy Create free account
hub / github.com/boostorg/filesystem / init_winapi_func_ptrs

Function init_winapi_func_ptrs

src/operations.cpp:1402–1432  ·  view source on GitHub ↗

Initializes WinAPI function pointers

Source from the content-addressed store, hash-verified

1400
1401//! Initializes WinAPI function pointers
1402BOOST_FILESYSTEM_INIT_FUNC init_winapi_func_ptrs()
1403{
1404 boost::winapi::HMODULE_ h = boost::winapi::GetModuleHandleW(L"kernel32.dll");
1405 if (BOOST_LIKELY(!!h))
1406 {
1407 GetFileInformationByHandleEx_t* get_file_information_by_handle_ex = boost::winapi::get_proc_address<GetFileInformationByHandleEx_t*>(h, "GetFileInformationByHandleEx");
1408 filesystem::detail::atomic_store_relaxed(get_file_information_by_handle_ex_api, get_file_information_by_handle_ex);
1409 SetFileInformationByHandle_t* set_file_information_by_handle = boost::winapi::get_proc_address<SetFileInformationByHandle_t*>(h, "SetFileInformationByHandle");
1410 filesystem::detail::atomic_store_relaxed(set_file_information_by_handle_api, set_file_information_by_handle);
1411 filesystem::detail::atomic_store_relaxed(create_hard_link_api, boost::winapi::get_proc_address<CreateHardLinkW_t*>(h, "CreateHardLinkW"));
1412 filesystem::detail::atomic_store_relaxed(create_symbolic_link_api, boost::winapi::get_proc_address<CreateSymbolicLinkW_t*>(h, "CreateSymbolicLinkW"));
1413
1414 if (get_file_information_by_handle_ex && set_file_information_by_handle)
1415 {
1416 // Enable the most advanced implementation based on GetFileInformationByHandleEx/SetFileInformationByHandle.
1417 // If certain flags are not supported by the OS, the remove() implementation will downgrade accordingly.
1418 filesystem::detail::atomic_store_relaxed(g_remove_impl_type, remove_disp_ex_flag_ignore_readonly);
1419 }
1420 }
1421
1422 h = boost::winapi::GetModuleHandleW(L"ntdll.dll");
1423 if (BOOST_LIKELY(!!h))
1424 {
1425 filesystem::detail::atomic_store_relaxed(nt_create_file_api, boost::winapi::get_proc_address<NtCreateFile_t*>(h, "NtCreateFile"));
1426 filesystem::detail::atomic_store_relaxed(nt_query_directory_file_api, boost::winapi::get_proc_address<NtQueryDirectoryFile_t*>(h, "NtQueryDirectoryFile"));
1427 }
1428
1429 init_directory_iterator_impl();
1430
1431 return BOOST_FILESYSTEM_INITRETSUCCESS_V;
1432}
1433
1434#if defined(_MSC_VER)
1435

Callers 1

Calls 2

atomic_store_relaxedFunction · 0.85

Tested by

no test coverage detected