DllImportAttribute Classe

Definizione

Indica che il metodo con attributi è esposto da una libreria di collegamento dinamico (DLL) non gestita come punto di ingresso statico.

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
Ereditarietà
DllImportAttribute
Attributi

Esempio

L'esempio di codice seguente illustra come usare l'attributo DllImportAttribute per importare la funzione Win32 MessageBox . L'esempio di codice chiama quindi il metodo importato.

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

Commenti

È possibile applicare questo attributo ai metodi.

L'attributo DllImportAttribute fornisce le informazioni necessarie per chiamare una funzione esportata da una DLL non gestita. Come requisito minimo, è necessario specificare il nome della DLL contenente il punto di ingresso.

Questo attributo viene applicato direttamente alle definizioni dei metodi C#; Tuttavia, il compilatore Visual Basic genera questo attributo quando si usa l'istruzione Declare. Per definizioni di metodi complessi che includono BestFitMapping, CallingConvention, ExactSpelling, PreserveSig, SetLastError o campi /ThrowOnUnmappableChar, applicare questo attributo direttamente alle definizioni dei metodi di Visual Basic. Prendere invece in considerazione l'uso dell'attributo LibraryImportAttribute .

Note

JScript non supporta questo attributo. È possibile usare classi wrapper C# o Visual Basic per accedere ai metodi API non gestiti dai programmi JScript.

Per altre informazioni sull'uso del servizio platform invoke per accedere alle funzioni nelle DLL non gestite, vedere Utilizzo di funzioni DLL non gestite.

Note

non DllImportAttribute supporta il marshalling di tipi generici.

Costruttori

Nome Descrizione
DllImportAttribute(String)

Inizializza una nuova istanza della DllImportAttribute classe con il nome della DLL contenente il metodo da importare.

Campi

Nome Descrizione
BestFitMapping

Abilita o disabilita il comportamento di mapping più adatto durante la conversione di caratteri Unicode in caratteri ANSI.

CallingConvention

Indica la convenzione di chiamata di un punto di ingresso.

CharSet

Indica come effettuare il marshalling dei parametri stringa al metodo e al mangling dei controlli.

EntryPoint

Indica il nome o l'ordinale del punto di ingresso della DLL da chiamare.

ExactSpelling

Controlla se il CharSet campo fa sì che Common Language Runtime esequisi una DLL non gestita per individuare nomi di punti di ingresso diversi da quello specificato.

PreserveSig

Indica se i metodi non gestiti con HRESULT valori restituiti vengono convertiti direttamente o se HRESULT i valori restituiti vengono convertiti automaticamente in eccezioni.

SetLastError

Indica se il chiamato imposta un errore (SetLastError su Windows o errno in altre piattaforme) prima di tornare dal metodo con attributi.

ThrowOnUnmappableChar

Abilita o disabilita la generazione di un'eccezione in un carattere Unicode non modificabile convertito in un carattere ANSI "?".

Proprietà

Nome Descrizione
TypeId

Se implementato in una classe derivata, ottiene un identificatore univoco per questo Attribute.

(Ereditato da Attribute)
Value

Ottiene il nome del file DLL che contiene il punto di ingresso.

Metodi

Nome Descrizione
Equals(Object)

Restituisce un valore che indica se questa istanza è uguale a un oggetto specificato.

(Ereditato da Attribute)
GetHashCode()

Restituisce il codice hash per questa istanza.

(Ereditato da Attribute)
GetType()

Ottiene il Type dell'istanza corrente.

(Ereditato da Object)
IsDefaultAttribute()

Quando sottoposto a override in una classe derivata, indica se il valore di questa istanza è il valore predefinito per la classe derivata.

(Ereditato da Attribute)
Match(Object)

Quando sottoposto a override in una classe derivata, restituisce un valore che indica se questa istanza è uguale a un oggetto specificato.

(Ereditato da Attribute)
MemberwiseClone()

Crea una copia superficiale del Objectcorrente.

(Ereditato da Object)
ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)

Implementazioni dell'interfaccia esplicita

Nome Descrizione
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Esegue il mapping di un set di nomi a un set corrispondente di identificatori dispatch.

(Ereditato da Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Recupera le informazioni sul tipo per un oggetto, che può essere utilizzato per ottenere le informazioni sul tipo per un'interfaccia.

(Ereditato da Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Recupera il numero di interfacce di informazioni sul tipo fornite da un oggetto (0 o 1).

(Ereditato da Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Fornisce l'accesso alle proprietà e ai metodi esposti da un oggetto .

(Ereditato da Attribute)

Si applica a

Vedi anche