Library: makes ffLibraryIterateDynamicLibs return false on failure

This commit is contained in:
李通洲
2026-08-09 10:11:25 +08:00
parent 4361c5e787
commit 8bc4464b64
2 changed files with 11 additions and 6 deletions
+9 -5
View File
@@ -199,19 +199,19 @@ static void ffLibraryIterateDynamicLibsCallback(PLDR_DATA_TABLE_ENTRY DataTableE
}
}
void ffLibraryIterateDynamicLibs(FFLibraryIterateCallback callback, void* userData) {
bool ffLibraryIterateDynamicLibs(FFLibraryIterateCallback callback, void* userData) {
struct LibraryIterateDynamicLibsBundle bundle = {
.callback = callback,
.userData = userData,
};
LdrEnumerateLoadedModules(FALSE, ffLibraryIterateDynamicLibsCallback, &bundle);
return NT_SUCCESS(LdrEnumerateLoadedModules(FALSE, ffLibraryIterateDynamicLibsCallback, &bundle));
}
#elif defined(__APPLE__)
#include <mach-o/dyld.h>
void ffLibraryIterateDynamicLibs(FFLibraryIterateCallback callback, void* userData) {
bool ffLibraryIterateDynamicLibs(FFLibraryIterateCallback callback, void* userData) {
uint32_t imageCount = _dyld_image_count();
for (uint32_t i = 0; i < imageCount; ++i) {
const char* name = _dyld_get_image_name(i);
@@ -223,6 +223,8 @@ void ffLibraryIterateDynamicLibs(FFLibraryIterateCallback callback, void* userDa
break;
}
}
return true;
}
#elif __has_include(<link.h>)
@@ -237,19 +239,21 @@ static int ffLibraryIterateDynamicLibsCallback(struct dl_phdr_info* info, size_t
return !bundle->callback(info->dlpi_name, bundle->userData);
}
void ffLibraryIterateDynamicLibs(bool (*callback)(const char* name, void* userData), void* userData) {
bool ffLibraryIterateDynamicLibs(bool (*callback)(const char* name, void* userData), void* userData) {
dl_iterate_phdr(
ffLibraryIterateDynamicLibsCallback,
&(struct LibraryIterateDynamicLibsBundle) {
.callback = callback,
.userData = userData,
});
return true;
}
#else
void ffLibraryIterateDynamicLibs(FFLibraryIterateCallback, void*) {
bool ffLibraryIterateDynamicLibs(FFLibraryIterateCallback, void*) {
// Not implemented for this platform
return false;
}
#endif
+2 -1
View File
@@ -114,4 +114,5 @@ void* ffLibraryGetModule(const wchar_t* libraryFileName);
// Return false to stop iterating, true to continue
typedef bool (*FFLibraryIterateCallback)(const char* name, void* userData);
void ffLibraryIterateDynamicLibs(FFLibraryIterateCallback callback, void* userData);
// Iterate over all loaded dynamic libraries. Returns true on success, false on failure.
bool ffLibraryIterateDynamicLibs(FFLibraryIterateCallback callback, void* userData);