mikrocontroller.net

Forum: PC-Programmierung Handle mal ungültig mal nicht!


Autor: astrid (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich arbeite an einem programm das mir helfen soll daten an meinem per
usb angeschlossenem gerät zu schicken

wenn ich es in der IDE von Microsoft Visual Basic 2005 teste ist alles
in Ordnung
wenn ich aber die exe datei im debug (geschweige denn release) ordner
benutze dann liefert WriteFile ("error invalid handle") obwohl
CreateFile eine gültige Handle liefert in beiden Fällen

es funktioniert anscheinend nur mir debugging
weiß jemand warum bzw wie ich das lösen kann? Danke

hier ein snippset von meinem code

        hDevice = CreateFile(devicePath, GENERIC_READ Or GENERIC_WRITE,
0, 0&, OPEN_EXISTING, 0&, 0&)

        'Get the USB packet size, which we need for sending packets
        If DeviceIoControl(hDevice, IOCTL_USB_PACKET_SIZE, IntPtr.Zero,
0, usbpacketsize, 4, theBytesReturned, IntPtr.Zero) Then
            If theBytesReturned > 0 Then
                Dim bytes1() As Byte

                bytes1 = New Byte(theBytesReturned - 1) {}

                Marshal.Copy(usbpacketsize, bytes1, 0,
theBytesReturned)

                If theBytesReturned = 2 Then
                    usb_packet_size = BitConverter.ToInt16(bytes1, 0)
                End If
            End If
        Else
            Marshal.FreeHGlobal(ip)
            Return
        End If

        'send the startsessionpacket
        SendPacket(theStartSessionPacket)

        'get the ok from the device
        Do
            thePacket = GetPacket()

            If thePacket(0) = 0 And thePacket(4) =
USBProtocolPacketID.Pid_Session_Started Then Exit Do
        Loop

    Public Sub SendPacket(ByVal aPacket As Byte())
        Dim theBytesReturned As Integer

///////////////Scheitert hier wenn ich außerhalb der IDE
teste///////////
        Dim bool As Integer = WriteFile(hDevice, aPacket,
aPacket.Length, theBytesReturned, Nothing)

        If bool = INVALID_HANDLE_VALUE Or bool = 0 Then
            DisplayLastWin32Error()
            theDevInfo = IntPtr.Zero
            Return
        End If

        'If the packet size was an exact multiple of the USB packet
        'size, we must make a final write call with no data
        If usb_packet_size <> 0 Then
            If (aPacket.Length Mod usb_packet_size = 0) Then
                Dim newBytes() As Byte
                newBytes = New Byte() {}
                WriteFile(hDevice, newBytes, 0, theBytesReturned,
IntPtr.Zero)
            End If
        End If
    End Sub

Autor: astrid (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das problem hat sich wohl erledigt

es lag an dem letzten parameter von WriteFile den ich als ByRef
definiert hatte und als Byval hätte lieber definieren sollte

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.