Especificando um ponto de entrada
Um ponto de entrada identifica o local de uma função em uma DLL.Dentro de um projeto gerenciado, o nome original ou o ponto de entrada ordinal de uma função de destino identifica que funcionam em limite de interoperação.Além disso, você pode mapear o ponto de entrada para um nome diferente, renomeando efetivamente a função.
Veja a seguir uma lista das possíveis razões para renomear uma função de DLL:
Para evitar o uso de nomes de função API que diferenciam diferenciar maiúsculas de minúsculas
Para cumprir os padrões de nomenclatura existentes
Para acomodar as funções que levam a diferentes tipos de dados (declarando várias versões da mesma função DLL)
Para simplificar o uso de APIs que contêm versões ANSI e Unicode
Este tópico demonstra como renomear uma função de DLL no código gerenciado.
Renomear uma função no Visual Basic
Visual Basic usa o Função palavra-chave a Declarar demonstrativo para conjunto o DllImportAttribute.EntryPoint campo. O exemplo a seguir mostra uma declaração básica.
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
Você pode substituir o MessageBox ponto de entrada com MsgBox , incluindo o Alias palavra-chave em sua definição, sistema autônomo mostrado no exemplo a seguir.Em ambos os exemplos a Automáticopalavra-chave elimina a necessidade de especificar a versão do conjunto de caractere do ponto de entrada.Para obter mais informações sobre como selecionar um caractere de conjunto, consulte Especificando um conjunto de caracteres.
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
Renomear uma função em translation from VPE for Csharp e C++
Você pode usar o DllImportAttribute.EntryPoint campo para especificar uma função de DLL por nome ou ordinal. Se o nome de função em sua definição de método é a mesma sistema autônomo o ponto de entrada na DLL, não é necessário identificar explicitamente a função com o EntryPoint campo.Caso contrário, use um dos seguintes formulários de atributo para indicar um nome ou o ordinal:
[DllImport("dllname", EntryPoint="Functionname")]
[DllImport("dllname", EntryPoint="#123")]
Observe que você deve prefixar uma ordinal com o sinal de sustenido (#).
O exemplo a seguir demonstra como substituir MessageBoxA with MsgBox no seu código usando o EntryPoint campo.
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);
Consulte também
Conceitos
Criando protótipos em código gerenciado
Exemplos de invocação de plataforma