Esempi vari di marshalling

I fattori come le operazioni di Garbage Collection e di threading possono avere effetto sul comportamento del gestore di marshalling di interoperabilità. Alcune piccole differenze nella programmazione e nei modelli dei tipi, inoltre, possono rendere confuso il passaggio di dati a una libreria non gestita. In questa sezione viene fornito un insieme di esempi relativi ad alcune di queste differenze.

Nella seguente tabella sono elencate le opzioni di marshalling per vari tipi di elementi con la descrizione dell'uso e un collegamento all'esempio corrispondente.

Tipo di elemento Descrizione Esempio

Puntatore a funzione

Passa un delegato a una funzione non gestita per la quale è previsto un puntatore a funzione.

Callback

HandleRef

Utilizza la struttura HandleRef per evitare la procedura di Garbage Collection.

HandleRef

LPARAM

Utilizza la struttura GCHandle per passare un oggetto gestito a una funzione non gestita per la quale è previsto un tipo LPARAM.

GCHandle

Apartment a thread singolo (STA, Single-Threaded Apartment)/apartment con multithreading (MTA, Multithreaded Apartment)

Cambia le impostazioni di apartment predefinite quando una funzione non gestita chiama CoInitialize.

ActiveDir

void*

Chiama una funzione il cui parametro è void*.

Un tipo void.

Vedere anche

Concetti

Tipi di dati del richiamo piattaforma
Marshalling di stringhe
Marshalling di classi, strutture e unioni
Marshalling di matrici di tipi

Altre risorse

Marshalling dei dati con richiamo piattaforma