Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Un punto de entrada identifica la ubicación de una función en un archivo DLL. Dentro de un proyecto administrado, el nombre original o el punto de entrada ordinal de una función de destino identifica esa función a través del límite de interoperación. Además, puede asignar el punto de entrada a un nombre diferente, cambiando el nombre de la función de forma eficaz.
A continuación se muestra una lista de posibles motivos para cambiar el nombre de una función DLL:
Para no utilizar nombres de función de la API que distinguen mayúsculas de minúsculas
Para cumplir con los estándares de nomenclatura existentes
Para dar cabida a funciones que toman diferentes tipos de datos (declarando varias versiones de la misma función DLL)
Para simplificar el uso de API que contienen versiones ANSI y Unicode
En este tema se muestra cómo cambiar el nombre de una función DLL en código administrado.
Cambiar el nombre de una función en Visual Basic
Visual Basic usa la palabra clave Function en la instrucción Declare para establecer el DllImportAttribute.EntryPoint campo. En el ejemplo siguiente se muestra una declaración básica.
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
Puede reemplazar el punto de entrada messageBox por MsgBox mediante la inclusión de la palabra clave Alias en la definición, como se muestra en el ejemplo siguiente. En ambos ejemplos, la palabra clave Auto elimina la necesidad de especificar la versión del conjunto de caracteres del punto de entrada. Para obtener más información sobre cómo seleccionar un juego de caracteres, vea Especificar un juego de caracteres.
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
Cambiar el nombre de una función en C# y C++
Puede usar el DllImportAttribute.EntryPoint campo para especificar una función DLL por nombre o ordinal. Si el nombre de la función de la definición del método es el mismo que el punto de entrada del archivo DLL, no es necesario identificar explícitamente la función con el campo EntryPoint . De lo contrario, use uno de los siguientes formularios de atributo para indicar un nombre o ordinal:
[DllImport("DllName", EntryPoint = "Functionname")]
[DllImport("DllName", EntryPoint = "#123")]
Observe que debe prefijar un ordinal con el signo de libra (#).
En el ejemplo siguiente se muestra cómo reemplazar MessageBoxA por MsgBox en el código mediante el campo EntryPoint .
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);