Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Un punto di ingresso identifica la posizione di una funzione in una DLL. All'interno di un progetto gestito, il nome originale o il punto di ingresso ordinale di una funzione di destinazione identifica tale funzione attraverso il limite di interoperabilità. Inoltre, è possibile mappare il punto di ingresso a un nome diverso, rinominando la funzione.
Di seguito è riportato un elenco di possibili motivi per rinominare una funzione DLL:
Per evitare l'uso di nomi di funzioni API sensibili alle maiuscole e minuscole
Per rispettare gli standard di denominazione esistenti
Per supportare funzioni che accettano tipi di dati diversi (dichiarando più versioni della stessa funzione DLL)
Per semplificare l'uso delle API che contengono versioni ANSI e Unicode
In questo argomento viene illustrato come rinominare una funzione DLL nel codice gestito.
Ridenominazione di una funzione in Visual Basic
Visual Basic usa la Function parola chiave nell'istruzione Declare per impostare il DllImportAttribute.EntryPoint campo. Nell'esempio seguente viene illustrata una dichiarazione di base.
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
È possibile sostituire il MessageBox punto di ingresso con MsgBox includendo la Alias parola chiave nella definizione, come illustrato nell'esempio seguente. In entrambi gli esempi la Auto parola chiave elimina la necessità di specificare la versione del set di caratteri del punto di ingresso. Per altre informazioni sulla selezione di un set di caratteri, vedere Specifica di un set di caratteri.
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
Ridenominazione di una funzione in C# e C++
È possibile usare il DllImportAttribute.EntryPoint campo per specificare una funzione DLL in base al nome o all'ordinale. Se il nome della funzione nella definizione del metodo è uguale al punto di ingresso nella DLL, non è necessario identificare in modo esplicito la funzione con il EntryPoint campo . In caso contrario, utilizzare uno dei formati di attributo seguenti per indicare un nome o un ordinale:
[DllImport("DllName", EntryPoint = "Functionname")]
[DllImport("DllName", EntryPoint = "#123")]
Si noti che è necessario anteporre un ordinale con il segno di cancelletto (#).
Nell'esempio seguente viene illustrato come sostituire MessageBoxA con MsgBox nel codice usando il EntryPoint campo .
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);