TECHNIQUES FOR LOW-LEVEL ACCESS TO MANAGED CODE
The interface between Compact Framework managed code and native code is based on synchronous function calls that you can achieve with two different techniques:
- Explicit Platform Invocation Service or P/Invoke
- Implicit binding of COM objects or COM Interop
You may notice that a third technique available on the desktop Framework called It Just Works, or IJW, is not listed here; this is because it requires managed C++, which is not available in the .NET Compact Framework.
In both cases, P/Invoke or COM Interop, the Compact Framework needs to perform specific operations on cross-frontier function calls for type checking and translation purposes; as a consequence some specific design is required when building the interface. The good news is that special helper classes exist in the Compact Framework to reduce the effort of the developer.
The next paragraphs present managed code interoperability to access the Compact 7 Watchdog Timer driver presented in Chapter 31, “Interrupts.”
Using P/Invoke
To execute native code from a managed application, you simply need three elements:
- A native DLL exporting a function including this code.
- Declare usage of the .NET InteropServices.
- Declare a static managed method referencing the exported function.
All Win32 API calls are exposed by the Compact 7 system DLL coredll.dll; therefore a call to CreateFile requires only a single declaration. Your Smart Device application written in C# can open a driver ...
Get Professional Windows® Embedded Compact 7 now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.