Поделиться через


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# и C++; Однако компилятор Visual Basic выдает этот атрибут при использовании Declare оператора . Для определений сложных методов, которые включают BestFitMappingполя , CallingConvention, ExactSpelling, PreserveSig, SetLastError, или ThrowOnUnmappableChar , этот атрибут применяется непосредственно к определениям методов Visual Basic.

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

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

Примечание

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

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

DllImportAttribute(String)

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

Поля

BestFitMapping

Включает или отключает поведение наилучшего сопоставления при преобразовании знаков Юникода в знаки ANSI.

CallingConvention

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

CharSet

Показывает способ маршалинга параметров строки для метода, а также управляет искажением имени.

EntryPoint

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

ExactSpelling

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

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)

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

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