Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Viele Fehler nach FormatMessage

Frage Entwicklung Assembler

Mitglied: nullplan001

nullplan001 (Level 1) - Jetzt verbinden

24.10.2006 um 20:43 Uhr, 4108 Aufrufe

Nachdem ich schon zwei Usenet-Foren damit belästigt habe, seid ihr jetzt auch dran .

Hi all,
wie nicht anders zu erwarten war, habe ich ein Problem mit dem Win-API. Ich habe schon einiges an dem Programm gefixt, aber irgendwie geht es immer noch nicht.
Ich wollte mir die Arbeit ersparen, wegen jeden Fehler-Codes, den mir meine Apps zurückgeben können, in der winerror.h (oder wie die heißt) nachzugucken. Also schrieb ich folgendes Programm (knappe Übersetzung nach C, weil kürzer):
01.
char string[256]; 
02.
dword processed, code, stdout, stdin; 
03.
 
04.
int __stdcall main() 
05.
06.
  stdin = GetStdHandle(STD_INPUT_HANDLE); 
07.
  stdout = GetStdHandle(STD_OUTPUT_HANDLE); 
08.
  WriteConsoleA(stdout, "Bitte Fehlercode eingeben: ", 28, &processed, NULL); 
09.
  ReadConsoleA(stdin, string, 10, &processed,  NULL); 
10.
  string[10] = 0; 
11.
  code = strtol(string, &processed, 10); 
12.
  stdin = FormatMessageA( 
13.
    FORMAT_MESSAGE_FROM_SYSTEM | 80, 
14.
    NULL, 
15.
    code, 
16.
    SUBLANG_GERMAN << 10 | LANG_GERMAN, 
17.
    string, 
18.
    255, 
19.
    NULL 
20.
  ); 
21.
  string[stdin] = 0; 
22.
  CharToOem(string,string); 
23.
  WriteConsoleA(stdout, string, stdin, &processed, NULL); 
24.
  return 0; 
25.
}
Nach allen API-Funktionen wird auf deren Fehlschlag geprüft. Wenn sie fehlgeschlagen sind, beendet sich das Programm mit dem letzten Fehlercode (GetLastError()).
Nun habe ich ein interessantes Problem: Wenn ich das Programm starte und "80" eintippe, funktioniert alles. Wenn ich irgend etwas anderes eintippe, wird mir etwas über einen Fehler im Code nachgesagt. Manchmal ist es eine Acess Violation, manchmal privileged code. Es scheint so, als würde mein Code irgendwo hin hüpfen, wo er nicht hin soll. Nur habe ich keine Ahnung, was ich dagegen tun soll.
Interessant ist, dass ohne den Aufruf zu CharToOem und die dazugehörigen Verrenkungen, um eax zu erhalten, keine Fehler entstehen... nur dass die Meldung eben sehr blöd aussieht, wenn sie Umlaute enthalten würde (tut sie nach ihrer Verhackstückung nicht mehr).
Ich könnte natürlich mir die englischen Nachrichten antun und so die Sache mit CharToOem umgehen. Aber ich will dem Problem nicht aus dem Weg gehen, ich will es lösen.
Laut Dr. Watson kommt es in einer Symbol-losen Funktion zu dem Fehler. Das könnte entweder meine Hauptfunktion sein, oder irgendeine undokumentierte Windows-Funktion. Da der call-Stack aber ansonsten leer ist, tippe ich mal auf ersteres.
Kann jemand helfen?
tia und tschö,
Markus
P.S.: ich verwende Yasm und ALINK.
Neuester Wissensbeitrag
Ähnliche Inhalte
Server
Fehler in jQuery (7)

Frage von Yanmai zum Thema Server ...

Apache Server
gelöst Fehler beim Import einer DB vom anderen MySQL-Server (2)

Frage von zeroblue2005 zum Thema Apache Server ...

Outlook & Mail
gelöst Outlook 2010 Fehler 0x80004005 von Outlook können kein abonnierten Ordner (4)

Frage von garack zum Thema Outlook & Mail ...

Heiß diskutierte Inhalte
Switche und Hubs
LAG zwischen Cisco SG300 und Dlink DGS1100 herstellen - wie? (18)

Frage von White-Rabbit2 zum Thema Switche und Hubs ...

Linux
gelöst Boot failed: not a bootable disk (10)

Frage von Fleckmen zum Thema Linux ...

Multimedia & Zubehör
gelöst Iphone 6 prob (8)

Frage von jensgebken zum Thema Multimedia & Zubehör ...

Windows 7
gelöst Windows 7 Umzug zum neuen PC (SATA-Problem) (7)

Frage von MaxMoritz6 zum Thema Windows 7 ...