DllImportAttribute Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Označuje, že atributovaná metoda je vystavena nespravovanou dynamickou knihovnou (DLL) jako statický vstupní bod.
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
- Dědičnost
- Atributy
Příklady
Následující příklad kódu ukazuje, jak použít DllImportAttribute atribut k importu funkce Win32 MessageBox . Příklad kódu pak volá importovanou metodu.
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
Poznámky
Tento atribut můžete použít na metody.
Atribut DllImportAttribute poskytuje informace potřebné k volání funkce exportované z nespravované knihovny DLL. Jako minimální požadavek musíte zadat název knihovny DLL obsahující vstupní bod.
Tento atribut použijete přímo u definic metod jazyka C#; kompilátor Visual Basic však generuje tento atribut při použití příkazu Declare. U komplexních definic metod, které zahrnují BestFitMapping, CallingConvention, ExactSpelling, PreserveSig, SetLastError nebo ThrowOnUnmappableChar polí, použijete tento atribut přímo na definice metody Visual Basic.
Místo toho zvažte použití atributu LibraryImportAttribute .
Note
JScript nepodporuje tento atribut. Pro přístup k nespravovaným metodám rozhraní API z programů JScriptu můžete použít třídy obálky jazyka C# nebo Visual Basic.
Další informace o použití služby vyvolání platformy pro přístup k funkcím v nespravovaných knihovnách DLL naleznete v tématu Využívání nespravovaných funkcí knihovny DLL.
Note
Nepodporuje DllImportAttribute zařazování obecných typů.
Konstruktory
| Name | Description |
|---|---|
| DllImportAttribute(String) |
Inicializuje novou instanci DllImportAttribute třídy s názvem knihovny DLL obsahující metodu pro import. |
Pole
| Name | Description |
|---|---|
| BestFitMapping |
Povolí nebo zakáže nejlepší chování mapování při převodu znaků Unicode na znaky ANSI. |
| CallingConvention |
Označuje konvenci volání vstupního bodu. |
| CharSet |
Označuje, jak zařaizovat parametry řetězce do metody a ovládací prvky název mangling. |
| EntryPoint |
Označuje název nebo pořadový název vstupního bodu knihovny DLL, který má být volána. |
| ExactSpelling |
Určuje, zda pole způsobí, že CharSet modul CLR (Common Language Runtime) prohledá nespravovanou knihovnu DLL pro jiné názvy vstupních bodů, než je zadaný. |
| PreserveSig |
Určuje, zda nespravované metody, které mají |
| SetLastError |
Určuje, zda volaný nastaví chybu ( |
| ThrowOnUnmappableChar |
Povolí nebo zakáže vyvolání výjimky u nemapovatelného znaku Unicode, který je převeden na znak ANSI "?" . |
Vlastnosti
| Name | Description |
|---|---|
| TypeId |
Při implementaci v odvozené třídě získá jedinečný identifikátor pro tento Attribute. (Zděděno od Attribute) |
| Value |
Získá název souboru DLL, který obsahuje vstupní bod. |
Metody
| Name | Description |
|---|---|
| Equals(Object) |
Vrátí hodnotu, která určuje, zda je tato instance rovna zadanému objektu. (Zděděno od Attribute) |
| GetHashCode() |
Vrátí kód hash pro tuto instanci. (Zděděno od Attribute) |
| GetType() |
Získá Type aktuální instance. (Zděděno od Object) |
| IsDefaultAttribute() |
Při přepsání v odvozené třídě určuje, zda hodnota této instance je výchozí hodnotou pro odvozenou třídu. (Zděděno od Attribute) |
| Match(Object) |
Při přepsání v odvozené třídě vrátí hodnotu, která určuje, zda se tato instance rovná zadanému objektu. (Zděděno od Attribute) |
| MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Object. (Zděděno od Object) |
| ToString() |
Vrátí řetězec, který představuje aktuální objekt. (Zděděno od Object) |
Explicitní implementace rozhraní
| Name | Description |
|---|---|
| _Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Mapuje sadu názvů na odpovídající sadu identifikátorů pro rozesílání. (Zděděno od Attribute) |
| _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
Načte informace o typu objektu, který lze použít k získání informací o typu pro rozhraní. (Zděděno od Attribute) |
| _Attribute.GetTypeInfoCount(UInt32) |
Získá počet rozhraní typu informací, které objekt poskytuje (0 nebo 1). (Zděděno od Attribute) |
| _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Poskytuje přístup k vlastnostem a metodám vystaveným objektem. (Zděděno od Attribute) |