2016-04-13 18 views
3

embedded resources içeren bir Windows native application sahibiyim ve ben bunlara native API kullanarak erişmek istiyorum. Kaynakları yöneten yerel işlevler var mı (FindResource/LoadResource'a benzer) veya bunları çıkarmak için kendi PE okuyucumu oluşturmam gerekecek mi?Windows Yerel API'sı kullanılarak PE kaynaklarına nasıl erişilir?

+0

Soru sorabilirmiyim, neden yerel bir uygulama yazıyorsunuz? Kaynaklar belleğe eşlenirse ve bunların kullanılabilir olduğunu ya da yürütülebilir dosyanın geri kalanını kolayca eşleyebildiğini varsayarsak, adreslerini bildiğinden onlara erişebilirsiniz, böylece özel API'ler gerekmez. Ne tür gömülü kaynaklar kullanıyorsunuz? –

+0

@KubaOber: Win32 alt sistemi yüklenmeden önce yürütmek istiyorsanız, yerel bir uygulamaya ihtiyacınız vardır. * "Adreslerini öğrenerek bunlara erişebilirsiniz" * - 'FindResource', adresi tanımak için API olacaktır. – IInspectable

+0

Tam olarak, Win32 yüklenmeden önce yürütülmesi gereken bir uygulamadır. Kaynakları içeren yürütülebilir dosyanın geri kalanı belleğe eşlenmezse, nasıl yapabilirim? Kaynak adresini önceden tanımlamamadan önce programsal olarak nasıl bulabilirim (kaynağı yürütülebilir dosyaya yerleştirmek için linker iştir). –

cevap

2

Ntdll neredeyse sırasıyla FindResource ve LoadResource, muadilleri LdrFindResource_U ve LdrAccessResource ihraç ediyor. Bunları kullanmak için GetModuleHandle numaralı bir hesaba ihtiyacınız olacaktır. Bu işlevlerin belgelenmesi için Wine kaynağı (özellikle resource.c ve module.c) kullanılabilir.

İlgili konular