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 атрибут для импорта функции 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 |
Указывает, преобразуются ли |
| SetLastError |
Указывает, задает ли вызывающий объект ошибку ( |
| 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) |