DllImportAttribute Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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à
- 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 |
| SetLastError |
Indica se il chiamato imposta un errore ( |
| 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) |