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!