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
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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.