Używanie jawnej funkcji PInvoke w języku C++ (atrybut DllImport)
Program .NET Framework udostępnia jawne funkcje wywołania platformy (lub funkcji PInvoke) z atrybutem Dllimport
, aby umożliwić aplikacjom zarządzanym wywoływanie funkcji niezarządzanych spakowanych wewnątrz bibliotek DLL. Jawne wywołanie PInvoke jest wymagane w sytuacjach, w których niezarządzane interfejsy API są pakowane jako biblioteki DLL, a kod źródłowy jest niedostępny. Wywoływanie funkcji Win32 wymaga na przykład funkcji PInvoke. W przeciwnym razie użyj niejawnego P{Invoke; zobacz Using C++ Interop (Implicit PInvoke) (Używanie międzyoperacyjności języka C++ (niejawne wywołanie PInvoke), aby uzyskać więcej informacji.
Funkcja PInvoke działa przy użyciu polecenia DllImportAttribute. Ten atrybut, który przyjmuje nazwę biblioteki DLL jako pierwszy argument, jest umieszczany przed deklaracją funkcji dla każdego punktu wejścia biblioteki DLL, który będzie używany. Podpis funkcji musi być zgodny z nazwą funkcji wyeksportowanej przez bibliotekę DLL (ale niektóre konwersje typów można wykonać niejawnie, definiując DllImport
deklaracje pod względem typów zarządzanych).
Wynikiem jest zarządzany punkt wejścia dla każdej natywnej funkcji DLL, która zawiera niezbędny kod przejścia (lub thunk) i proste konwersje danych. Funkcje zarządzane mogą następnie wywoływać bibliotekę DLL za pośrednictwem tych punktów wejścia. Kod wstawiony do modułu w wyniku funkcji PInvoke jest całkowicie zarządzany.
W tej sekcji
Instrukcje: wywoływanie natywnych bibliotek DLL z kodu zarządzanego za pomocą funkcji PInvoke
Instrukcje: przeprowadzanie marshalingu ciągów za pomocą funkcji PInvoke
Instrukcje: przeprowadzanie marshalingu struktur za pomocą funkcji PInvoke
Instrukcje: przeprowadzanie marshalingu tablic za pomocą funkcji PInvoke
Instrukcje: przeprowadzanie marshalingu wskaźników funkcji za pomocą funkcji PInvoke
Instrukcje: przeprowadzanie marshalingu wskaźników osadzonych za pomocą funkcji PInvoke