What is P/Invoke?

๐Ÿ’ก Concept: P/Invoke (Platform Invocation)

P/Invoke is a service that enables managed code in C# to call unmanaged functions implemented in DLLs.

๐Ÿ“˜ Quick Intro

Allows interoperability with native code by declaring external functions with DllImport attribute.

๐Ÿง  Analogy

Like using a translator to communicate with someone speaking a different language.

๐Ÿ”ง Technical Explanation

  • Functions are declared with [DllImport] specifying the DLL and entry point.
  • Supports marshaling data types between managed and unmanaged environments.
  • Enables calling Win32 APIs, legacy libraries, and hardware interfaces.
  • Requires careful handling of memory and exceptions.
  • Essential for extending .NET capabilities.

๐ŸŽฏ Use Cases

  • โœ… Accessing Windows API functions.
  • โœ… Integrating with legacy native DLLs.
  • โœ… Performance-critical operations.
  • โœ… Hardware interaction.

๐Ÿ’ป Code Example


using System.Runtime.InteropServices;

class NativeMethods {
    [DllImport(""kernel32.dll"")]
    public static extern int GetCurrentThreadId();
}

class Program {
    static void Main() {
        int threadId = NativeMethods.GetCurrentThreadId();
        Console.WriteLine($""Current Thread ID: {threadId}"");
    }
}

โ“ Interview Q&A

Q1: What is P/Invoke?
A: Service for calling unmanaged DLL functions.

Q2: How do you declare a P/Invoke method?
A: Using [DllImport] attribute.

Q3: What kind of data needs marshaling?
A: Strings, structs, arrays, pointers.

Q4: Can P/Invoke call C++ methods?
A: Only if exposed with C linkage.

Q5: What are common pitfalls?
A: Incorrect signatures, memory leaks.

Q6: Is exception handling automatic?
A: No, must be handled carefully.

Q7: Which namespace is used?
A: System.Runtime.InteropServices.

Q8: Can P/Invoke be used in .NET Core?
A: Yes, with some platform restrictions.

Q9: What alternatives exist?
A: COM Interop, C++/CLI.

Q10: Why use P/Invoke?
A: To extend .NET with native code.

๐Ÿ“ MCQs

Q1. What is P/Invoke?

  • Calling managed code
  • Calling unmanaged DLLs
  • Debugging
  • Profiling

Q2. How to declare P/Invoke?

  • [DllImport] attribute
  • Marshal class
  • Namespace
  • Assembly info

Q3. What data needs marshaling?

  • Integers
  • Strings and structs
  • Booleans
  • Enums

Q4. Can P/Invoke call C++?

  • No
  • Yes, if exposed as C functions
  • Sometimes
  • Rarely

Q5. Common pitfalls?

  • Syntax errors
  • Memory leaks
  • Compilation errors
  • Linker errors

Q6. Is exception handling automatic?

  • Yes
  • No
  • Sometimes
  • Rarely

Q7. Namespace used?

  • System.IO
  • System.Runtime.InteropServices
  • System.Net
  • System.Xml

Q8. P/Invoke in .NET Core?

  • No
  • Yes
  • Sometimes
  • Never

Q9. Alternatives to P/Invoke?

  • Reflection
  • Serialization
  • COM Interop
  • Attributes

Q10. Why use P/Invoke?

  • For testing
  • Extend .NET with native code
  • Debugging
  • Profiling

๐Ÿ’ก Bonus Insight

P/Invoke is crucial for interoperating with native Windows APIs and legacy code.

๐Ÿ“„ PDF Download

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

๐Ÿ” Navigation

Learn More About C# ๐Ÿ“š

1. What is C#? ๐Ÿ‘‰ Explained
2. Main Features of C# ๐Ÿ‘‰ Explained
3. Difference Between C# and Java ๐Ÿ‘‰ Explained
4. Common Language Runtime (CLR) in C# ๐Ÿ‘‰ Explained
5. Common Type System (CTS) in C# ๐Ÿ‘‰ Explained
6. Common Language Specification (CLS) in C# ๐Ÿ‘‰ Explained
7. Value Types vs Reference Types in C# ๐Ÿ‘‰ Explained
8. What is a Namespace in C#? ๐Ÿ‘‰ Explained
9. Purpose of the 'using' Keyword in C# ๐Ÿ‘‰ Explained
10. Different Data Types in C# ๐Ÿ‘‰ Explained
11. Difference Between int and Int32 in C# ๐Ÿ‘‰ Explained
12. Difference Between float, double, and decimal in C# ๐Ÿ‘‰ Explained
13. What is the Default Value of a Boolean in C#? ๐Ÿ‘‰ Explained
14. What is Boxing and Unboxing in C# ๐Ÿ‘‰ Explained
15. What are the Different Types of Operators in C# ๐Ÿ‘‰ Explained
16. Difference Between Equals and == in C# ๐Ÿ‘‰ Explained
17. What is the Null-Coalescing Operator ?? in C# ๐Ÿ‘‰ Explained
18. What is the Ternary Operator in C# ๐Ÿ‘‰ Explained
19. How Does the Switch Statement Work in C# ๐Ÿ‘‰ Explained
20. What is Object-Oriented Programming in C# ๐Ÿ‘‰ Explained
21. What are the Four Pillars of OOP in C# ๐Ÿ‘‰ Explained
22. What is Encapsulation in C# ๐Ÿ‘‰ Explained
23. What is Inheritance in C# ๐Ÿ‘‰ Explained
24. What is Polymorphism in C# ๐Ÿ‘‰ Explained
25. What is Abstraction in C# ๐Ÿ‘‰ Explained
26. What is an Abstract Class in C# ๐Ÿ‘‰ Explained
27. What is an Interface in C# ๐Ÿ‘‰ Explained
28. Can a Class Implement Multiple Interfaces in C#? ๐Ÿ‘‰ Explained
29. Difference Between Abstract Class and Interface in C# ๐Ÿ‘‰ Explained
30. How Do You Create a Class in C#? ๐Ÿ‘‰ Explained
31. What is a Constructor in C# ๐Ÿ‘‰ Explained
32. What Are the Types of Constructors in C# ๐Ÿ‘‰ Explained
33. What is a Static Constructor in C# ๐Ÿ‘‰ Explained
34. Difference Between Static and Non-Static Members in C# ๐Ÿ‘‰ Explained
35. What is the Use of 'this' Keyword in C# ๐Ÿ‘‰ Explained
36. What is a Destructor in C# ๐Ÿ‘‰ Explained
37. What is Object Initializer Syntax in C# ๐Ÿ‘‰ Explained
38. What is the Difference Between Field and Property in C# ๐Ÿ‘‰ Explained
Share:

Tags:


Feedback Modal Popup