Setup tasks provide early initialization and are performed automatically when the target method is invoked. First-time tasks include the following:
Verifying that the platform invoke metadata is correctly formatted.
Verifying that all the managed types are valid parameters of platform invoke functions.
Locating and loading the unmanaged DLL into the process.
Locating the entry point in the process.
Calling Marshal.Prelink(System.Reflection.MethodInfo) on a method outside of platform invoke has no effect. To execute setup tasks on all platform invoke methods in a type, use Marshal.PrelinkAll(Type).