What is P/Invoke?

๐Ÿ’ก Concept: P/Invoke in C#

P/Invoke (Platform Invocation) allows managed C# code to call functions exported from unmanaged libraries such as Windows DLLs.

๐Ÿ“˜ Quick Intro

P/Invoke bridges managed and unmanaged code by describing the method signatures and marshaling data appropriately.

๐Ÿง  Analogy

Think of P/Invoke as a translator allowing two people who speak different languages to communicate.

๐Ÿ”ง Technical Explanation

  • ๐Ÿ›  Uses [DllImport] attribute to declare external methods.
  • ๐Ÿ”„ Marshals data types between managed and unmanaged memory.
  • โš ๏ธ Requires careful handling of memory and types to avoid errors.
  • ๐Ÿ“š Supports calling Windows API, legacy libraries, and custom unmanaged DLLs.
  • ๐Ÿ” Security considerations must be addressed.

๐ŸŽฏ Use Cases

  • โœ… Accessing Windows native APIs.
  • โœ… Reusing legacy unmanaged libraries.
  • โœ… Performance-critical operations in native code.
  • โœ… Interfacing with hardware or system resources.

๐Ÿ’ป Code Example


using System.Runtime.InteropServices;

public class NativeMethods {
    [DllImport("user32.dll", CharSet = CharSet.Auto)]
    public static extern int MessageBox(IntPtr hWnd, string text, string caption, uint type);
}

public class Program {
    public static void Main() {
        NativeMethods.MessageBox(IntPtr.Zero, "Hello from P/Invoke!", "Example", 0);
    }
}

โ“ Interview Q&A

Q1: What does P/Invoke stand for?
A: Platform Invocation.

Q2: What attribute is used to import DLL functions?
A: [DllImport].

Q3: How is data marshaled?
A: Automatically based on declared signatures.

Q4: Can P/Invoke cause errors?
A: Yes, due to incorrect signatures or memory issues.

Q5: Is P/Invoke platform-dependent?
A: Mainly Windows, but .NET Core supports others.

Q6: Can P/Invoke call unmanaged COM objects?
A: Yes, with COM interop.

Q7: What namespaces are involved?
A: System.Runtime.InteropServices.

Q8: Does P/Invoke support callbacks?
A: Yes, with delegates.

Q9: How to handle string parameters?
A: Specify CharSet and marshaling.

Q10: What is the risk of P/Invoke?
A: Possible security and stability issues.

๐Ÿ“ MCQs

Q1. What does P/Invoke stand for?

  • Platform Invocation
  • Platform Integration
  • Platform Interchange
  • Platform Inspection

Q2. Which attribute is used for DLL imports?

  • [DllImport]
  • [MarshalAs]
  • [UnmanagedFunctionPointer]
  • [ComImport]

Q3. Can P/Invoke cause errors?

  • No
  • Yes
  • Sometimes
  • Never

Q4. Is P/Invoke platform-dependent?

  • Linux only
  • Mainly Windows
  • Mac only
  • Cross-platform

Q5. Can P/Invoke call COM objects?

  • No
  • Yes
  • Sometimes
  • Never

Q6. What namespace is used?

  • System.IO
  • System.Runtime.InteropServices
  • System.Net
  • System.Data

Q7. Does P/Invoke support callbacks?

  • No
  • Yes
  • Sometimes
  • Never

Q8. How to handle strings in P/Invoke?

  • Ignore
  • Specify CharSet
  • Use UTF8Encoding
  • Don't use strings

Q9. What is the risk of P/Invoke?

  • No risk
  • Security and stability
  • Memory leaks only
  • Performance only

Q10. How is data marshaled?

  • Manually
  • Automatically
  • Not at all
  • Sometimes

๐Ÿ’ก Bonus Insight

P/Invoke extends .NET capabilities but requires attention to detail and security practices.

๐Ÿ“„ PDF Download

Need a handy summary for your notes? Download this topic as a PDF!

๐Ÿ” Navigation

๐Ÿ’ฌ Feedback
๐Ÿš€ Start Learning
Share:

Tags: