DllImportAttribute Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Indica que o método atribuído é exposto por uma biblioteca de ligação dinâmica (DLL) não gerida como ponto de entrada estático.
public ref class DllImportAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Method, Inherited=false)]
public sealed class DllImportAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Method, Inherited=false)]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class DllImportAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Method, Inherited=false)>]
type DllImportAttribute = class
inherit Attribute
[<System.AttributeUsage(System.AttributeTargets.Method, Inherited=false)>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type DllImportAttribute = class
inherit Attribute
Public NotInheritable Class DllImportAttribute
Inherits Attribute
- Herança
- Atributos
Exemplos
O seguinte exemplo de código mostra como usar o DllImportAttribute atributo para importar a função Win32 MessageBox . O exemplo de código chama então o método importado.
using System;
using System.Runtime.InteropServices;
class Example
{
// Use DllImport to import the Win32 MessageBox function.
[DllImport("user32.dll", CharSet = CharSet.Unicode)]
public static extern int MessageBox(IntPtr hWnd, String text, String caption, uint type);
static void Main()
{
// Call the MessageBox function using platform invoke.
MessageBox(new IntPtr(0), "Hello World!", "Hello Dialog", 0);
}
}
Imports System.Runtime.InteropServices
Module Example
' Use DllImport to import the Win32 MessageBox function.
<DllImport("user32.dll", CharSet:=CharSet.Unicode)> _
Function MessageBox(ByVal hwnd As IntPtr, ByVal t As String, ByVal caption As String, ByVal t2 As UInt32) As Integer
End Function
Sub Main()
' Call the MessageBox function using platform invoke.
MessageBox(New IntPtr(0), "Hello World!", "Hello Dialog", 0)
End Sub
End Module
Observações
Pode aplicar esta característica a métodos.
O DllImportAttribute atributo fornece a informação necessária para chamar uma função exportada de uma DLL não gerida. Como requisito mínimo, deve fornecer o nome do DLL que contém o ponto de entrada.
Aplica-se este atributo diretamente às definições do método C#; No entanto, o compilador Visual Basic emite este atributo quando se usa a instrução />
Note
O JScript não suporta este atributo. Pode usar classes wrapper em C# ou Visual Basic para aceder a métodos API não geridos de programas JScript.
Para informações adicionais sobre a utilização do serviço de invocação da plataforma para aceder a funções em DLLs não geridas, veja Consuming Unmanaged DLL Functions.
Note
O DllImportAttribute não suporta o agrupamento de tipos genéricos.
Construtores
| Name | Description |
|---|---|
| DllImportAttribute(String) |
Inicializa uma nova instância da DllImportAttribute classe com o nome da DLL que contém o método a importar. |
Campos
| Name | Description |
|---|---|
| BestFitMapping |
Permite ou desativa o comportamento de mapeamento de melhor ajuste ao converter caracteres Unicode para caracteres ANSI. |
| CallingConvention |
Indica a convenção de chamada de um ponto de entrada. |
| CharSet |
Indica como fazer marshal dos parâmetros da string para o método e controla o nome mangling. |
| EntryPoint |
Indica o nome ou ordinal do ponto de entrada da DLL a ser chamado. |
| ExactSpelling |
Controla se o CharSet campo faz com que o runtime da linguagem comum procure numa DLL não gerida nomes de pontos de entrada diferentes do especificado. |
| PreserveSig |
Indica se os métodos não geridos que têm |
| SetLastError |
Indica se o chamado define um erro ( |
| ThrowOnUnmappableChar |
Permite ou desativa o lançamento de uma exceção num carácter Unicode impossível de mapear que é convertido para um carácter ANSI "?". |
Propriedades
| Name | Description |
|---|---|
| TypeId |
Quando implementado numa classe derivada, obtém um identificador único para esta Attribute. (Herdado de Attribute) |
| Value |
Obtém o nome do ficheiro DLL que contém o ponto de entrada. |
Métodos
| Name | Description |
|---|---|
| Equals(Object) |
Devolve um valor que indica se esta instância é igual a um objeto especificado. (Herdado de Attribute) |
| GetHashCode() |
Devolve o código de hash para esta instância. (Herdado de Attribute) |
| GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
| IsDefaultAttribute() |
Quando sobrescrito numa classe derivada, indica se o valor desta instância é o valor padrão para a classe derivada. (Herdado de Attribute) |
| Match(Object) |
Quando sobrescrito numa classe derivada, devolve um valor que indica se esta instância é igual a um objeto especificado. (Herdado de Attribute) |
| MemberwiseClone() |
Cria uma cópia superficial do atual Object. (Herdado de Object) |
| ToString() |
Devolve uma cadeia que representa o objeto atual. (Herdado de Object) |
Implementações de Interface Explícita
| Name | Description |
|---|---|
| _Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Mapeia um conjunto de nomes para um conjunto correspondente de identificadores de despacho. (Herdado de Attribute) |
| _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
Recupera a informação de tipo de um objeto, que pode ser usada para obter a informação de tipo para uma interface. (Herdado de Attribute) |
| _Attribute.GetTypeInfoCount(UInt32) |
Recupera o número de interfaces de informações de tipo que um objeto fornece (0 ou 1). (Herdado de Attribute) |
| _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Proporciona acesso a propriedades e métodos expostos por um objeto. (Herdado de Attribute) |