2012-08-06 24 views
7

Bir P/Invoke yapıyorum ve ben çalışma olduğunu nasıl Authz.dll hep kod yüklenir garanti rağmen aşağıdaki yöntemi DllImport, DLL'nin yüklenip yüklenmediğini nasıl denetlerim?

[DllImport("Authz.dll", SetLastError = true)] 
    public static extern BOOL AuthzFreeContext(
     IntPtr phAuthzResourceManager); 

kullanıyorum. Benim dll benim bazı XXX.dll olduğunu varsayalım, bu dll yüklü olup olmadığını genel olarak nasıl kullanmalıyım, bu nedenle, bir özel durum bulunamadı bir yöntem almazsınız.

+0

loadlibrary'de P/Invoke yapabilir ve bunun başarılı olup olmadığını görebilirsiniz. http://www.pinvoke.net/default.aspx/kernel32.loadlibrary – rene

cevap

12

Marshal.PrelinkAll(Type)

veya

Marshal.Prelink(MethodInfo)

Bkz:

Ne yazık ki, MSDN belgelerine DLL ise herhangi bir istisna atılan söz başarısız: Güncelleme

http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.marshal.prelinkall(v=vs.100).aspx bulunamadı. Basit bir uygulama ile doğrulandım, aslında bir DllNotFoundException atım.

+0

Bunu bilmiyordum. +1 –

+1

Prelink başarısız olursa ne olur? Dokümanlara göre, bir şey çözülemediğinde atılan bir hata kodu veya istisna yoktur. –

+0

@AloisKraus: 'DllNotFoundException' IIRC (veya bazı' IOException'). – leppie

İlgili konular