Compartilhar via


Classe DllImportAttribute

 

Observação

The .NET API Reference documentation has a new home. Visit the .NET API Browser on docs.microsoft.com to see the new experience.

Indica que o método atribuído é exposto por uma DLL (biblioteca de vínculo dinâmico) não gerenciada como um ponto de entrada estático.

Namespace:   System.Runtime.InteropServices
Assembly:  mscorlib (em mscorlib.dll)

Hierarquia de Herança

System.Object
  System.Attribute
    System.Runtime.InteropServices.DllImportAttribute

Sintaxe

[AttributeUsageAttribute(AttributeTargets.Method, Inherited = false)]
[ComVisibleAttribute(true)]
public sealed class DllImportAttribute : Attribute
[AttributeUsageAttribute(AttributeTargets::Method, Inherited = false)]
[ComVisibleAttribute(true)]
public ref class DllImportAttribute sealed : Attribute
[<Sealed>]
[<AttributeUsageAttribute(AttributeTargets.Method, Inherited = false)>]
[<ComVisibleAttribute(true)>]
type DllImportAttribute = 
    class
        inherit Attribute
    end
<AttributeUsageAttribute(AttributeTargets.Method, Inherited := False)>
<ComVisibleAttribute(True)>
Public NotInheritable Class DllImportAttribute
    Inherits Attribute

Construtores

Nome Descrição
System_CAPS_pubmethod DllImportAttribute(String)

Inicializa uma nova instância da classe DllImportAttribute com o nome da DLL que contém o método a ser importado.

Propriedades

Nome Descrição
System_CAPS_pubproperty TypeId

Quando implementado em uma classe derivada, obtém um identificador exclusivo para este Attribute.(Herdado de Attribute.)

System_CAPS_pubproperty Value

Obtém o nome do arquivo DLL que contém o ponto de entrada.

Métodos

Nome Descrição
System_CAPS_pubmethod Equals(Object)

Esta API dá suporte à infraestrutura produto e não se destina a ser usada diretamente do seu código. Retorna um valor que indica se essa instância é igual a um objeto especificado.(Herdado de Attribute.)

System_CAPS_pubmethod GetHashCode()

Retorna o código hash para essa instância.(Herdado de Attribute.)

System_CAPS_pubmethod GetType()

Obtém o Type da instância atual.(Herdado de Object.)

System_CAPS_pubmethod IsDefaultAttribute()

Quando substituído em uma classe derivada, indica se o valor dessa instância é o valor padrão para a classe derivada.(Herdado de Attribute.)

System_CAPS_pubmethod Match(Object)

Quando substituído em uma classe derivada, retorna um valor que indica se essa instância é igual a um objeto especificado.(Herdado de Attribute.)

System_CAPS_pubmethod ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.(Herdado de Object.)

Campos

Nome Descrição
System_CAPS_pubfield BestFitMapping

Habilita ou desabilita o comportamento de mapeamento mais adequado ao converter caracteres Unicode em caracteres ANSI.

System_CAPS_pubfield CallingConvention

Indica a convenção de chamada de um ponto de entrada.

System_CAPS_pubfield CharSet

Indica como realizar marshaling de parâmetros de cadeia de caracteres para o método e a desconfiguração de nome de controles.

System_CAPS_pubfield EntryPoint

Indica o nome ou o ordinal do ponto de entrada DLL a ser chamado.

System_CAPS_pubfield ExactSpelling

Controla se o campo DllImportAttribute.CharSet faz com que a Common Language Runtime pesquise uma DLL não gerenciada quanto a nomes de ponto de entrada diferentes daquele especificado.

System_CAPS_pubfield PreserveSig

Indica se os métodos não gerenciados que têm valores retornados HRESULT ou retval são traduzidos diretamente ou se os valores retornados HRESULT e retval são convertidos automaticamente para exceções.

System_CAPS_pubfield SetLastError

Indica se o computador chamado chama a SetLastError função da API do Win32 antes de retornar do método atribuído.

System_CAPS_pubfield ThrowOnUnmappableChar

Habilita ou desabilita a geração de uma exceção em um caractere Unicode não mapeável que é convertido em um caractere "?" ANSI.

Implementações Explícitas da Interface

Nome Descrição
System_CAPS_pubinterfaceSystem_CAPS_privmethod _Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Mapeia um conjunto de nomes para um conjunto correspondente de identificadores de expedição.(Herdado de Attribute.)

System_CAPS_pubinterfaceSystem_CAPS_privmethod _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Recupera as informações de tipo para um objeto, que pode ser usado para obter as informações de tipo para uma interface.(Herdado de Attribute.)

System_CAPS_pubinterfaceSystem_CAPS_privmethod _Attribute.GetTypeInfoCount(UInt32)

Retorna o número de interfaces de informações do tipo que um objeto fornece (0 ou 1).(Herdado de Attribute.)

System_CAPS_pubinterfaceSystem_CAPS_privmethod _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Fornece acesso a propriedades e métodos expostos por um objeto.(Herdado de Attribute.)

Comentários

Você pode aplicar esse atributo para métodos.

O DllImportAttribute atributo fornece as informações necessárias para chamar uma função exportada de uma DLL não gerenciada. Como um requisito mínimo, você deve fornecer o nome da DLL que contém o ponto de entrada.

Esse atributo é aplicado diretamente ao c# e as definições de método do C++. No entanto, o compilador do Visual Basic emite esse atributo quando você usa o Declare instrução. Para obter definições de método complexo que incluem BestFitMapping, CallingConvention, ExactSpelling, PreserveSig, SetLastError, ou ThrowOnUnmappableChar campos, esse atributo é aplicado diretamente a definições de método do Visual Basic.

Observação JScript não dá suporte a esse atributo. Você pode usar o c# ou Visual Basic classes de wrapper para acessar os métodos da API não gerenciados de programas de JScript.

Para obter informações adicionais sobre como usar a plataforma de invocar o serviço de acesso funções em DLLs não gerenciados, consulte Consumindo funções de DLL não gerenciadas.

Observação

O DllImportAttribute não oferece suporte para marshaling de tipos genéricos.

Exemplos

O exemplo de código a seguir mostra como usar o DllImportAttribute atributo para importar o Win32 MessageBox função. O exemplo de código, em seguida, chama 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
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

Informações de Versão

Plataforma Universal do Windows
Disponível desde 8
.NET Framework
Disponível desde 1.1
Biblioteca de Classes Portátil
Com suporte no: plataformas portáteis do .NET
Silverlight
Disponível desde 2.0
Windows Phone Silverlight
Disponível desde 7.0
Windows Phone
Disponível desde 8.1

Acesso thread-safe

Quaisquer membros estáticos públicos ( Compartilhado no Visual Basic) desse tipo são thread-safe. Não há garantia de que qualquer membro de instância seja thread-safe.

Confira Também

SetLastError
ExactSpelling
PreserveSig
CallingConvention
Namespace System.Runtime.InteropServices

Retornar ao início