Condividi tramite


Utilizzo di funzioni di DLL non gestite

Platform invoke costituisce un servizio che consente la chiamata di funzioni non gestite implementate in librerie a collegamento dinamico (DLL, Dynamic-Link Library), quali quelle della API Win32, da parte del codice gestito. Tale servizio trova e chiama una funzione esportata ed esegue il marshalling dei relativi argomenti (interi, stringhe, matrici, strutture e così via) nell'attraversamento dei limiti di interoperabilità, secondo necessità. Per ulteriori informazioni su questo servizio, vedere Informazioni dettagliate su platform invoke.

In questa sezione vengono descritte diverse attività associate all'utilizzo di funzioni di DLL non gestite. Oltre alle attività riportate di seguito, vi sono considerazioni generali e un rimando a ulteriori informazioni ed esempi.

Per utilizzare funzioni di DLL esportate

  1. Identificare le funzioni nelle DLL.

    È necessario specificare almeno il nome della funzione e il nome della DLL in cui è contenuta.

  2. Creare una classe che contenga le funzioni di DLL.

    È possibile utilizzare una classe esistente, creare una singola classe per ciascuna funzione non gestita oppure creare una classe contenente un insieme di funzioni non gestite correlate.

  3. Creare prototipi nel codice gestito.

    [Visual Basic] Utilizzare l'istruzione Declare con le parole chiave Function e Lib. In qualche raro caso è possibile utilizzare l'attributo DllImportAttribute con la parola chiave Shared Function. Tali casi vengono illustrati più avanti in questa sezione.

    [C#] Utilizzare l'attributo DllImportAttribute per identificare la DLL e la funzione. Contrassegnare il metodo con i modificatori static e extern.

    [C++] Utilizzare l'attributo DllImportAttribute per identificare la DLL e la funzione. Contrassegnare il metodo o la funzione wrapper con extern "C".

  4. Chiamare una funzione di DLL.

    Chiamare il metodo contenuto nella classe gestita allo stesso modo in cui si chiamerebbe qualunque altro metodo gestito. Il passaggio di strutture e l'utilizzo di funzioni di callback rappresentano casi particolari.

Per esempi della costruzione di dichiarazioni basate su .NET da utilizzare con platform invoke, vedere Marshalling dei dati con chiamata al sistema operativo.

Vedere anche

Concetti

Informazioni dettagliate su platform invoke

Esempi di platform invoke

Marshalling di interoperabilità

Altre risorse

Interoperabilità con codice non gestito