Всем привет! Реализовал динамический импорт, гоняю юнит-тесты. Ловлю бесконечную рекурсию (ну и
Выяснил что при загрузке модуля
Минимально воспроизводимый код:
Как правильно обрабатывать форварды на модули
STATUS_STACK_OVERFLOW соотв) при попытке резолвинга форварда kernel32.GetThreadDescription -> api-ms-win-core-processthreads-l1-1-3.GetThreadDescription.Выяснил что при загрузке модуля
api-ms-win-core-processthreads-l1-1-3.dll возвращается адрес kernel32.dll.Минимально воспроизводимый код:
C:
#[test]
fn test() {
let k32 = LoadLibraryW(w!("kernel32.dll")).unwrap();
let api_ms = LoadLibraryW(w!("api-ms-win-core-processthreads-l1-1-3.dll")).unwrap();
// panic if address kernel32.dll == api-ms-win-core-processthreads-l1-1-3.dll
assert_ne!(k32, api_ms);
}
api-ms-*.*.*.dll? Стандарный GetProcAddress обрабатывает их нормально.