Usar un elemento PInvoke explícito en C++ (Atributo DllImport)
.NET Framework proporciona características explícitas para invocación de plataforma (PInvoke) con el atributo Dllimport
para permitir que las aplicaciones administradas llamen a funciones no administradas empaquetadas en archivos DLL. La función PInvoke explícita se requiere en situaciones donde se empaquetan API no administradas como archivos DLL y el código fuente no está disponible. Al llamar a las funciones de Win32, por ejemplo, se requiere PInvoke. De lo contrario, use P{Invoke implícita; vea Uso de la interoperabilidad de C++ (PInvoke implícita) para obtener más información.
PInvoke funciona utilizando DllImportAttribute. Este atributo, que adopta el nombre del archivo DLL como primer argumento, se coloca delante de una declaración de función para cada punto de entrada de DLL que se vaya a utilizar. La firma de la función debe corresponder al nombre de una función exportada por el archivo DLL (aunque ciertas conversiones de tipos se pueden efectuar implícitamente definiendo las declaraciones DllImport
en cuanto a tipos administrados).
El resultado es un punto de entrada administrado para cada función de archivos DLL nativa que contiene el código de transición necesario (o thunk) y las conversiones de datos simples. Las funciones administradas pueden efectuar entonces llamadas en el archivo DLL a través de estos puntos de entrada. El código insertado en un módulo como resultado de PInvoke es administrado en su totalidad.