Handle mal ungültig mal nicht!

Gast #386058
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren