Search code examples
c#pinvokesystem.reflectionmethodbase

Check if the method uses PInvoke


Is there anyway to check if a method uses PInvoke ? I'm looping through all the methods in an assembly using MethodBase but I want to check if the method is using PInvoke. Here is the code I'm using :

 foreach (MethodBase bases in mtd.GetType().GetMethods())
 {
      //check if the method is using pinvoke
 }

Also if it is possible how can is there a way I can check for the DLL being used and the function/entrypoint that is being called?


Solution

  • You can check to see if a method is decorated with DllImportAttribute. If so, it's using PInvoke.

    foreach (MethodBase methodBase in mtd.GetType().GetMethods())
    {
        if (methodBase.CustomAttributes.Any(cad => cad.AttributeType == typeof(DllImportAttribute))
        {
             // Method is using PInvoke
        }
    }