Ich möchte auf eine PCI-Karte zugreifen mit Read/Write bzw. In_8()/In() und Out_8()/Out(). Bisher habe ich unter C mit In_8( base_address) und Out_8 (base_address, value) gearbeitet.
Kann mir jemand einen kleinen Tipp geben, ich das mit C# mache?
Danke im Voraus.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von peterchen72 am .
Ich möchte selber einen Treiber für die Karte schreiben. Dazu benötige ich Funktionen, mit denen ich auf das Dual Port RAM zugreifen kann. Bei C sind in() und out() standardmäßig mit dabei (zumindest bei mir).
Ich suche also ähnliche Befehle wie in/out von C nun für C#.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von peterchen72 am .
Verstehe ich das richtig: Ich schreibe mit C eine DLL mit den Funktionen in/out und binde diese DLL dann in mein C#-Projekt ein und dann funktionierts ??
Kernelmodetreiber für Win32 sind nicht gerade einfach zu programmieren. TVicPort liefert dafür aber eine saubere Alternative über einen virtuellen Device Driver ...
Zitat
Verstehe ich das richtig: Ich schreibe mit C eine DLL mit den Funktionen in/out und binde diese DLL dann in mein C#-Projekt ein und dann funktionierts ??
Sofern diese Funktionen unter Win32 ohne Probleme gearbeitet haben, sollten sie auch in C# keine Probleme machen.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von hauptmann am .
Ich habe quasi eine Dummy-DLL erstellt, die die Funktionen auf das Dual-Port-RAM ausführt. Habe mir das schwieriger vorgestellt, aber globale Variablen in der DLL bleiben erhalten und damit auch mein Zeiger auf das Dual-Port RAM. Mit einer Funktion GetInputData() brauche ich dann nur noch über den globalen Zeiger der Dummy-DLL auf die Daten zugreifen. Ich habe das mit DLLIMPORT gemacht und das funktioniert problemlos.
Nur noch eine kurze Frage: Darf man in einer DLL globale Variablen verwenden, oder ist das schlechtes Design?
Kannst du machen, aber damit verliert die DLL Multi-Threading-Fähigkeit, es sei denn, du synchronisierst den Zugriff auf die Variable. Gleiches gilt auch für statische Variablen innerhalb einer Funktion.