tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
2
ZUGRIFFE
1036
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    D12 D12 ist offline Mitglied Silber
    Registriert seit
    Jun 2005
    Ort
    Eschweiler
    Beiträge
    64
    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 werden
    Fehler2:
    error CS0165: Verwendung von möglicherweise nicht zugewiesenen lokalen Variablen 'x'
    Geändert von D12 (20.07.05 um 10:26 Uhr)
     

  2. #2
    Avatar von Norbert Eder
    Norbert Eder Norbert Eder ist offline Mitglied Diamant
    Registriert seit
    Feb 2004
    Ort
    Österreich / Graz
    Beiträge
    5.137
    Blog-Einträge
    51
    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.
    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);
                
            }
        }
    }
    Sollte es nicht klappen, empfehle ich dir die Lektüre des nachfolgenden Linkes, da ist alles drin was du brauchst:
    http://msdn.microsoft.com/msdnmag/issues/03/07/NET/
     

  3. #3
    D12 D12 ist offline Mitglied Silber
    Registriert seit
    Jun 2005
    Ort
    Eschweiler
    Beiträge
    64
    Danke, das hat mir weiter geholfen....
     

Ähnliche Themen

  1. .htaccess treibt mich in den Wahnsinn!
    Von xthetronx im Forum PHP
    Antworten: 3
    Letzter Beitrag: 06.10.04, 12:42
  2. MySql treibt mich in den Wahnsinn ...
    Von bspainkf36 im Forum PHP
    Antworten: 10
    Letzter Beitrag: 15.11.02, 15:30
  3. Antworten: 7
    Letzter Beitrag: 11.12.01, 10:48
  4. Antworten: 8
    Letzter Beitrag: 07.10.01, 09:05
  5. wie man andere in den wahnsinn treibt...
    Von rolling_a im Forum Fun-Forum
    Antworten: 0
    Letzter Beitrag: 07.03.01, 23:49