Nota
O acceso a esta páxina require autorización. Pode tentar iniciar sesión ou modificar os directorios.
O acceso a esta páxina require autorización. Pode tentar modificar os 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 Function palabra clave en la Declare instrucción 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 MessageBox punto de entrada por MsgBox al incluir la palabra clave Alias en su definición, como se muestra en el ejemplo siguiente. En ambos ejemplos, la Auto palabra clave 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 EntryPoint campo . 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 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);