Marshalling dei dati con chiamata al sistema operativo
Per chiamare le funzioni esportate da una libreria non gestita, un'applicazione .NET Framework richiede un prototipo di funzione nel codice gestito che rappresenta la funzione non gestita. Per creare un prototipo che consenta il marshalling corretto dei dati mediante la chiamata al sistema operativo, occorre procedere nel modo seguente:
- Applicare l'attributo DLLImportAttribute alla funzione o al metodo static nel codice gestito.
- Sostituire i tipi di dati non gestiti con i tipi di dati gestiti.
È possibile utilizzare la documentazione fornita con una funzione non gestita per costruire un prototipo gestito equivalente applicando l'attributo con i relativi campi facoltativi e sostituendo i tipi di dati non gestiti con quelli gestiti. Per istruzioni su come applicare l'attributo DllImportAttribute, vedere Utilizzo delle funzioni di DLL non gestite.
In questa sezione vengono forniti esempi che dimostrano come creare i prototipi di funzioni gestite per passare argomenti e ricevere valori restituiti da funzioni esportate dalle librerie non gestite. Gli esempi consentono anche di dimostrare quando utilizzare l'attributo MarshalAsAttribute e la classe Marshal per effettuare il marshalling esplicito dei dati.
In questa sezione
- Tipi di dati della chiamata al sistema operativo
Viene fornito un elenco di tipi di dati gestiti e dei corrispondenti tipi di dati non gestiti. - Marshalling di stringhe
Viene descritto come passare le stringhe per valore, per riferimento, nelle strutture, nelle classi e nelle matrici. - Marshalling di classi, strutture e unioni
Viene descritto come passare le classi per valore, come passare varie strutture e come passare le unioni con tipi valore e misti. - Marshalling di matrici di tipi
Viene descritto come passare matrici multidimensionali di valori integer per valore e come passare matrici unidimensionali per riferimento. - Esempi vari di marshalling
Vengono descritti aspetti delle procedure di Garbage Collection e di threading che hanno effetto sul comportamento del marshalling di interoperabilità.
Argomenti correlati
- Marshalling di interoperabilità
Viene descritto il processo di marshalling dei dati da parte del runtime in e dal codice gestito. - Comportamento di marshalling predefinito
Vengono descritte le regole utilizzate dal servizio di marshalling di interoperabilità per il marshalling dei dati. - Utilizzo di funzioni di DLL non gestite
Viene descritto come chiamare le funzioni di DLL non gestite mediante la chiamata al sistema operativo.