Forum: PC-Programmierung GetLastError() - Fehlercodes bei MCHPFSUSB


von Ron N. (blitzgeist)


Lesenswert?

Hallo zusammen,

ich benutze die Firmware von Microchip (MP Custom Driver) für meinen PIC 
und die dll mpusbapi.dll für meine GUI. Der Quellcode zeigt das 
error-handling.

void CheckInvalidHandle(void)
{
    if(GetLastError() == ERROR_INVALID_HANDLE)
    {
        // Most likely cause of the error is the board was disconnected.
        MPUSBClose(myOutPipe);
        MPUSBClose(myInPipe);
        myOutPipe = myInPipe = INVALID_HANDLE_VALUE;
    }//end if
    else
        printf("Error Code \r\n",GetLastError());
}//end CheckInvalidHandle

Dies vorab.

Meine Fragen nun:

Wo bekomme ich eine Übersicht der Fehlercodes mit Erklärung her? Also, 
was für Fehlercodes liefert mir die Funktion zurück?

Ist das eigendlich abhängig von der jeweiligen Firmware und der 
zugehörigen DLL? Denke nicht, oder doch?

lg,
blitzgeist

von Ron N. (blitzgeist)


Lesenswert?

...hat niemand was zu diesem Thema zu sagen?

lg,
blitzgeist

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Fehlercodes sowie deren Definition findest Du unter msdn.microsoft.com

von Johannes H. (johannes-kuriboh)


Lesenswert?

Fehlercodes und deren beschreibung erhältst Du durch API aufrufe.

In VB sehen sie so aus:
1
Public Declare Function GetLastError Lib "kernel32.dll" () As Long
2
Private Declare Function FormatMessage Lib "kernel32" Alias "FormatMessageA" _
3
    (ByVal dwFlags As Long, _
4
    ByRef lpSource As Any, _
5
    ByVal dwMessageId As Long, _
6
    ByVal dwLanguageId As Long, _
7
    ByVal dwBuffer As String, _
8
    ByVal nSize As Long, _
9
    ByVal Arguments As Long) _
10
As Long
11
Private Function GetErrorString(lasterror As Long) As String
12
    Dim bytes As Long
13
    Dim errorstring As String
14
    errorstring = String$(129, 0)
15
    bytes = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, 0&, lasterror, 0, errorstring$, 128, 0)
16
    GetErrorString = errorstring
17
End Function
18
19
Public Sub MsgError(intern_reference As String, lasterror As Long, mode As String)
20
    Dim string_of_error As String
21
    string_of_error = GetErrorString(lasterror)
22
    If lasterror > 0 Then
23
        If Not mode = "silent" Then
24
            MsgBox ("Interne Referenz: " + intern_reference + Chr(10) + Str(lasterror) + Chr(10) + string_of_error)
25
        End If
26
    End If
27
End Sub
Der aufruf sähe beispielsweise so aus:
1
Call MsgError("Mitten im Code", GetLastError(), "")
GetLastError - holt die fehlernummer
FormatMessage - erzeugt den dazugehörigen text

GetErrorString - bereitet den string auf
MsgError - mach das ganze programmaufruftauglich
GetLastError() - sollte so nah wie möglich an den funktionen aufgerufen 
werden.


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
Noch kein Account? Hier anmelden.