Použití explicitního volání PInvoke v jazyce C++ (atribut DllImport)
Rozhraní .NET Framework poskytuje explicitní funkce volání platformy (nebo PInvoke) s atributem Dllimport
, které umožňují spravovaným aplikacím volat nespravované funkce zabalené uvnitř knihoven DLL. Explicitní PInvoke se vyžaduje v situacích, kdy jsou nespravovaná rozhraní API zabalená jako knihovny DLL a zdrojový kód není k dispozici. Volání funkcí Win32, například vyžaduje PInvoke. V opačném případě použijte implicitní volání P{Invoke; další informace najdete v tématu Použití zprostředkovatele komunikace C++ (Implicitní volání PInvoke ).
PInvoke funguje pomocí .DllImportAttribute Tento atribut, který přebírá název knihovny DLL jako první argument, je umístěn před deklaraci funkce pro každý vstupní bod knihovny DLL, který bude použit. Podpis funkce se musí shodovat s názvem funkce exportované knihovnou DLL (ale převod některých typů lze provést implicitně definováním DllImport
deklarací z hlediska spravovaných typů.)
Výsledkem je spravovaný vstupní bod pro každou nativní funkci KNIHOVNY DLL, která obsahuje potřebný přechodový kód (nebo thunk) a jednoduché převody dat. Spravované funkce pak mohou volat knihovnu DLL prostřednictvím těchto vstupních bodů. Kód vložený do modulu jako výsledek PInvoke je zcela spravovaný.