![]() |
GetExitCodeProcess liefert falsche Werte unter 64BIT(vista)?
Hallo,
ich versuche es kurz zu machen. Wenn Nachfragen - GERNE! Ich habe eine app, die 200 bzw 300 als EXITCODE setzt. Ausführen in cmd und echo %ERRORLEVEL% gibt sowohl bei 64 und 32Bit environment die richtigen werte zurück also 200 oder 300 :) Nun habe ich eine delphi app die GetExitCodeProcess called. Bei 32Bit systemen kommt auch super 200 oder 300 als result von GetExitCodeProcess an. Bei 64bit (vista) environment aber 5482396 (statt 300). MSDN hab ich gecheckt. Typen sehen gut aus bei mir ist auch alles DWORD. BOOL WINAPI GetExitCodeProcess( __in HANDLE hProcess, __out LPDWORD lpExitCode ); Vorschläge (Außer auch auf 300 or 5482396 zu matchen :D) ? Danke! Daniel |
Re: GetExitCodeProcess liefert falsche Werte unter 64BIT(vis
es wird immer interessanter ... es ist scheinbar auch kein normaler overflow ... denn 200 => 5482396 und 300 => 5482396
aber das ist nicht 1000% confirmed |
Re: GetExitCodeProcess liefert falsche Werte unter 64BIT(vis
Wie viel Bit hat das Programm mit dem du den Exitcode versuchst abzufragen? Und erklär am besten noch mal die Bit Konstellation von Betriebsystem und allen beteiligen Programmen.
|
Re: GetExitCodeProcess liefert falsche Werte unter 64BIT(vis
Hi, danke für dein Interesse :)
alles 32Bit programme - selfmade. Einmal laufen beide in einem 32Bit Env - alles super. Wenn sie beide in einem 64Bit (Vista) Env laufen gibt es das problem. Das Programm, was den ExitCode setzt, gibt in cmd.exe, in beiden umgebungen, den exitcode so zurück, das %ERRORLEVEL% den richtigen Wert hat. Daniel |
Re: GetExitCodeProcess liefert falsche Werte unter 64BIT(vis
Zitat:
|
Re: GetExitCodeProcess liefert falsche Werte unter 64BIT(vis
Zitat:
Ich hatte auch schon mal daran gedacht, zu testen was passiert wenn ich einfach direkt ExitProcess(300); aufrufe - wobei die shell ja immer den richtigen Wert sieht. Daher denke ich das es eher an dem programm liegt das GetExitCodeProcess called. Was für einen Typen benutzt du nach dem Createprocess für den GetExitCodeProcess? DWORD? Es ist ja ein var daher ist den falsch zu typen auch eher schwierig ... Gehe ich recht der annahme, das du das auch auf dem environment compiled hast? Sollte ja bei delphi eigenlich keine rolle spielen ... BTW: ich teste das mit D2k7 December Update. Werd ich wohl auch mal ein test app schreiben müssen ... nach dem GetExitCodeProcess wird nicht mehr viel mit dem Wert gemacht - nur als Result zugeweisen und dann in der funktion die aufruft ausgegeben und ausgewertet. Viel mit speicher überschreiben kann bis dahin ja nicht passieren. Zumal es ja ein fixsize type ist, so ein DWORD, und nicht irgendwelche buffer zu klein sein können. Grüße Daniel |
Re: GetExitCodeProcess liefert falsche Werte unter 64BIT(vis
Hi,
ok es hat sich geklärt. Kurz: GetExitCodeProcess liefert *KEINE* falsche Werte unter 64BIT - es verhält sich nur leicht anders. - Am Ende lag es trotz allem an dem tool was den ExitCode setzt. Obwohl in beiden environments auf der console mit %EXITLEVEL% richtig zu sehen lag es am setzen des ExitCode. Nachdem ich diesen jetzt erst im letzten finally setzte kommt er sauber an. Danke! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:12 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz