Hallo zusammen!
In meinem aktuellen Tool gibt es verschiedene Versionen einer DLL, auf die ich von aussen keinen Einfluss nehmen kann. Je nach Umgebung auf der Zielplattform muss dabei eine andere DLL verwendet werden. Aus diesem Grund ist es mir nicht möglich das DLLImport-Attribut zu verwenden, denn ich weiss den DLLNamen erst zu Laufzeit. Deshalb verwende ich LoadLibrary und GetProcAddress. Bisher funktioniert das super, allerdings habe ich ein Problem mit der folgenden Funktion.
Hier die beiden Varianten:
Nun ist es so, dass obige Variante problemlos funktioniert während die untere eine Zugriffsverletzung in der DLL auslöst. Meine Vermutung ist, dass dabei entweder Parameter buffer oder read verantwortlich sind. Allerdings verstehe ich nicht, wo das Problem genau liegt!
Ich hoffe, mir kann dabei jemand helfen!
Gruss
Cromon
In meinem aktuellen Tool gibt es verschiedene Versionen einer DLL, auf die ich von aussen keinen Einfluss nehmen kann. Je nach Umgebung auf der Zielplattform muss dabei eine andere DLL verwendet werden. Aus diesem Grund ist es mir nicht möglich das DLLImport-Attribut zu verwenden, denn ich weiss den DLLNamen erst zu Laufzeit. Deshalb verwende ich LoadLibrary und GetProcAddress. Bisher funktioniert das super, allerdings habe ich ein Problem mit der folgenden Funktion.
Hier die beiden Varianten:
Code:
[DllImport("Stormlib_40.dll", EntryPoint = "SFileReadFile")]
public static extern bool FileRead(IntPtr hFile, [In, Out] byte[] buffer, uint bytes, ref uint read, IntPtr overlapped);
[UnmanagedFunctionPointer(CallingConvention.StdCall, CharSet = CharSet.Ansi)]
public delegate bool tSFileReadFile(IntPtr hFile, [In, Out] byte[] buffer, uint bytes, ref uint read, IntPtr overlapped);
Nun ist es so, dass obige Variante problemlos funktioniert während die untere eine Zugriffsverletzung in der DLL auslöst. Meine Vermutung ist, dass dabei entweder Parameter buffer oder read verantwortlich sind. Allerdings verstehe ich nicht, wo das Problem genau liegt!
Ich hoffe, mir kann dabei jemand helfen!
Gruss
Cromon