Specifica di un punto di ingressoSpecifying an Entry Point

Un punto di ingresso identifica la posizione di una funzione in una DLL.An entry point identifies the location of a function in a 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à.Within a managed project, the original name or ordinal entry point of a target function identifies that function across the interoperation boundary. È anche possibile mappare il punto di ingresso a un nome diverso, rinominando in effetti la funzione.Further, you can map the entry point to a different name, effectively renaming the function.

L'elenco seguente include i motivi possibili per cui rinominare una funzione di DLL:Following is a list of possible reasons to rename a DLL function:

  • Evitare l'uso di nomi delle funzioni API con distinzione tra maiuscole e minuscoleTo avoid using case-sensitive API function names

  • Rispettare standard di denominazione esistentiTo comply with existing naming standards

  • Supportare funzioni che accettano tipi di dati diversi (dichiarando più versioni della stessa funzione di DLL)To accommodate functions that take different data types (by declaring multiple versions of the same DLL function)

  • Semplificare l'uso delle API che includono versioni ANSI e UnicodeTo simplify using APIs that contain ANSI and Unicode versions

Questo argomento illustra come rinominare una funzione di DLL nel codice gestito.This topic demonstrates how to rename a DLL function in managed code.

Ridenominazione di una funzione in Visual BasicRenaming a Function in Visual Basic

Visual Basic usa la parola chiave Function nell'istruzione Declare per impostare il campo DllImportAttribute.EntryPoint.Visual Basic uses the Function keyword in the Declare statement to set the DllImportAttribute.EntryPoint field. L'esempio seguente mostra una dichiarazione di base.The following example shows a basic declaration.

Imports System.Runtime.InteropServices  

Public Class Win32  
    Declare Auto Function MessageBox Lib "user32.dll" _  
       (ByVal hWnd As Integer, ByVal txt As String,_  
       ByVal caption As String, ByVal Typ As Integer) As Integer  
End Class  

È possibile sostituire il punto di ingresso MessageBox con MsgBox includendo la parola chiave Alias nella definizione, come illustrato nell'esempio seguente.You can replace the MessageBox entry point with MsgBox by including the Alias keyword in your definition, as shown in the following example. In entrambi gli esempi la parola chiave Auto elimina la necessità di specificare la versione del set di caratteri del punto di ingresso.In both examples the Auto keyword eliminates the need to specify the character-set version of the entry point. Per altre informazioni sulla selezione di un set di caratteri, vedere Specifica di un set di caratteri.For more information about selecting a character set, see Specifying a Character Set.

Imports System.Runtime.InteropServices  

Public Class Win32  
    Declare Auto Function MsgBox Lib "user32.dll" _  
       Alias "MessageBox" (ByVal hWnd As Integer, ByVal txt As String,_  
       ByVal caption As String, ByVal Typ As Integer) As Integer  
End Class  

Ridenominazione di una funzione in C# e C++Renaming a Function in C# and C++

È possibile usare il campo DllImportAttribute.EntryPoint per specificare una funzione di DLL in base al nome o al numero ordinale.You can use the DllImportAttribute.EntryPoint field to specify a DLL function by name or ordinal. Se il nome della funzione nella definizione del metodo corrisponde al punto di ingresso nella DLL, non è necessario identificare in modo esplicito la funzione con il campo EntryPoint.If the name of the function in your method definition is the same as the entry point in the DLL, you do not have to explicitly identify the function with the EntryPoint field. In caso contrario, usare uno dei seguenti formati di attributo per indicare un nome o il numero ordinale:Otherwise, use one of the following attribute forms to indicate a name or ordinal:

[DllImport("dllname", EntryPoint="Functionname")]  
[DllImport("dllname", EntryPoint="#123")]  

Si noti che è necessario anteporre il segno di cancelletto (#) a un numero ordinale.Notice that you must prefix an ordinal with the pound sign (#).

L'esempio seguente dimostra come sostituire MessageBoxA con MsgBox nel codice usando il campo EntryPoint.The following example demonstrates how to replace MessageBoxA with MsgBox in your code by using the EntryPoint field.

using System.Runtime.InteropServices;  

public class Win32 {  
    [DllImport("user32.dll", EntryPoint="MessageBoxA")]  
    public static extern int MsgBox(int hWnd, String text, String caption,  
                                    uint type);  
}  
using namespace System::Runtime::InteropServices;  

typedef void* HWND;  
[DllImport("user32", EntryPoint="MessageBoxA")]  
extern "C" int MsgBox(HWND hWnd,  
                      String*  pText,  
                      String*  pCaption,  
                      unsigned int uType);  

Vedere ancheSee Also

DllImportAttribute
Creazione di prototipi nel codice gestitoCreating Prototypes in Managed Code
Esempi di platform invokePlatform Invoke Examples
Marshalling dei dati con platform invokeMarshaling Data with Platform Invoke