SlideShare ist ein Scribd-Unternehmen logo
1 von 10
Interoperation, Teil 2 C# Workshop TU Darmstadt Qiong Wu – Microsoft Student Partner
CCW in C++ verwenden
Tlbimp vs. Manueller Import Tlbimp generiert einen COM to .net Wrapper COM CoClasseswerdenzu C# KlassenmitparameterlosemKonstruktorkonvertiert COM structswerdenzu C# structsmit public fields konvertiert Tlbimp kann nicht verwendet werden wenn Keine Typelib vorhanden ist Tlbimp Definitionen nicht verarbeiten kann Alternativer Ansatz Manueller Import
Manueller Import - Attribute ComImport – MarkierteineKlasseals extern implementierte COM Klasse. Guid – Setzt den universally unique identifier (UUID) füreineKlasseoderein Interface InterfaceType – Legt fest ob ein Interface von IDispatchoderIUnknownerbt PreserveSig – Legt fest ob einnativerRückgabewert von einem HRESULT zueiner.net Exception umgewandeltwerdensoll
Manueller Import – COM CoClass CoClass als Klasse deklarieren Darf von keineranderenKlasseerben Darfkeine Interfaces implementieren GUID Attributsetzen Instanziieren mit new Schlüsselwort C# Äquivalent zu CoCreateInstance Parameterloser Konstruktor
Manueller Import – COM Interface C# Interface erstellen mit Attributen COMImport GUID Muss Interface Member Funktionen in der exakten COM interface Reihenfolge enthalten Ggf. Standard Marshalling mit MarshalAs überschreiben Exception Mapping zwischen COM & .net festlegen
CoClasses & Interfaces in .net verwenden CoClass instanziieren Entsprechendes Interface casten
Marshalling Standardmarshalling konvertiert Datentypen von COM in .net & viceversa Anpassung von Marshalling ist ggf. notwendig Verwenden von MarshalAs um Marshalling anzupassen
Unmanaged Events COM Events werden wie C# Events behandelt Events nach COM auslösen von C# aus
Customize Wrappers RCW Erstellen RCW Disassemblieren Source anpassen RCW Neu kompilieren

Weitere ähnliche Inhalte

Andere mochten auch

Das Ascona-Projekt - Joachim Ramisch
Das Ascona-Projekt - Joachim RamischDas Ascona-Projekt - Joachim Ramisch
Das Ascona-Projekt - Joachim Ramischriesmetal
 
Reg 1 02 03 09
Reg 1 02 03 09Reg 1 02 03 09
Reg 1 02 03 09Dalosi
 
Como y para que y por que
Como y para que y por queComo y para que y por que
Como y para que y por queaorsado
 
Que es la quimica?
Que es la quimica?Que es la quimica?
Que es la quimica?EPHR
 
Vier Kerzen Zum 4ten Avent
Vier Kerzen Zum 4ten AventVier Kerzen Zum 4ten Avent
Vier Kerzen Zum 4ten Aventellenasse
 
3. PM-Tag Karlsruhe, Projektwissensmanagement
3. PM-Tag Karlsruhe, Projektwissensmanagement3. PM-Tag Karlsruhe, Projektwissensmanagement
3. PM-Tag Karlsruhe, ProjektwissensmanagementStefan Landwehr
 
Präsentation BAM Activity Steams
Präsentation BAM Activity SteamsPräsentation BAM Activity Steams
Präsentation BAM Activity SteamsTU C
 
Politische Online-Kommunikation 2002-2009
Politische Online-Kommunikation 2002-2009Politische Online-Kommunikation 2002-2009
Politische Online-Kommunikation 2002-2009Martin Emmer
 
RESULTADOS DEL MUNDIAL DE KARATE SENIOR BREMEN 2014
RESULTADOS DEL MUNDIAL DE KARATE SENIOR BREMEN 2014RESULTADOS DEL MUNDIAL DE KARATE SENIOR BREMEN 2014
RESULTADOS DEL MUNDIAL DE KARATE SENIOR BREMEN 2014Judith Chuquipul
 
Blickpunkt Sportmanagement: Workshop "Social Media und Fans"
Blickpunkt Sportmanagement: Workshop "Social Media und Fans"Blickpunkt Sportmanagement: Workshop "Social Media und Fans"
Blickpunkt Sportmanagement: Workshop "Social Media und Fans"Daniel Rehn
 

Andere mochten auch (20)

Das Ascona-Projekt - Joachim Ramisch
Das Ascona-Projekt - Joachim RamischDas Ascona-Projekt - Joachim Ramisch
Das Ascona-Projekt - Joachim Ramisch
 
Reg 1 02 03 09
Reg 1 02 03 09Reg 1 02 03 09
Reg 1 02 03 09
 
"Rudolf von Habsburg an Kaiser Franz Joseph von Österreich" - Zur Nachwirkung...
"Rudolf von Habsburg an Kaiser Franz Joseph von Österreich" - Zur Nachwirkung..."Rudolf von Habsburg an Kaiser Franz Joseph von Österreich" - Zur Nachwirkung...
"Rudolf von Habsburg an Kaiser Franz Joseph von Österreich" - Zur Nachwirkung...
 
Como y para que y por que
Como y para que y por queComo y para que y por que
Como y para que y por que
 
68811215003
6881121500368811215003
68811215003
 
Que es la quimica?
Que es la quimica?Que es la quimica?
Que es la quimica?
 
Max7ways special needs_children_spanish_(1)
Max7ways special needs_children_spanish_(1)Max7ways special needs_children_spanish_(1)
Max7ways special needs_children_spanish_(1)
 
Glueck
GlueckGlueck
Glueck
 
Underwater
UnderwaterUnderwater
Underwater
 
Vier Kerzen Zum 4ten Avent
Vier Kerzen Zum 4ten AventVier Kerzen Zum 4ten Avent
Vier Kerzen Zum 4ten Avent
 
3. PM-Tag Karlsruhe, Projektwissensmanagement
3. PM-Tag Karlsruhe, Projektwissensmanagement3. PM-Tag Karlsruhe, Projektwissensmanagement
3. PM-Tag Karlsruhe, Projektwissensmanagement
 
Proverbioschinos
ProverbioschinosProverbioschinos
Proverbioschinos
 
2013 01-01 powerpointbe-scc62
2013 01-01 powerpointbe-scc622013 01-01 powerpointbe-scc62
2013 01-01 powerpointbe-scc62
 
Automalereien-1
Automalereien-1Automalereien-1
Automalereien-1
 
Präsentation BAM Activity Steams
Präsentation BAM Activity SteamsPräsentation BAM Activity Steams
Präsentation BAM Activity Steams
 
Politische Online-Kommunikation 2002-2009
Politische Online-Kommunikation 2002-2009Politische Online-Kommunikation 2002-2009
Politische Online-Kommunikation 2002-2009
 
Lecciones de-apolos-un-estudio-biografico
Lecciones de-apolos-un-estudio-biograficoLecciones de-apolos-un-estudio-biografico
Lecciones de-apolos-un-estudio-biografico
 
Projekt Abschluss WIN-D
Projekt Abschluss WIN-DProjekt Abschluss WIN-D
Projekt Abschluss WIN-D
 
RESULTADOS DEL MUNDIAL DE KARATE SENIOR BREMEN 2014
RESULTADOS DEL MUNDIAL DE KARATE SENIOR BREMEN 2014RESULTADOS DEL MUNDIAL DE KARATE SENIOR BREMEN 2014
RESULTADOS DEL MUNDIAL DE KARATE SENIOR BREMEN 2014
 
Blickpunkt Sportmanagement: Workshop "Social Media und Fans"
Blickpunkt Sportmanagement: Workshop "Social Media und Fans"Blickpunkt Sportmanagement: Workshop "Social Media und Fans"
Blickpunkt Sportmanagement: Workshop "Social Media und Fans"
 

Mehr von Qiong Wu

node.js workshop- node.js databases
node.js workshop- node.js databasesnode.js workshop- node.js databases
node.js workshop- node.js databasesQiong Wu
 
node.js workshop- node.js unit testing
node.js workshop- node.js unit testingnode.js workshop- node.js unit testing
node.js workshop- node.js unit testingQiong Wu
 
node.js workshop- node.js middleware
node.js workshop- node.js middlewarenode.js workshop- node.js middleware
node.js workshop- node.js middlewareQiong Wu
 
node.js workshop- node.js basics
node.js workshop- node.js basicsnode.js workshop- node.js basics
node.js workshop- node.js basicsQiong Wu
 
node.js workshop- JavaScript Async
node.js workshop- JavaScript Asyncnode.js workshop- JavaScript Async
node.js workshop- JavaScript AsyncQiong Wu
 
node.js workshop- JavaScript Basics
node.js workshop- JavaScript Basicsnode.js workshop- JavaScript Basics
node.js workshop- JavaScript BasicsQiong Wu
 
Parallele Softwareentwicklung mit .NET 4.0
Parallele Softwareentwicklung mit .NET 4.0Parallele Softwareentwicklung mit .NET 4.0
Parallele Softwareentwicklung mit .NET 4.0Qiong Wu
 
S N A I L Final Presentation
S N A I L    Final  PresentationS N A I L    Final  Presentation
S N A I L Final PresentationQiong Wu
 
C# Workshop - File Operations
C# Workshop - File OperationsC# Workshop - File Operations
C# Workshop - File OperationsQiong Wu
 
C# Workshop - Networking
C# Workshop - NetworkingC# Workshop - Networking
C# Workshop - NetworkingQiong Wu
 
C# Workshop - Threading
C# Workshop - ThreadingC# Workshop - Threading
C# Workshop - ThreadingQiong Wu
 
Life In Power Point
Life In Power PointLife In Power Point
Life In Power PointQiong Wu
 

Mehr von Qiong Wu (14)

node.js workshop- node.js databases
node.js workshop- node.js databasesnode.js workshop- node.js databases
node.js workshop- node.js databases
 
node.js workshop- node.js unit testing
node.js workshop- node.js unit testingnode.js workshop- node.js unit testing
node.js workshop- node.js unit testing
 
node.js workshop- node.js middleware
node.js workshop- node.js middlewarenode.js workshop- node.js middleware
node.js workshop- node.js middleware
 
node.js workshop- node.js basics
node.js workshop- node.js basicsnode.js workshop- node.js basics
node.js workshop- node.js basics
 
node.js workshop- JavaScript Async
node.js workshop- JavaScript Asyncnode.js workshop- JavaScript Async
node.js workshop- JavaScript Async
 
node.js workshop- JavaScript Basics
node.js workshop- JavaScript Basicsnode.js workshop- JavaScript Basics
node.js workshop- JavaScript Basics
 
Parallele Softwareentwicklung mit .NET 4.0
Parallele Softwareentwicklung mit .NET 4.0Parallele Softwareentwicklung mit .NET 4.0
Parallele Softwareentwicklung mit .NET 4.0
 
S N A I L Final Presentation
S N A I L    Final  PresentationS N A I L    Final  Presentation
S N A I L Final Presentation
 
Kickoff
KickoffKickoff
Kickoff
 
2 Interop
2 Interop2 Interop
2 Interop
 
C# Workshop - File Operations
C# Workshop - File OperationsC# Workshop - File Operations
C# Workshop - File Operations
 
C# Workshop - Networking
C# Workshop - NetworkingC# Workshop - Networking
C# Workshop - Networking
 
C# Workshop - Threading
C# Workshop - ThreadingC# Workshop - Threading
C# Workshop - Threading
 
Life In Power Point
Life In Power PointLife In Power Point
Life In Power Point
 

3 Interop Part2

  • 1. Interoperation, Teil 2 C# Workshop TU Darmstadt Qiong Wu – Microsoft Student Partner
  • 2. CCW in C++ verwenden
  • 3. Tlbimp vs. Manueller Import Tlbimp generiert einen COM to .net Wrapper COM CoClasseswerdenzu C# KlassenmitparameterlosemKonstruktorkonvertiert COM structswerdenzu C# structsmit public fields konvertiert Tlbimp kann nicht verwendet werden wenn Keine Typelib vorhanden ist Tlbimp Definitionen nicht verarbeiten kann Alternativer Ansatz Manueller Import
  • 4. Manueller Import - Attribute ComImport – MarkierteineKlasseals extern implementierte COM Klasse. Guid – Setzt den universally unique identifier (UUID) füreineKlasseoderein Interface InterfaceType – Legt fest ob ein Interface von IDispatchoderIUnknownerbt PreserveSig – Legt fest ob einnativerRückgabewert von einem HRESULT zueiner.net Exception umgewandeltwerdensoll
  • 5. Manueller Import – COM CoClass CoClass als Klasse deklarieren Darf von keineranderenKlasseerben Darfkeine Interfaces implementieren GUID Attributsetzen Instanziieren mit new Schlüsselwort C# Äquivalent zu CoCreateInstance Parameterloser Konstruktor
  • 6. Manueller Import – COM Interface C# Interface erstellen mit Attributen COMImport GUID Muss Interface Member Funktionen in der exakten COM interface Reihenfolge enthalten Ggf. Standard Marshalling mit MarshalAs überschreiben Exception Mapping zwischen COM & .net festlegen
  • 7. CoClasses & Interfaces in .net verwenden CoClass instanziieren Entsprechendes Interface casten
  • 8. Marshalling Standardmarshalling konvertiert Datentypen von COM in .net & viceversa Anpassung von Marshalling ist ggf. notwendig Verwenden von MarshalAs um Marshalling anzupassen
  • 9. Unmanaged Events COM Events werden wie C# Events behandelt Events nach COM auslösen von C# aus
  • 10. Customize Wrappers RCW Erstellen RCW Disassemblieren Source anpassen RCW Neu kompilieren
  • 11. Links .net Reflector http://www.red-gate.com/products/reflector/ Windows SDK http://msdn.microsoft.com/de-de/windows/dd146047(en-us).aspx