DllImportAttribute Класс

Определение

Указывает, что метод атрибута предоставляется неуправляемой библиотекой динамической компоновки (DLL) в качестве статической точки входа.

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
Наследование
DllImportAttribute
Атрибуты

Примеры

В следующем примере кода показано, как использовать DllImportAttribute атрибут для импорта функции Win32 MessageBox . Затем в примере кода вызывается импортированный метод.

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

Комментарии

Этот атрибут можно применить к методам.

Атрибут DllImportAttribute предоставляет сведения, необходимые для вызова функции, экспортируемой из неуправляемой библиотеки DLL. Как минимум, необходимо указать имя библиотеки DLL, содержащей точку входа.

Этот атрибут применяется непосредственно к определениям методов C#; однако компилятор Visual Basic выдает этот атрибут при использовании инструкции Declare. Для сложных определений методов, включая BestFitMapping, CallingConvention, ExactSpelling, PreserveSig, SetLastError или поля ThrowOnUnmappableChar, этот атрибут применяется непосредственно к определениям методов Visual Basic. Вместо этого рекомендуется использовать LibraryImportAttribute атрибут.

Note

JScript не поддерживает этот атрибут. Классы-оболочки C# или Visual Basic можно использовать для доступа к неуправляемым методам API из программ JScript.

Дополнительные сведения об использовании службы вызова платформы для доступа к функциям в неуправляемых библиотеках DLL см. в разделе "Использование неуправляемых функций DLL".

Note

Не DllImportAttribute поддерживает маршалинг универсальных типов.

Конструкторы

Имя Описание
DllImportAttribute(String)

Инициализирует новый экземпляр DllImportAttribute класса с именем библиотеки DLL, содержащей метод для импорта.

Поля

Имя Описание
BestFitMapping

Включает или отключает оптимальное поведение сопоставления при преобразовании символов Юникода в символы ANSI.

CallingConvention

Указывает соглашение о вызове точки входа.

CharSet

Указывает, как маршалировать строковые параметры в метод и управлять именами.

EntryPoint

Указывает порядковый номер или порядковый номер вызываемой точки входа DLL.

ExactSpelling

Определяет, вызывает ли CharSet поле среду CLR поиск неуправляемой библиотеки DLL для имен точек входа, отличных от указанного.

PreserveSig

Указывает, преобразуются ли HRESULT неуправляемые методы с HRESULT возвращаемыми значениями напрямую или автоматически ли возвращаемые значения преобразуются в исключения.

SetLastError

Указывает, задает ли вызывающий объект ошибку (SetLastError на Windows или errno на других платформах) перед возвратом из метода атрибута.

ThrowOnUnmappableChar

Включает или отключает исключение для неуправляемого символа Юникода, преобразованного в символ ANSI "?"

Свойства

Имя Описание
TypeId

При реализации в производном классе получает уникальный идентификатор для этого Attribute.

(Унаследовано от Attribute)
Value

Возвращает имя DLL-файла, содержащего точку входа.

Методы

Имя Описание
Equals(Object)

Возвращает значение, указывающее, равен ли этот экземпляр указанному объекту.

(Унаследовано от Attribute)
GetHashCode()

Возвращает хэш-код для этого экземпляра.

(Унаследовано от Attribute)
GetType()

Возвращает Type текущего экземпляра.

(Унаследовано от Object)
IsDefaultAttribute()

При переопределении в производном классе указывает, является ли значение этого экземпляра значением по умолчанию для производного класса.

(Унаследовано от Attribute)
Match(Object)

При переопределении в производном классе возвращает значение, указывающее, равен ли этот экземпляр указанному объекту.

(Унаследовано от Attribute)
MemberwiseClone()

Создает неглубокую копию текущей Object.

(Унаследовано от Object)
ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)

Явные реализации интерфейса

Имя Описание
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Сопоставляет набор имен соответствующему набору идентификаторов диспетчеризации.

(Унаследовано от Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Извлекает сведения о типе объекта, который можно использовать для получения сведений о типе для интерфейса.

(Унаследовано от Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Возвращает количество предоставляемых объектом интерфейсов для доступа к сведениям о типе (0 или 1).

(Унаследовано от Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Предоставляет доступ к свойствам и методам, предоставляемым объектом.

(Унаследовано от Attribute)

Применяется к

См. также раздел