Udostępnij za pośrednictwem


Omówienie przekazywania międzyprocesowego w języku C++

W trybie mieszanym możesz czasem musi zorganizować danych między typami macierzystych i zarządzanych.Visual Studio 2008wprowadzone kierującego biblioteki, aby pomóc MARSZAŁEK i konwertowanie danych w prosty sposób.

Można użyć biblioteki kierującego, z lub bez Klasa marshal_context.Pewne konwersje wymagają kontekstu.Inne konwersji można zaimplementować za pomocą marshal_as funkcji.W następującej tabeli przedstawiono bieżące konwersje obsługiwane, czy wymagają one kontekst i jakiego pliku MARSZAŁEK musi zawierać:

Z typu

Aby wpisać

Metoda Marshal

Dołączyć plik

System::String ^

const char *

marshal_context

Marshal.h

const char *

System::String ^

marshal_as

Marshal.h

CHAR *

System::String ^

marshal_as

Marshal.h

System::String ^

Const wchar_t *

marshal_context

Marshal.h

Const wchar_t *

System::String ^

marshal_as

Marshal.h

wchar_t *

System::String ^

marshal_as

Marshal.h

System::IntPtr

UCHWYT

marshal_as

marshal_windows.h

UCHWYT

System::IntPtr

marshal_as

marshal_windows.h

System::String ^

BSTR

marshal_context

marshal_windows.h

BSTR

System::String ^

marshal_as

Marshal.h

System::String ^

bstr_t

marshal_as

marshal_windows.h

bstr_t

System::String ^

marshal_as

marshal_windows.h

System::String ^

szablonowej

marshal_as

marshal_cppstd.h

szablonowej

System::String ^

marshal_as

marshal_cppstd.h

System::String ^

STD::wstring

marshal_as

marshal_cppstd.h

STD::wstring

System::String ^

marshal_as

marshal_cppstd.h

System::String ^

CStringT <char>

marshal_as

marshal_atl.h

CStringT <char>

System::String ^

marshal_as

marshal_atl.h

System::String ^

CStringT <wchar_t>

marshal_as

marshal_atl.h

CStringT <wchar_t>

System::String ^

marshal_as

marshal_atl.h

System::String ^

CComBSTR

marshal_as

marshal_atl.h

CComBSTR

System::String ^

marshal_as

marshal_atl.h

Kierowanie wymaga kontekstu, tylko wtedy, gdy zorganizowania danych zarządzanych do macierzystych typów i typu macierzystego, którą konwertujesz nie ma destruktora do automatycznego oczyszczania.Kontekst kierującego niszczy przydzielonego macierzystego typu danych w jej destruktor.Dlatego konwersji, które wymagają kontekstu będzie obowiązywać tylko do kontekstu jest usuwany.Aby zapisać wszelkie organizowane wartości, należy skopiować wartości do własnych zmiennych.

[!UWAGA]

Po osadzeniu NULLs w ciągu wynik kierowanie ciąg nie jest gwarantowane.Osadzone NULLs może powodować ciąg, który ma być obcięta lub mogą być zachowane.

Biblioteka kierującego jest rozszerzalny, dzięki czemu można dodać własne typy kierującego.Aby uzyskać więcej informacji o rozszerzaniu kierującego biblioteki, zobacz Jak: rozszerzenie kierującego biblioteki.

We wcześniejszych wersjach można zorganizować dane za pomocą Wywołać platformy.Aby uzyskać więcej informacji o PInvoke, zobacz Wywoływanie funkcji macierzystych z kodu zarządzanego.

Zobacz też

Zadania

Jak: rozszerzenie kierującego biblioteki

Inne zasoby

Obsługa języka C++ Library