PInvoke Interop Assistant: O εύκολος τρόπος για να μιλήσετε με unmanaged κώδικα


Στον κόσμο του .NET framework υπάρχουν πολλές φορές περιπτώσεις όπου είναι απαραίτητο ο managed κώδικας να μιλήσει με unamanaged κώδικα. Τυπικές τέτοιες περιπτώσεις είναι για παράδειγμα όταν υποχρεωνόμαστε να χρησιμοποιήσουμε legacy unmanaged κώδικα ή δεν καλυπτόμαστε από το .ΝΕΤ Framework API και πρέπει να χρησιμοποιήσουμε το COM ή το Win32 API. Όταν λοιπόν συμβαίνει κάτι τέτοιο, το CLR χρησιμοποιεί έναν μηχανισμό που ονομάζεται interop που αναλαμβάνει να γεφυρώσει τους δύο κόσμους κάνοντας αυτό που λέμε "marshaling" στα δεδομένα που ανταλλάσσονται. Η δουλειά αυτή είναι εύκολη όσο τα δεδομένα που περνούν πάνω από αυτή τη γέφυρα έχουν τη μορφή απλών structures. Οτιδήποτε άλλο, αρχίζει να δυσκολεύει το πράγμα με αποτέλεσμα να εμφανίζονται περίεργα exceptions και απρόβλεπτες συμπεριφορές.

Όσοι έχουν ασχοληθεί με το sport θα έχουν σίγουρα χρησιμοποιήσει το www.pinvoke.net, το wiki που τρέχει από την Red-Gate με σκοπό να υποστηρίξει το δωρεάν plug-in της. Εδώ και μερικές ημέρες υπάρχει το utility που ονομάζεται "PInvoke Interop Assistant" που έρχεται να βοηθήσει σε αυτόν τον τομέα. Το utility αποτελεί προϊόν συνεργασίας της ομάδας της VB.NET με αυτή του CLR και από μια πρώτη ματιά που του έριξα φαίνεται εξαιρετικό γι αυτή τη δουλειά!

Περισσότερα εδώ: http://blogs.msdn.com/vbteam/archive/2008/03/14/making-pinvoke-easy.aspx σε αυτό το link θα βρείτε και το σχετικό άρθρο στο MSDN που αναφέρει όλες τις φρικιαστικές λεπτομέρειες σχετικά με το marshaling.

Advertisements