ERLEDIGT
JA
JA
ANTWORTEN
2
2
ZUGRIFFE
1036
1036
EMPFEHLEN
-
Hi All,
ich kniffel hier mit einem Treiber rum, der mir nur ein paar Werte von einer I/O Karte ausgeben soll. Mein Problem ist der Umgang mit STRUCT und ZEIGERN, beides habe ich unter C# noch nie verwendet, finde aber auch nichts sinnvolles in meinen Büchern oder Online.
Vielleicht kann mir hier einer sagen wie ich das hinbekomme.
Fehler sind im Quellcode farbig markiert. Fehlermeldungen stehen unter dem Quellcode.
Danke & Salü
D12
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
using System; using System.Runtime.InteropServices; namespace EBRU_API_IMPORT { public struct PCIDIOALLCHANNELS { public uint Basis; public uint Extension; } class API_import { //*** importierte Funktion aus der WIN API von EBRU [DllImport("PCIDIO.DLL")]//*** lesen der I/O-Karte public static extern bool pcidioDIGetState( Byte BoardNumber, [COLOR=DarkOrange]PCIDIOALLCHANNELS* [/COLOR] ChannelState); static void Main(string[] args) { unsafe { PCIDIOALLCHANNELS* x; [COLOR=Red](*x).Basis = 0; (*x).Extension = 0;[/COLOR] pcidioDIGetState(0, x); } } } }
Fehler1:
error CS0214: Zeiger können nur in einem nicht sicheren Kontext verwendet werdenFehler2:
error CS0165: Verwendung von möglicherweise nicht zugewiesenen lokalen Variablen 'x'Geändert von D12 (20.07.05 um 10:26 Uhr)
-
Eigentlich müsste das ohne Pointer funktionieren.
Ich hab mir das ganze jetzt mal in eine Testklasse gepackt, kanns allerdings net testen, weil ich die entsprechende DLL nicht hab. Schaus dir mal an und teste das dann so.
Sollte es nicht klappen, empfehle ich dir die Lektüre des nachfolgenden Linkes, da ist alles drin was du brauchst:Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
using System; using System.Runtime.InteropServices; namespace WindowsApplication1 { public struct PCIDIOALLCHANNELS { public uint Basis; public uint Extension; } class Class1 { //*** importierte Funktion aus der WIN API von EBRU [DllImport("PCIDIO.DLL")]//*** lesen der I/O-Karte public static extern bool pcidioDIGetState( Byte BoardNumber, PCIDIOALLCHANNELS ChannelState); public static void Init() { PCIDIOALLCHANNELS x; x.Basis = 0; x.Extension = 0; pcidioDIGetState(0, x); } } }
http://msdn.microsoft.com/msdnmag/issues/03/07/NET/
-
Danke, das hat mir weiter geholfen....
Ähnliche Themen
-
.htaccess treibt mich in den Wahnsinn!
Von xthetronx im Forum PHPAntworten: 3Letzter Beitrag: 06.10.04, 12:42 -
MySql treibt mich in den Wahnsinn ...
Von bspainkf36 im Forum PHPAntworten: 10Letzter Beitrag: 15.11.02, 15:30 -
Wie man selbst gesund bleibt und dabei andere in den Wahnsinn treibt...
Von brausewetter im Forum Fun-ForumAntworten: 7Letzter Beitrag: 11.12.01, 10:48 -
Wie man seine Mitmenschen in den Wahnsinn treibt...
Von Olga im Forum Fun-ForumAntworten: 8Letzter Beitrag: 07.10.01, 09:05 -
wie man andere in den wahnsinn treibt...
Von rolling_a im Forum Fun-ForumAntworten: 0Letzter Beitrag: 07.03.01, 23:49





Zitieren
Login





