Creazione di una classe che contenga le funzioni di DLLCreating a Class to Hold DLL Functions

Il wrapping di una funzione di DLL frequentemente usata in una classe gestita è un modo efficace per incapsulare la funzionalità della piattaforma.Wrapping a frequently used DLL function in a managed class is an effective approach to encapsulate platform functionality. Anche se non è obbligatorio in tutti i casi, è preferibile fornire un wrapper di classe, perché la definizione delle funzioni di DLL è un'attività complessa e soggetta a errori.Although it is not mandatory to do so in every case, providing a class wrapper is convenient because defining DLL functions can be cumbersome and error-prone. In caso di programmazione in C# o in Visual Basic, è necessario dichiarare le funzioni di DLL in una classe o in un modulo Visual Basic.If you are programming in Visual Basic or C#, you must declare DLL functions within a class or Visual Basic module.

All'interno di una classe si definisce un metodo statico per ogni funzione di DLL che si vuole chiamare.Within a class, you define a static method for each DLL function you want to call. La definizione può includere informazioni aggiuntive, come il set di caratteri o la convenzione di chiamata usata per passare gli argomenti del metodo. Se si omettono queste informazioni, verranno usate le impostazioni predefinite.The definition can include additional information, such as the character set or the calling convention used in passing method arguments; by omitting this information, you select the default settings. Per un elenco completo delle opzioni di dichiarazione e delle relative impostazioni predefinite, vedere Creazione di prototipi nel codice gestito.For a complete list of declaration options and their default settings, see Creating Prototypes in Managed Code.

Una volta effettuato il wrapping è possibile chiamare i metodi della classe, così come si chiamano i metodi statici di qualsiasi altra classe.Once wrapped, you can call the methods on the class as you call static methods on any other class. Con platform invoke, la funzione esportata sottostante viene gestita automaticamente.Platform invoke handles the underlying exported function automatically.

Quando si progetta una classe gestita che supporti platform invoke, è necessario tenere in considerazione le relazioni tra le classi e le funzioni di DLL.When designing a managed class for platform invoke, consider the relationships between classes and DLL functions. Ad esempio, è possibile:For example, you can:

  • Dichiarare funzioni di DLL in una classe esistente.Declare DLL functions within an existing class.

  • Creare una classe distinta per ciascuna funzione di DLL, mantenendo le funzioni isolate e facilmente rintracciabili.Create an individual class for each DLL function, keeping functions isolated and easy to find.

  • Creare una sola classe per un insieme di funzioni di DLL correlate, al fine di formare raggruppamenti logici e ridurre l'overhead.Create one class for a set of related DLL functions to form logical groupings and reduce overhead.

È possibile assegnare alla classe e ai relativi metodi i nomi che si preferiscono.You can name the class and its methods as you please. Per alcuni esempi che mostrano come costruire dichiarazioni basate su .NET da usare con platform invoke, vedere , vedere Marshalling dei dati con platform invoke.For examples that demonstrate how to construct .NET-based declarations to be used with platform invoke, see Marshaling Data with Platform Invoke.

Vedere ancheSee also