Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Ein Einstiegspunkt identifiziert die Position einer Funktion in einer DLL. In einem verwalteten Projekt wird diese Funktion vom ursprünglichen Namen oder vom Ordinaleinstiegspunkt einer Zielfunktion über die Grenzen der Interoperation hinaus identifiziert. Darüber hinaus können Sie den Einstiegspunkt einem anderen Namen zuordnen und die Funktion effektiv umbenennen.
Es folgt eine Liste möglicher Gründe zum Umbenennen einer DLL-Funktion:
Um keine API-Funktionsnamen zu verwenden, die zwischen Groß- und Kleinschreibung unterscheiden.
Um vorhandene Benennungsstandards einzuhalten
So passen Sie Funktionen an, die unterschiedliche Datentypen verwenden (indem Sie mehrere Versionen derselben DLL-Funktion deklarieren)
So vereinfachen Sie die Verwendung von APIs, die ANSI- und Unicode-Versionen enthalten
In diesem Thema wird das Umbenennen einer DLL-Funktion in verwaltetem Code veranschaulicht.
Umbenennen einer Funktion in Visual Basic
Visual Basic verwendet das Function-Schlüsselwort in der Declare-Anweisung , um das DllImportAttribute.EntryPoint Feld festzulegen. Das folgende Beispiel zeigt eine grundlegende Deklaration.
Friend Class NativeMethods
Friend Declare Auto Function MessageBox Lib "user32.dll" (
ByVal hWnd As IntPtr,
ByVal lpText As String,
ByVal lpCaption As String,
ByVal uType As UInteger) As Integer
End Class
Sie können den MessageBox-Einstiegspunkt durch MsgBox ersetzen, indem Sie das Alias-Schlüsselwort in Ihre Definition einschließen, wie im folgenden Beispiel gezeigt. In beiden Beispielen beseitigt das Schlüsselwort Auto die Notwendigkeit, die Zeichensatzversion des Einstiegspunkts anzugeben. Weitere Informationen zum Auswählen eines Zeichensatzes finden Sie unter Angeben eines Zeichensatzes.
Friend Class NativeMethods
Friend Declare Auto Function MsgBox _
Lib "user32.dll" Alias "MessageBox" (
ByVal hWnd As IntPtr,
ByVal lpText As String,
ByVal lpCaption As String,
ByVal uType As UInteger) As Integer
End Class
Umbenennen einer Funktion in C# und C++
Sie können das DllImportAttribute.EntryPoint Feld verwenden, um eine DLL-Funktion nach Namen oder Ordnungszahl anzugeben. Wenn der Name der Funktion in Der Methodendefinition mit dem Einstiegspunkt in der DLL identisch ist, müssen Sie die Funktion nicht explizit mit dem EntryPoint-Feld identifizieren. Verwenden Sie andernfalls eines der folgenden Attributformulare, um einen Namen oder eine Ordnungszahl anzugeben:
[DllImport("DllName", EntryPoint = "Functionname")]
[DllImport("DllName", EntryPoint = "#123")]
Hinweis: Für eine Ordinalzahl müssen Sie das Pfundzeichen (#) als Präfix verwenden.
Im folgenden Beispiel wird veranschaulicht, wie MessageBoxA durch MsgBox in Ihrem Code mithilfe des EntryPoint-Felds ersetzt wird.
using System;
using System.Runtime.InteropServices;
internal static class NativeMethods
{
[DllImport("user32.dll", EntryPoint = "MessageBoxA")]
internal static extern int MsgBox(
IntPtr hWnd, string lpText, string lpCaption, uint uType);
}
using namespace System;
using namespace System::Runtime::InteropServices;
typedef void* HWND;
[DllImport("user32", EntryPoint = "MessageBoxA")]
extern "C" int MsgBox(
HWND hWnd, String* lpText, String* lpCaption, unsigned int uType);