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, 4099 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
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Windows Server
gelöst BackupExec 2016 Fehler beim Backup von Windows 2016 (1)

Frage von Looser27 zum Thema Windows Server ...

Switche und Hubs
gelöst Trunk für 2xCisco Switch. Wo liegt der Fehler? (43)

Frage von JayyyH zum Thema Switche und Hubs ...

Vmware
Veeam für VM Ware Backup Fehler (2)

Frage von JoergN1968 zum Thema Vmware ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (20)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...