Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platform invoke je služba, která umožňuje spravovanému kódu volat nespravované funkce implementované v knihovnách dynamického propojení (DLL), například funkce v rozhraní API systému Windows. Vyhledá a vyvolá exportovanou funkci a podle potřeby zařadí její argumenty (celá čísla, řetězce, pole, struktury atd.) přes hranici interoperace.
Tato část představuje úlohy spojené s používáním nespravovaných funkcí knihovny DLL a poskytuje další informace o volání platformy. Kromě následujících úloh je potřeba vzít v úvahu obecné aspekty a odkaz s dalšími informacemi a příklady.
Využití exportovaných funkcí knihovny DLL
Identifikace funkcí v knihovnách DLL
Minimálně je nutné zadat název funkce a název knihovny DLL, která ji obsahuje.
Vytvořte třídu pro uložení funkcí knihovny DLL.
Můžete použít existující třídu, vytvořit jednotlivé třídy pro každou nespravovanou funkci nebo vytvořit jednu třídu, která obsahuje sadu souvisejících nespravovaných funkcí.
Vytváření prototypů ve spravovaném kódu
[Visual Basic] Použijte příkaz
Declares klíčovými slovyFunctionaLib. V některých výjimečných případech můžete použítDllImportAttributes klíčovými slovy Sdílená funkce. Tyto případy jsou vysvětleny dále v této části.[C#] Použijte
DllImportAttributek identifikaci knihovny DLL a funkce. Označte metodu modifikátorystaticaextern.[C++] Použijte
DllImportAttributek identifikaci knihovny DLL a funkcí. Označte metodu obálky nebo funkci extern "C".-
Volejte metodu ve spravované třídě stejně jako jakoukoli jinou spravovanou metodu. Předávání struktur a implementace funkcí zpětného volání jsou zvláštní případy.
Příklady, které demonstrují, jak sestavit deklarace založené na .NET, které se mají použít s platformním voláním, najdete v části Marshalling Data with Platform Invoke.
Bližší pohled na vyvolání funkcí platformy
Platform Invoke spoléhá na metadata k vyhledání exportovaných funkcí a zprostředkování jejich argumentů za běhu. Následující obrázek znázorňuje tento proces.
Když platforma volá nespravovanou funkci, provede následující posloupnost akcí:
Vyhledá knihovnu DLL obsahující funkci.
Načte knihovnu DLL do paměti.
Vyhledá adresu funkce v paměti a vloží její argumenty do zásobníku, přičemž podle potřeby uspořádá data.
Poznámka:
Vyhledání a načtení knihovny DLL a vyhledání adresy funkce v paměti probíhá pouze při prvním volání funkce.
Přenese řízení do nespravované funkce.
Platformní volání vyvolá spravovanému volajícímu výjimky vygenerované nespravovanou funkcí.