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